|
YAZ
4.2.57
|
Implements CQL parser. More...
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <yaz/yaz-iconv.h>#include <yaz/xmalloc.h>#include <yaz/nmem.h>#include <yaz/cql.h>Go to the source code of this file.
Data Structures | |
| struct | token |
| struct | cql_parser |
| union | yyalloc |
Macros | |
| #define | YYBISON 1 |
| #define | YYBISON_VERSION "2.5" |
| #define | YYSKELETON_NAME "yacc.c" |
| #define | YYPURE 1 |
| #define | YYPUSH 0 |
| #define | YYPULL 1 |
| #define | YYLSP_NEEDED 0 |
| #define | yyparse cql_parse |
| #define | yylex cql_lex |
| #define | yyerror cql_error |
| #define | yylval cql_lval |
| #define | yychar cql_char |
| #define | yydebug cql_debug |
| #define | yynerrs cql_nerrs |
| #define | YYSTYPE token |
| #define | YYPARSE_PARAM parm |
| #define | YYLEX_PARAM parm |
| #define | YYDEBUG 0 |
| #define | YYERROR_VERBOSE 0 |
| #define | YYTOKEN_TABLE 0 |
| #define | YYTOKENTYPE |
| #define | PREFIX_NAME 258 |
| #define | SIMPLE_STRING 259 |
| #define | AND 260 |
| #define | OR 261 |
| #define | NOT 262 |
| #define | PROX 263 |
| #define | GE 264 |
| #define | LE 265 |
| #define | NE 266 |
| #define | EXACT 267 |
| #define | SORTBY 268 |
| #define | YYSIZE_T unsigned int |
| #define | YYSIZE_MAXIMUM ((YYSIZE_T) -1) |
| #define | YY_(msgid) msgid |
| #define | YYUSE(e) ((void) (e)) |
| #define | YYID(n) (n) |
| #define | YYSTACK_ALLOC YYMALLOC |
| #define | YYSTACK_FREE YYFREE |
| #define | YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM |
| #define | YYMALLOC malloc |
| #define | YYFREE free |
| #define | YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) |
| #define | YYSTACK_BYTES(N) |
| #define | YYCOPY_NEEDED 1 |
| #define | YYSTACK_RELOCATE(Stack_alloc, Stack) |
| #define | YYCOPY(To, From, Count) |
| #define | YYFINAL 3 |
| #define | YYLAST 103 |
| #define | YYNTOKENS 20 |
| #define | YYNNTS 22 |
| #define | YYNRULES 49 |
| #define | YYNSTATES 66 |
| #define | YYUNDEFTOK 2 |
| #define | YYMAXUTOK 268 |
| #define | YYTRANSLATE(YYX) ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) |
| #define | YYPACT_NINF -34 |
| #define | YYTABLE_NINF -43 |
| #define | yypact_value_is_default(yystate) ((yystate) == (-34)) |
| #define | yytable_value_is_error(yytable_value) YYID (0) |
| #define | yyerrok (yyerrstatus = 0) |
| #define | yyclearin (yychar = YYEMPTY) |
| #define | YYEMPTY (-2) |
| #define | YYEOF 0 |
| #define | YYACCEPT goto yyacceptlab |
| #define | YYABORT goto yyabortlab |
| #define | YYERROR goto yyerrorlab |
| #define | YYFAIL goto yyerrlab |
| #define | YYRECOVERING() (!!yyerrstatus) |
| #define | YYBACKUP(Token, Value) |
| #define | YYTERROR 1 |
| #define | YYERRCODE 256 |
| #define | YYRHSLOC(Rhs, K) ((Rhs)[K]) |
| #define | YYLLOC_DEFAULT(Current, Rhs, N) |
| #define | YY_LOCATION_PRINT(File, Loc) ((void) 0) |
| #define | YYLEX yylex (&yylval, YYLEX_PARAM) |
| #define | YYDPRINTF(Args) |
| #define | YY_SYMBOL_PRINT(Title, Type, Value, Location) |
| #define | YY_STACK_PRINT(Bottom, Top) |
| #define | YY_REDUCE_PRINT(Rule) |
| #define | YYINITDEPTH 200 |
| #define | YYMAXDEPTH 10000 |
| #define | YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) |
Typedefs | |
| typedef unsigned char | yytype_uint8 |
| typedef short int | yytype_int8 |
| typedef unsigned short int | yytype_uint16 |
| typedef short int | yytype_int16 |
Enumerations | |
| enum | yytokentype { PREFIX_NAME = 258, SIMPLE_STRING = 259, AND = 260, OR = 261, NOT = 262, PROX = 263, GE = 264, LE = 265, NE = 266, EXACT = 267, SORTBY = 268 } |
Functions | |
| int | yylex (YYSTYPE *lval, void *vp) |
| int | yyerror (char *s) |
| static void | yydestruct (char *yymsg, int yytype, YYSTYPE *yyvaluep) const |
| int | yyparse () |
| int | yyparse (void *YYPARSE_PARAM) |
| static void | putb (YYSTYPE *lval, CQL_parser cp, int c) |
| int | cql_parser_stream (CQL_parser cp, int(*getbyte)(void *client_data), void(*ungetbyte)(int b, void *client_data), void *client_data) |
| parses CQL query (query stream) | |
| CQL_parser | cql_parser_create (void) |
| creates a CQL parser. | |
| void | cql_parser_destroy (CQL_parser cp) |
| destroys a CQL parser. | |
| struct cql_node * | cql_parser_result (CQL_parser cp) |
| returns the parse tree of the most recently parsed CQL query. | |
| void | cql_parser_strict (CQL_parser cp, int mode) |
| configures strict mode | |
Variables | |
| static const yytype_uint8 | yytranslate [] |
| static const yytype_uint8 | yyr1 [] |
| static const yytype_uint8 | yyr2 [] |
| static const yytype_uint8 | yydefact [] |
| static const yytype_int8 | yydefgoto [] |
| static const yytype_int8 | yypact [] |
| static const yytype_int8 | yypgoto [] |
| static const yytype_int8 | yytable [] |
| static const yytype_int8 | yycheck [] |
| static const yytype_uint8 | yystos [] |
Implements CQL parser.
This is a YACC parser, but since it must be reentrant, Bison is required. The original source file is cql.y.
Definition in file cql.c.
| #define YY_STACK_PRINT | ( | Bottom, | |
| Top | |||
| ) |
| #define YY_SYMBOL_PRINT | ( | Title, | |
| Type, | |||
| Value, | |||
| Location | |||
| ) |
Definition at line 898 of file cql.c.
Referenced by yydestruct(), and yyparse().
| #define YYBACKUP | ( | Token, | |
| Value | |||
| ) |
| #define YYCOPY | ( | To, | |
| From, | |||
| Count | |||
| ) |
| #define YYLEX yylex (&yylval, YYLEX_PARAM) |
| #define YYLLOC_DEFAULT | ( | Current, | |
| Rhs, | |||
| N | |||
| ) |
| #define yypact_value_is_default | ( | yystate | ) | ((yystate) == (-34)) |
| #define YYPOPSTACK | ( | N | ) | (yyvsp -= (N), yyssp -= (N)) |
Referenced by yyparse().
| #define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM |
| #define YYSTACK_RELOCATE | ( | Stack_alloc, | |
| Stack | |||
| ) |
Definition at line 383 of file cql.c.
Referenced by yyparse().
| #define yytable_value_is_error | ( | yytable_value | ) | YYID (0) |
| #define YYTRANSLATE | ( | YYX | ) | ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) |
| #define YYUSE | ( | e | ) | ((void) (e)) |
Definition at line 263 of file cql.c.
Referenced by yydestruct().
| typedef short int yytype_int16 |
| typedef short int yytype_int8 |
| typedef unsigned short int yytype_uint16 |
| typedef unsigned char yytype_uint8 |
| enum yytokentype |
| CQL_parser cql_parser_create | ( | void | ) |
creates a CQL parser.
Returns CQL parser or NULL if parser could not be created.
Definition at line 2154 of file cql.c.
References cql_parser::client_data, cql_parser::getbyte, cql_parser::last_error, cql_parser::last_pos, cql_parser::nmem, nmem_create(), cql_parser::strict, cql_parser::top, cql_parser::ungetbyte, and xmalloc.
Referenced by cql2pqf().
| void cql_parser_destroy | ( | CQL_parser | cp | ) |
destroys a CQL parser.
| cp | CQL parser |
This function does nothing if NULL if received.
Definition at line 2169 of file cql.c.
References cql_node_destroy(), cql_parser::nmem, nmem_destroy(), cql_parser::top, and xfree.
Referenced by cql2pqf().
|
read |
returns the parse tree of the most recently parsed CQL query.
| cp | CQL parser |
Definition at line 2176 of file cql.c.
References cql_parser::top.
Referenced by cql2pqf().
| int cql_parser_stream | ( | CQL_parser | cp, |
| int(*)(void *client_data) | getbyte, | ||
| void(*)(int b, void *client_data) | ungetbyte, | ||
| void * | client_data | ||
| ) |
parses CQL query (query stream)
| cp | CQL parser |
| getbyte | function which reads one character from stream |
| ungetbyte | function which unreads one character from stream |
| client_data | data to be passed to stream functions |
| 0 | success |
| !=0 | failure |
This function is similar to cql_parser_string but takes a functions to read each query character from a stream.
The functions pointers getbytes, ungetbyte are similar to that known from stdios getc, ungetc.
Definition at line 2138 of file cql.c.
References cql_parser::client_data, cql_node_destroy(), cql_parser::getbyte, cql_parser::nmem, nmem_reset(), cql_parser::top, and cql_parser::ungetbyte.
Referenced by cql_parser_stdio(), and cql_parser_string().
| void cql_parser_strict | ( | CQL_parser | cp, |
| int | mode | ||
| ) |
configures strict mode
| cp | CQL parser |
| mode | 1=enable strict mode, 0=disable strict mode |
This function is similar to cql_parser_string but reads from stdio FILE handle instead.
Definition at line 2181 of file cql.c.
References cql_parser::strict.
|
static |
putb is a utility that puts one character to the string in current lexical token. This routine deallocates as necessary using NMEM.
Definition at line 1978 of file cql.c.
References cql_parser::nmem, and nmem_malloc().
Referenced by yylex().
|
static |
Definition at line 1170 of file cql.c.
References YY_SYMBOL_PRINT, and YYUSE.
Referenced by yyparse().
| int yylex | ( | YYSTYPE * | lval, |
| void * | vp | ||
| ) |
yylex returns next token for Bison to be read. In this case one of the CQL terminals are returned.
Definition at line 1997 of file cql.c.
References AND, cql_parser::client_data, cql_strcmp(), EXACT, GE, cql_parser::getbyte, LE, NE, cql_parser::nmem, nmem_malloc(), NOT, OR, PREFIX_NAME, PROX, putb(), SIMPLE_STRING, SORTBY, cql_parser::strict, cql_parser::ungetbyte, and yaz_isspace.
| int yyparse | ( | ) |
| int yyparse | ( | void * | YYPARSE_PARAM | ) |
Definition at line 1218 of file cql.c.
References cql_node::boolean, cql_apply_prefix(), cql_node_destroy(), cql_node_dup(), cql_node_mk_boolean(), cql_node_mk_sc(), cql_node_mk_sort(), nmem_strdup(), cql_node::st, cql_node::u, YY_, YY_REDUCE_PRINT, YY_STACK_PRINT, YY_SYMBOL_PRINT, YYABORT, YYACCEPT, yychar, yydestruct(), YYDPRINTF, YYEMPTY, YYEOF, yyerror, YYFINAL, YYID, YYINITDEPTH, YYLAST, YYLEX, yylval, YYMAXDEPTH, yynerrs, YYNTOKENS, yypact_value_is_default, YYPOPSTACK, YYSIZE_T, yyalloc::yyss_alloc, YYSTACK_ALLOC, YYSTACK_BYTES, YYSTACK_FREE, YYSTACK_RELOCATE, YYSTYPE, yytable_value_is_error, YYTERROR, YYTRANSLATE, and yyalloc::yyvs_alloc.
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
1.8.1.2