|
Text::Query::ParseAdvanced - Parse AltaVista advanced query syntax |
Text::Query::ParseAdvanced - Parse AltaVista advanced query syntax
use Text::Query;
my $q=new Text::Query('hello and world',
-parse => 'Text::Query::ParseAdvanced',
-solve => 'Text::Query::SolveAdvancedString',
-build => 'Text::Query::BuildAdvancedString');
This module provides an object that parses a string containing a Boolean query expression similar to an AltaVista ``advanced query''.
It's base class is Text::Query::Parse;
Query expressions consist of literal strings (or regexps) joined by the following operators, in order of precedence from lowest to highest:
Operator names are not case-sensitive. Note that if you want to use a |
in a regexp, you need to backwhack it to keep it from being seen as a query
operator. Sub-expressions may be quoted in single or double quotes to
match ``and,'' ``or,'' or ``not'' literally and may be grouped in parentheses
((, )) to alter the precedence of evaluation.
A parenthesized sub-expression may also be concatenated with other sub-
expressions to match sequences: (Perl or Python) interpreter would match
either ``Perl interpreter'' or ``Python interpreter''. Concatenation has a
precedence higher than NOT but lower than AND. Juxtaposition of
simple words has the highest precedence of all.
These are the additional options of the prepare method and the constructor.
{
'or' => 'ou',
'and' => 'et',
'near' => 'proche',
'not' => 'non',
}
scope:
search the map for an entry whose key is scope and replace scope with
the scalar found. For instance:
{
'scope' => 'otherscope'
}
Text::Query(3) Text::Query::Parse(3)
Eric Bohlman (ebohlman@netcom.com)
Loic Dachary (loic@senga.org)
|
Text::Query::ParseAdvanced - Parse AltaVista advanced query syntax |