NAME

Text::Query::Parse - Base class for query parsers

SYNOPSIS

    package Text::Query::ParseThisSyntax;

    use Text::Query::Parse;
    
    use vars qw(@ISA);

    @ISA = qw(Text::Query::Parse);

DESCRIPTION

This module provides a virtual base class for query parsers.

It defines the prepare method that is called by the Text::Query object to compile the query string.

MEMBERS

-build Pointer to a Text::Query::Build object.
scope Scope stack. Defines the context in which the query must be solved.
token The current token. Destroyed by prepare.
tokens A reference to the list of all the tokens. Filled by parse_tokens. Destroyed by prepare.
parseopts A reference to a hash table containing all the parameters given to the prepare function.
-verbose Integer indicating the desired verbose level.

METHODS

prepare (QSTRING [OPTIONS])

Compiles the query expression in QSTRING to internal form and sets any options. First calls build_init to reset the builder and destroy the token and tokens members. Then calls parse_tokens to fill the tokens member. Then calls expression to use the tokens from tokens. The expression is expected to call the build_* functions to build the compiled expression. At last calls build_final_expression with the result of expression.

A derived parser must redefine this function to define default values for specific options.

expression ()

Must be redefined by derived package. Returns the internal form of the question built from build_* functions using the tokens.

parse_tokens (QSTRING)

Must be redefined by derived package. Parses the QSTRING scalar and fills the tokens member with lexical units.

build_*

Shortcuts to the corresponding function of the Text::Query::Build object found in the -build member.

OPTIONS

These are the options of the prepare method and the constructor.

-quotes defaults to \'\"

Defines the quote characters.

-case defaults to 0

If true, do case-sensitive match.

-litspace defaults to 0

If true, match spaces (except between operators) in QSTRING literally. If false, match spaces as \s+.

-regexp defaults to 0

If true, treat patterns in QSTRING as regular expressions rather than literal text.

-whole defaults to 0

If true, match whole words only, not substrings of words.

SEE ALSO

Text::Query(3)

AUTHORS

Eric Bohlman (ebohlman@netcom.com)

Loic Dachary (loic@senga.org)