queryparser/queryparser_internal.cc File Reference

#include <config.h>
#include "omassert.h"
#include "queryparser_internal.h"
#include <xapian/error.h>
#include <xapian/unicode.h>
#include "stringutils.h"
#include "queryparser_token.h"
#include <algorithm>
#include <list>
#include <string>
#include <string.h>
#include "omdebug.h"

Include dependency graph for queryparser_internal.cc:

Go to the source code of this file.

Classes

struct  filter_group_id
 A structure identifying a group of filter terms. More...
class  Term
 Class used to pass information about a token from lexer to parser. More...
class  State
 Parser State shared between the lexer and the parser. More...
struct  ProbQuery
class  TermGroup
class  TermList
union  YYMINORTYPE
struct  yyStackEntry
struct  yyParser

Defines

#define BOOL_OP_TO_QUERY(E, A, OP, B, OP_TXT)
#define INTERFACE   1
#define YYCODETYPE   unsigned char
#define YYNOCODE   38
#define YYACTIONTYPE   unsigned char
#define ParseTOKENTYPE   Term *
#define YYSTACKDEPTH   100
#define ParseARG_SDECL   State * state;
#define ParseARG_PDECL   ,State * state
#define ParseARG_FETCH   State * state = yypParser->state
#define ParseARG_STORE   yypParser->state = state
#define YYNSTATE   73
#define YYNRULE   51
#define YYERRORSYMBOL   22
#define YYERRSYMDT   yy75
#define YY_NO_ACTION   (YYNSTATE+YYNRULE+2)
#define YY_ACCEPT_ACTION   (YYNSTATE+YYNRULE+1)
#define YY_ERROR_ACTION   (YYNSTATE+YYNRULE)
#define YY_SHIFT_USE_DFLT   (-1)
#define YY_REDUCE_USE_DFLT   (-24)
#define YY_SZ_ACTTAB   (int)(sizeof(yy_action)/sizeof(yy_action[0]))
#define TOKEN   (yyminor.yy0)

Typedefs

typedef yyParser yyParser

Functions

bool U_isupper (unsigned ch)
bool U_isdigit (unsigned ch)
bool U_isalpha (unsigned ch)
bool is_not_whitespace (unsigned ch)
bool is_not_wordchar (unsigned ch)
bool is_digit (unsigned ch)
bool is_suffix (unsigned ch)
bool prefix_needs_colon (const string &prefix, unsigned ch)
static void add_to_query (Query *&q, Query::op op, Query *term)
static void add_to_query (Query *&q, Query::op op, const Query &term)
bool is_phrase_generator (unsigned ch)
bool is_stem_preventer (unsigned ch)
bool should_stem (const std::string &term)
unsigned check_infix (unsigned ch)
unsigned check_infix_digit (unsigned ch)
static yyParserParseAlloc ()
static void ParseFree (yyParser *)
static void Parse (yyParser *, int, Term *, State *)
static void yy_parse_failed (yyParser *)
static void yy_destructor (YYCODETYPE yymajor, YYMINORTYPE *yypminor)
static int yy_pop_parser_stack (yyParser *pParser)
static int yy_find_shift_action (yyParser *pParser, int iLookAhead)
static int yy_find_reduce_action (yyParser *pParser, int iLookAhead)
static void yy_shift (yyParser *yypParser, int yyNewState, int yyMajor, YYMINORTYPE *yypMinor)
static void yy_accept (yyParser *)
static void yy_reduce (yyParser *yypParser, int yyruleno)
static void yy_syntax_error (yyParser *yypParser, int yymajor, YYMINORTYPE yyminor)
static void Parse (yyParser *yypParser, int yymajor, ParseTOKENTYPE yyminorParseARG_PDECL)

Variables

static const YYACTIONTYPE yy_action []
static const YYCODETYPE yy_lookahead []
static const short yy_shift_ofst []
static const short yy_reduce_ofst []
static const YYACTIONTYPE yy_default []
struct {
   YYCODETYPE   lhs
   unsigned char   nrhs
yyRuleInfo []


Define Documentation

#define BOOL_OP_TO_QUERY ( E,
A,
OP,
B,
OP_TXT   ) 

Value:

do {\
        if (!A || !B) {\
            state->error = "Syntax: <expression> "OP_TXT" <expression>";\
            yy_parse_failed(yypParser);\
            return;\
        }\
        E = new Query(OP, *A, *B);\
        delete A;\
        delete B;\
    } while (0)

Definition at line 1310 of file queryparser_internal.cc.

Referenced by yy_reduce().

#define INTERFACE   1

Definition at line 1336 of file queryparser_internal.cc.

#define YYCODETYPE   unsigned char

Definition at line 1371 of file queryparser_internal.cc.

Referenced by Parse(), and yy_pop_parser_stack().

#define YYNOCODE   38

Definition at line 1372 of file queryparser_internal.cc.

Referenced by Parse(), yy_find_reduce_action(), and yy_find_shift_action().

#define YYACTIONTYPE   unsigned char

Definition at line 1373 of file queryparser_internal.cc.

#define ParseTOKENTYPE   Term *

Definition at line 1374 of file queryparser_internal.cc.

#define YYSTACKDEPTH   100

Definition at line 1384 of file queryparser_internal.cc.

#define ParseARG_SDECL   State * state;

Definition at line 1385 of file queryparser_internal.cc.

#define ParseARG_PDECL   ,State * state

Definition at line 1386 of file queryparser_internal.cc.

#define ParseARG_FETCH   State * state = yypParser->state

Definition at line 1387 of file queryparser_internal.cc.

Referenced by yy_accept(), yy_parse_failed(), yy_reduce(), and yy_syntax_error().

#define ParseARG_STORE   yypParser->state = state

Definition at line 1388 of file queryparser_internal.cc.

Referenced by Parse(), yy_accept(), yy_parse_failed(), and yy_syntax_error().

#define YYNSTATE   73

Definition at line 1389 of file queryparser_internal.cc.

Referenced by Parse(), and yy_reduce().

#define YYNRULE   51

Definition at line 1390 of file queryparser_internal.cc.

Referenced by Parse(), and yy_reduce().

#define YYERRORSYMBOL   22

Definition at line 1391 of file queryparser_internal.cc.

Referenced by Parse().

#define YYERRSYMDT   yy75

Definition at line 1392 of file queryparser_internal.cc.

#define YY_NO_ACTION   (YYNSTATE+YYNRULE+2)

Definition at line 1393 of file queryparser_internal.cc.

Referenced by yy_find_reduce_action(), and yy_find_shift_action().

#define YY_ACCEPT_ACTION   (YYNSTATE+YYNRULE+1)

Definition at line 1394 of file queryparser_internal.cc.

#define YY_ERROR_ACTION   (YYNSTATE+YYNRULE)

Definition at line 1395 of file queryparser_internal.cc.

Referenced by Parse().

#define YY_SHIFT_USE_DFLT   (-1)

Definition at line 1508 of file queryparser_internal.cc.

Referenced by yy_find_shift_action().

#define YY_REDUCE_USE_DFLT   (-24)

Definition at line 1519 of file queryparser_internal.cc.

Referenced by yy_find_reduce_action().

#define YY_SZ_ACTTAB   (int)(sizeof(yy_action)/sizeof(yy_action[0]))

Definition at line 1540 of file queryparser_internal.cc.

Referenced by yy_find_reduce_action(), and yy_find_shift_action().

#define TOKEN   (yyminor.yy0)


Typedef Documentation

typedef struct yyParser yyParser

Definition at line 1594 of file queryparser_internal.cc.


Function Documentation

bool U_isupper ( unsigned  ch  )  [inline]

Definition at line 50 of file queryparser_internal.cc.

References C_isupper().

Referenced by prefix_needs_colon().

bool U_isdigit ( unsigned  ch  )  [inline]

Definition at line 55 of file queryparser_internal.cc.

References C_isdigit().

bool U_isalpha ( unsigned  ch  )  [inline]

Definition at line 60 of file queryparser_internal.cc.

References C_isalpha().

bool is_not_whitespace ( unsigned  ch  )  [inline]

Definition at line 67 of file queryparser_internal.cc.

References Xapian::Unicode::is_whitespace().

bool is_not_wordchar ( unsigned  ch  )  [inline]

Definition at line 74 of file queryparser_internal.cc.

References Xapian::Unicode::is_wordchar().

bool is_digit ( unsigned  ch  )  [inline]

Definition at line 79 of file queryparser_internal.cc.

References Xapian::Unicode::DECIMAL_DIGIT_NUMBER, and Xapian::Unicode::get_category().

bool is_suffix ( unsigned  ch  )  [inline]

Definition at line 86 of file queryparser_internal.cc.

Referenced by Xapian::QueryParser::Internal::parse_term().

bool prefix_needs_colon ( const string &  prefix,
unsigned  ch 
) [inline]

Definition at line 91 of file queryparser_internal.cc.

References U_isupper().

Referenced by Term::get_query_with_synonyms(), and Term::make_term().

static void add_to_query ( Query *&  q,
Query::op  op,
Query term 
) [static]

Definition at line 305 of file queryparser_internal.cc.

References Assert.

Referenced by TermList::as_opwindow_query(), and yy_reduce().

static void add_to_query ( Query *&  q,
Query::op  op,
const Query term 
) [static]

Definition at line 317 of file queryparser_internal.cc.

bool is_phrase_generator ( unsigned  ch  )  [inline]

Definition at line 379 of file queryparser_internal.cc.

bool is_stem_preventer ( unsigned  ch  )  [inline]

Definition at line 388 of file queryparser_internal.cc.

bool should_stem ( const std::string &  term  )  [inline]

Definition at line 394 of file queryparser_internal.cc.

References Xapian::Unicode::get_category(), Xapian::Unicode::LOWERCASE_LETTER, Xapian::Unicode::MODIFIER_LETTER, Xapian::Unicode::OTHER_LETTER, and Xapian::Unicode::TITLECASE_LETTER.

unsigned check_infix ( unsigned  ch  )  [inline]

Definition at line 405 of file queryparser_internal.cc.

unsigned check_infix_digit ( unsigned  ch  )  [inline]

Definition at line 419 of file queryparser_internal.cc.

static yyParser * ParseAlloc (  )  [static]

Definition at line 1708 of file queryparser_internal.cc.

static void ParseFree ( yyParser  )  [static]

Definition at line 1815 of file queryparser_internal.cc.

References yy_pop_parser_stack(), and yyParser::yystack.

static void Parse ( yyParser ,
int  ,
Term ,
State  
) [static]

static void yy_parse_failed ( yyParser  )  [static]

Definition at line 2469 of file queryparser_internal.cc.

References DEBUGLINE, ParseARG_FETCH, ParseARG_STORE, yy_pop_parser_stack(), and yyParser::yystack.

Referenced by Parse(), and yy_reduce().

static void yy_destructor ( YYCODETYPE  yymajor,
YYMINORTYPE yypminor 
) [static]

Definition at line 1717 of file queryparser_internal.cc.

References TermGroup::destroy(), YYMINORTYPE::yy0, YYMINORTYPE::yy1, YYMINORTYPE::yy13, YYMINORTYPE::yy60, and YYMINORTYPE::yy9.

Referenced by Parse(), yy_pop_parser_stack(), and yy_reduce().

static int yy_pop_parser_stack ( yyParser pParser  )  [static]

Definition at line 1795 of file queryparser_internal.cc.

References DEBUGLINE, yyStackEntry::major, yyStackEntry::minor, yy_destructor(), YYCODETYPE, and yyParser::yystack.

Referenced by Parse(), ParseFree(), yy_accept(), and yy_parse_failed().

static int yy_find_shift_action ( yyParser pParser,
int  iLookAhead 
) [static]

Definition at line 1831 of file queryparser_internal.cc.

References DEBUGLINE, YY_NO_ACTION, YY_SHIFT_USE_DFLT, YY_SZ_ACTTAB, YYNOCODE, and yyParser::yystack.

Referenced by Parse().

static int yy_find_reduce_action ( yyParser pParser,
int  iLookAhead 
) [static]

Definition at line 1872 of file queryparser_internal.cc.

References YY_NO_ACTION, YY_REDUCE_USE_DFLT, YY_SZ_ACTTAB, YYNOCODE, and yyParser::yystack.

Referenced by yy_reduce().

static void yy_shift ( yyParser yypParser,
int  yyNewState,
int  yyMajor,
YYMINORTYPE yypMinor 
) [static]

Definition at line 1897 of file queryparser_internal.cc.

References DEBUGLINE, and yyParser::yystack.

Referenced by Parse(), and yy_reduce().

static void yy_accept ( yyParser  )  [static]

Definition at line 2503 of file queryparser_internal.cc.

References DEBUGLINE, ParseARG_FETCH, ParseARG_STORE, yy_pop_parser_stack(), and yyParser::yystack.

Referenced by Parse(), and yy_reduce().

static void yy_reduce ( yyParser yypParser,
int  yyruleno 
) [static]

Definition at line 1988 of file queryparser_internal.cc.

References TermList::add_positional_term(), TermGroup::add_term(), add_to_query(), TermList::adjust_window(), TermList::as_adj_query(), TermGroup::as_group(), TermList::as_near_query(), TermList::as_phrase_query(), Xapian::BAD_VALUENO, BOOL_OP_TO_QUERY, DEBUGLINE, Xapian::Query::empty(), ProbQuery::filter, ProbQuery::hate, ProbQuery::love, ProbQuery::merge_filters(), yyStackEntry::minor, ParseARG_FETCH, ProbQuery::query, YYMINORTYPE::yy0, YYMINORTYPE::yy1, YYMINORTYPE::yy13, YYMINORTYPE::yy60, YYMINORTYPE::yy9, yy_accept(), yy_destructor(), yy_find_reduce_action(), yy_parse_failed(), yy_shift(), YYNRULE, YYNSTATE, yyRuleInfo, and yyParser::yystack.

Referenced by Parse().

static void yy_syntax_error ( yyParser yypParser,
int  yymajor,
YYMINORTYPE  yyminor 
) [static]

Definition at line 2488 of file queryparser_internal.cc.

References ParseARG_FETCH, and ParseARG_STORE.

Referenced by Parse().

static void Parse ( yyParser yypParser,
int  yymajor,
ParseTOKENTYPE yyminor  ParseARG_PDECL 
) [static]

Definition at line 2533 of file queryparser_internal.cc.

References DEBUGLINE, ParseARG_STORE, YYMINORTYPE::yy0, yy_accept(), yy_destructor(), YY_ERROR_ACTION, yy_find_shift_action(), yy_parse_failed(), yy_pop_parser_stack(), yy_reduce(), yy_shift(), yy_syntax_error(), YYCODETYPE, yyParser::yyerrcnt, YYERRORSYMBOL, YYNOCODE, YYNRULE, YYNSTATE, and yyParser::yystack.


Variable Documentation

const YYACTIONTYPE yy_action[] [static]

Definition at line 1444 of file queryparser_internal.cc.

const YYCODETYPE yy_lookahead[] [static]

Definition at line 1476 of file queryparser_internal.cc.

const short yy_shift_ofst[] [static]

Initial value:

 {
     87,    9,   -1,  160,  103,   -1,  118,   -1,  118,   89,
    118,   95,   -1,  133,   -1,  272,   -1,   -1,   11,   -1,
     24,   -1,   -1,   -1,   -1,   37,  105,   -1,   -1,   -1,
     48,   -1,   62,   -1,  104,   98,   -1,  108,  110,   -1,
    118,  109,   -1,   -1,  107,   -1,  274,  113,   -1,  158,
     -1,   -1,  272,   -1,  125,   -1,  169,   -1,   -1,   -1,
    224,   -1,  176,   -1,   -1,  187,   -1,   -1,   -1,  154,
    271,  118,   -1,
}

Definition at line 1509 of file queryparser_internal.cc.

const short yy_reduce_ofst[] [static]

Initial value:

 {
    -23,  -24,  -24,  -24,  -10,  -24,    3,  -24,   16,  -24,
     29,  -24,  -24,  178,  -24,  -24,  -24,  -24,  -24,  -24,
    -24,  -24,  -24,  -24,  -24,   73,  -24,  -24,  -24,  -24,
    -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
     42,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  188,
    -24,  -24,  -24,  -24,  -24,  -24,  197,  -24,  -24,  -24,
    215,  -24,  225,  -24,  -24,  234,  -24,  -24,  -24,  -24,
    -24,   55,  -24,
}

Definition at line 1520 of file queryparser_internal.cc.

const YYACTIONTYPE yy_default[] [static]

Initial value:

 {
     82,   81,   75,  124,   82,   76,   82,   77,   82,   79,
     82,   80,   81,   83,   88,  101,  116,  118,  124,  120,
    124,  122,  102,  105,  106,  124,  124,  107,  115,  114,
    108,  117,  109,  119,  110,  124,  121,  111,  124,  123,
     82,   81,  112,   84,  124,   85,  124,  124,   86,  124,
     90,   98,  103,  104,  124,  113,  124,   92,   94,   96,
    100,   87,  124,   89,   97,  124,   91,   93,   95,  101,
    102,   82,   78,
}

Definition at line 1530 of file queryparser_internal.cc.

YYCODETYPE lhs

Definition at line 1926 of file queryparser_internal.cc.

unsigned char nrhs

Definition at line 1927 of file queryparser_internal.cc.

struct { ... } yyRuleInfo[] [static]

Referenced by yy_reduce().


Documentation for Xapian (version 1.0.10).
Generated on 24 Dec 2008 by Doxygen 1.5.2.