00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 #define YYBISON 1
00048
00049
00050 #define YYBISON_VERSION "2.3"
00051
00052
00053 #define YYSKELETON_NAME "yacc.c"
00054
00055
00056 #define YYPURE 1
00057
00058
00059 #define YYLSP_NEEDED 0
00060
00061
00062 #define yyparse cql_parse
00063 #define yylex cql_lex
00064 #define yyerror cql_error
00065 #define yylval cql_lval
00066 #define yychar cql_char
00067 #define yydebug cql_debug
00068 #define yynerrs cql_nerrs
00069
00070
00071
00072 #ifndef YYTOKENTYPE
00073 # define YYTOKENTYPE
00074
00075
00076 enum yytokentype {
00077 DOTTERM = 258,
00078 TERM = 259,
00079 AND = 260,
00080 OR = 261,
00081 NOT = 262,
00082 PROX = 263,
00083 GE = 264,
00084 LE = 265,
00085 NE = 266,
00086 EXACT = 267
00087 };
00088 #endif
00089
00090 #define DOTTERM 258
00091 #define TERM 259
00092 #define AND 260
00093 #define OR 261
00094 #define NOT 262
00095 #define PROX 263
00096 #define GE 264
00097 #define LE 265
00098 #define NE 266
00099 #define EXACT 267
00100
00101
00102
00103
00104
00105 #line 6 "cql.y"
00106
00114 #include <stdio.h>
00115 #include <stdlib.h>
00116 #include <string.h>
00117 #include <ctype.h>
00118 #include <yaz/xmalloc.h>
00119 #include <yaz/nmem.h>
00120 #include <yaz/cql.h>
00121
00123 typedef struct {
00125 struct cql_node *rel;
00127 struct cql_node *cql;
00129 char *buf;
00131 size_t len;
00133 size_t size;
00134 } token;
00135
00136 struct cql_parser {
00137 int (*getbyte)(void *client_data);
00138 void (*ungetbyte)(int b, void *client_data);
00139 void *client_data;
00140 int last_error;
00141 int last_pos;
00142 struct cql_node *top;
00143 NMEM nmem;
00144 };
00145
00146 #define YYSTYPE token
00147
00148 #define YYPARSE_PARAM parm
00149 #define YYLEX_PARAM parm
00150
00151 int yylex(YYSTYPE *lval, void *vp);
00152 int yyerror(char *s);
00153
00154
00155
00156 #ifndef YYDEBUG
00157 # define YYDEBUG 0
00158 #endif
00159
00160
00161 #ifdef YYERROR_VERBOSE
00162 # undef YYERROR_VERBOSE
00163 # define YYERROR_VERBOSE 1
00164 #else
00165 # define YYERROR_VERBOSE 0
00166 #endif
00167
00168
00169 #ifndef YYTOKEN_TABLE
00170 # define YYTOKEN_TABLE 0
00171 #endif
00172
00173 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
00174 typedef int YYSTYPE;
00175 # define yystype YYSTYPE
00176 # define YYSTYPE_IS_DECLARED 1
00177 # define YYSTYPE_IS_TRIVIAL 1
00178 #endif
00179
00180
00181
00182
00183
00184
00185
00186 #line 187 "cql.c"
00187
00188 #ifdef short
00189 # undef short
00190 #endif
00191
00192 #ifdef YYTYPE_UINT8
00193 typedef YYTYPE_UINT8 yytype_uint8;
00194 #else
00195 typedef unsigned char yytype_uint8;
00196 #endif
00197
00198 #ifdef YYTYPE_INT8
00199 typedef YYTYPE_INT8 yytype_int8;
00200 #elif (defined __STDC__ || defined __C99__FUNC__ \
00201 || defined __cplusplus || defined _MSC_VER)
00202 typedef signed char yytype_int8;
00203 #else
00204 typedef short int yytype_int8;
00205 #endif
00206
00207 #ifdef YYTYPE_UINT16
00208 typedef YYTYPE_UINT16 yytype_uint16;
00209 #else
00210 typedef unsigned short int yytype_uint16;
00211 #endif
00212
00213 #ifdef YYTYPE_INT16
00214 typedef YYTYPE_INT16 yytype_int16;
00215 #else
00216 typedef short int yytype_int16;
00217 #endif
00218
00219 #ifndef YYSIZE_T
00220 # ifdef __SIZE_TYPE__
00221 # define YYSIZE_T __SIZE_TYPE__
00222 # elif defined size_t
00223 # define YYSIZE_T size_t
00224 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
00225 || defined __cplusplus || defined _MSC_VER)
00226 # include <stddef.h>
00227 # define YYSIZE_T size_t
00228 # else
00229 # define YYSIZE_T unsigned int
00230 # endif
00231 #endif
00232
00233 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
00234
00235 #ifndef YY_
00236 # if YYENABLE_NLS
00237 # if ENABLE_NLS
00238 # include <libintl.h>
00239 # define YY_(msgid) dgettext ("bison-runtime", msgid)
00240 # endif
00241 # endif
00242 # ifndef YY_
00243 # define YY_(msgid) msgid
00244 # endif
00245 #endif
00246
00247
00248 #if ! defined lint || defined __GNUC__
00249 # define YYUSE(e) ((void) (e))
00250 #else
00251 # define YYUSE(e)
00252 #endif
00253
00254
00255 #ifndef lint
00256 # define YYID(n) (n)
00257 #else
00258 #if (defined __STDC__ || defined __C99__FUNC__ \
00259 || defined __cplusplus || defined _MSC_VER)
00260 static int
00261 YYID (int i)
00262 #else
00263 static int
00264 YYID (i)
00265 int i;
00266 #endif
00267 {
00268 return i;
00269 }
00270 #endif
00271
00272 #if ! defined yyoverflow || YYERROR_VERBOSE
00273
00274
00275
00276 # ifdef YYSTACK_USE_ALLOCA
00277 # if YYSTACK_USE_ALLOCA
00278 # ifdef __GNUC__
00279 # define YYSTACK_ALLOC __builtin_alloca
00280 # elif defined __BUILTIN_VA_ARG_INCR
00281 # include <alloca.h>
00282 # elif defined _AIX
00283 # define YYSTACK_ALLOC __alloca
00284 # elif defined _MSC_VER
00285 # include <malloc.h>
00286 # define alloca _alloca
00287 # else
00288 # define YYSTACK_ALLOC alloca
00289 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00290 || defined __cplusplus || defined _MSC_VER)
00291 # include <stdlib.h>
00292 # ifndef _STDLIB_H
00293 # define _STDLIB_H 1
00294 # endif
00295 # endif
00296 # endif
00297 # endif
00298 # endif
00299
00300 # ifdef YYSTACK_ALLOC
00301
00302 # define YYSTACK_FREE(Ptr) do { ; } while (YYID (0))
00303 # ifndef YYSTACK_ALLOC_MAXIMUM
00304
00305
00306
00307
00308 # define YYSTACK_ALLOC_MAXIMUM 4032
00309 # endif
00310 # else
00311 # define YYSTACK_ALLOC YYMALLOC
00312 # define YYSTACK_FREE YYFREE
00313 # ifndef YYSTACK_ALLOC_MAXIMUM
00314 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
00315 # endif
00316 # if (defined __cplusplus && ! defined _STDLIB_H \
00317 && ! ((defined YYMALLOC || defined malloc) \
00318 && (defined YYFREE || defined free)))
00319 # include <stdlib.h>
00320 # ifndef _STDLIB_H
00321 # define _STDLIB_H 1
00322 # endif
00323 # endif
00324 # ifndef YYMALLOC
00325 # define YYMALLOC malloc
00326 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00327 || defined __cplusplus || defined _MSC_VER)
00328 void *malloc (YYSIZE_T);
00329 # endif
00330 # endif
00331 # ifndef YYFREE
00332 # define YYFREE free
00333 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
00334 || defined __cplusplus || defined _MSC_VER)
00335 void free (void *);
00336 # endif
00337 # endif
00338 # endif
00339 #endif
00340
00341
00342 #if (! defined yyoverflow \
00343 && (! defined __cplusplus \
00344 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
00345
00346
00347 union yyalloc
00348 {
00349 yytype_int16 yyss;
00350 YYSTYPE yyvs;
00351 };
00352
00353
00354 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
00355
00356
00357
00358 # define YYSTACK_BYTES(N) \
00359 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
00360 + YYSTACK_GAP_MAXIMUM)
00361
00362
00363
00364 # ifndef YYCOPY
00365 # if defined __GNUC__ && 1 < __GNUC__
00366 # define YYCOPY(To, From, Count) \
00367 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00368 # else
00369 # define YYCOPY(To, From, Count) \
00370 do \
00371 { \
00372 YYSIZE_T yyi; \
00373 for (yyi = 0; yyi < (Count); yyi++) \
00374 (To)[yyi] = (From)[yyi]; \
00375 } \
00376 while (YYID (0))
00377 # endif
00378 # endif
00379
00380
00381
00382
00383
00384
00385 # define YYSTACK_RELOCATE(Stack) \
00386 do \
00387 { \
00388 YYSIZE_T yynewbytes; \
00389 YYCOPY (&yyptr->Stack, Stack, yysize); \
00390 Stack = &yyptr->Stack; \
00391 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
00392 yyptr += yynewbytes / sizeof (*yyptr); \
00393 } \
00394 while (YYID (0))
00395
00396 #endif
00397
00398
00399 #define YYFINAL 3
00400
00401 #define YYLAST 73
00402
00403
00404 #define YYNTOKENS 19
00405
00406 #define YYNNTS 19
00407
00408 #define YYNRULES 49
00409
00410 #define YYNSTATES 62
00411
00412
00413 #define YYUNDEFTOK 2
00414 #define YYMAXUTOK 267
00415
00416 #define YYTRANSLATE(YYX) \
00417 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
00418
00419
00420 static const yytype_uint8 yytranslate[] =
00421 {
00422 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00423 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00424 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00425 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00426 15, 16, 2, 2, 2, 2, 2, 17, 2, 2,
00427 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00428 18, 14, 13, 2, 2, 2, 2, 2, 2, 2,
00429 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00430 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00431 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00432 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00433 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00434 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00435 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00436 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00437 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00438 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00439 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00440 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00441 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00442 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00443 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00444 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00445 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00446 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00447 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
00448 5, 6, 7, 8, 9, 10, 11, 12
00449 };
00450
00451 #if YYDEBUG
00452
00453
00454 static const yytype_uint8 yyprhs[] =
00455 {
00456 0, 0, 3, 4, 7, 9, 12, 14, 15, 22,
00457 23, 28, 30, 31, 37, 38, 43, 46, 47, 53,
00458 56, 57, 59, 61, 63, 65, 69, 75, 76, 78,
00459 80, 82, 84, 86, 88, 90, 92, 94, 96, 98,
00460 100, 102, 104, 106, 108, 110, 112, 114, 116, 118
00461 };
00462
00463
00464 static const yytype_int8 yyrhs[] =
00465 {
00466 20, 0, -1, -1, 21, 22, -1, 23, -1, 23,
00467 1, -1, 26, -1, -1, 13, 37, 14, 37, 24,
00468 23, -1, -1, 13, 37, 25, 23, -1, 28, -1,
00469 -1, 26, 32, 33, 27, 28, -1, -1, 15, 29,
00470 23, 16, -1, 37, 31, -1, -1, 36, 35, 33,
00471 30, 28, -1, 31, 4, -1, -1, 5, -1, 6,
00472 -1, 7, -1, 8, -1, 33, 17, 37, -1, 33,
00473 17, 37, 34, 37, -1, -1, 14, -1, 13, -1,
00474 18, -1, 9, -1, 10, -1, 11, -1, 12, -1,
00475 14, -1, 13, -1, 18, -1, 9, -1, 10, -1,
00476 11, -1, 12, -1, 3, -1, 37, -1, 4, -1,
00477 3, -1, 5, -1, 6, -1, 7, -1, 8, -1
00478 };
00479
00480
00481 static const yytype_uint8 yyrline[] =
00482 {
00483 0, 60, 60, 60, 70, 71, 78, 80, 80, 86,
00484 86, 95, 97, 97, 112, 112, 119, 126, 126, 136,
00485 143, 150, 150, 150, 150, 152, 161, 170, 176, 177,
00486 178, 179, 180, 181, 182, 186, 187, 188, 189, 190,
00487 191, 192, 193, 197, 200, 201, 202, 203, 204, 205
00488 };
00489 #endif
00490
00491 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
00492
00493
00494 static const char *const yytname[] =
00495 {
00496 "$end", "error", "$undefined", "DOTTERM", "TERM", "AND", "OR", "NOT",
00497 "PROX", "GE", "LE", "NE", "EXACT", "'>'", "'='", "'('", "')'", "'/'",
00498 "'<'", "$accept", "top", "@1", "cqlQuery1", "cqlQuery", "@2", "@3",
00499 "scopedClause", "@4", "searchClause", "@5", "@6", "extraTerms",
00500 "boolean", "modifiers", "mrelation", "relation", "index", "searchTerm", 0
00501 };
00502 #endif
00503
00504 # ifdef YYPRINT
00505
00506
00507 static const yytype_uint16 yytoknum[] =
00508 {
00509 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
00510 265, 266, 267, 62, 61, 40, 41, 47, 60
00511 };
00512 # endif
00513
00514
00515 static const yytype_uint8 yyr1[] =
00516 {
00517 0, 19, 21, 20, 22, 22, 23, 24, 23, 25,
00518 23, 26, 27, 26, 29, 28, 28, 30, 28, 31,
00519 31, 32, 32, 32, 32, 33, 33, 33, 34, 34,
00520 34, 34, 34, 34, 34, 35, 35, 35, 35, 35,
00521 35, 35, 35, 36, 37, 37, 37, 37, 37, 37
00522 };
00523
00524
00525 static const yytype_uint8 yyr2[] =
00526 {
00527 0, 2, 0, 2, 1, 2, 1, 0, 6, 0,
00528 4, 1, 0, 5, 0, 4, 2, 0, 5, 2,
00529 0, 1, 1, 1, 1, 3, 5, 0, 1, 1,
00530 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00531 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
00532 };
00533
00534
00535
00536
00537 static const yytype_uint8 yydefact[] =
00538 {
00539 2, 0, 0, 1, 45, 44, 46, 47, 48, 49,
00540 0, 14, 3, 0, 6, 11, 0, 20, 9, 0,
00541 5, 21, 22, 23, 24, 27, 42, 38, 39, 40,
00542 41, 36, 35, 37, 27, 16, 0, 0, 0, 12,
00543 17, 19, 7, 10, 15, 0, 0, 0, 0, 25,
00544 13, 18, 8, 31, 32, 33, 34, 29, 28, 30,
00545 0, 26
00546 };
00547
00548
00549 static const yytype_int8 yydefgoto[] =
00550 {
00551 -1, 1, 2, 12, 13, 48, 37, 14, 46, 15,
00552 19, 47, 35, 25, 39, 60, 34, 16, 17
00553 };
00554
00555
00556
00557 #define YYPACT_NINF -20
00558 static const yytype_int8 yypact[] =
00559 {
00560 -20, 7, 33, -20, -20, -20, -20, -20, -20, -20,
00561 54, -20, -20, 15, -2, -20, -1, 11, 4, 33,
00562 -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
00563 -20, -20, -20, -20, -20, 27, 54, 33, 16, 17,
00564 17, -20, -20, -20, -20, 54, 48, 48, 33, 55,
00565 -20, -20, -20, -20, -20, -20, -20, -20, -20, -20,
00566 54, -20
00567 };
00568
00569
00570 static const yytype_int8 yypgoto[] =
00571 {
00572 -20, -20, -20, -20, -18, -20, -20, -20, -20, -19,
00573 -20, -20, -20, -20, 8, -20, -20, -20, -10
00574 };
00575
00576
00577
00578
00579
00580 #define YYTABLE_NINF -44
00581 static const yytype_int8 yytable[] =
00582 {
00583 18, 38, 26, 21, 22, 23, 24, 3, 27, 28,
00584 29, 30, 31, 32, -43, -4, 20, 33, 36, 43,
00585 -43, -43, -43, -43, -43, -43, 42, 50, 51, -43,
00586 52, 41, 44, 0, 45, 49, 4, 5, 6, 7,
00587 8, 9, 40, 0, 0, 0, 10, 0, 11, 0,
00588 61, 4, 5, 6, 7, 8, 9, 4, 5, 6,
00589 7, 8, 9, 11, 53, 54, 55, 56, 57, 58,
00590 0, 0, 0, 59
00591 };
00592
00593 static const yytype_int8 yycheck[] =
00594 {
00595 10, 19, 3, 5, 6, 7, 8, 0, 9, 10,
00596 11, 12, 13, 14, 3, 0, 1, 18, 14, 37,
00597 9, 10, 11, 12, 13, 14, 36, 46, 47, 18,
00598 48, 4, 16, -1, 17, 45, 3, 4, 5, 6,
00599 7, 8, 34, -1, -1, -1, 13, -1, 15, -1,
00600 60, 3, 4, 5, 6, 7, 8, 3, 4, 5,
00601 6, 7, 8, 15, 9, 10, 11, 12, 13, 14,
00602 -1, -1, -1, 18
00603 };
00604
00605
00606
00607 static const yytype_uint8 yystos[] =
00608 {
00609 0, 20, 21, 0, 3, 4, 5, 6, 7, 8,
00610 13, 15, 22, 23, 26, 28, 36, 37, 37, 29,
00611 1, 5, 6, 7, 8, 32, 3, 9, 10, 11,
00612 12, 13, 14, 18, 35, 31, 14, 25, 23, 33,
00613 33, 4, 37, 23, 16, 17, 27, 30, 24, 37,
00614 28, 28, 23, 9, 10, 11, 12, 13, 14, 18,
00615 34, 37
00616 };
00617
00618 #define yyerrok (yyerrstatus = 0)
00619 #define yyclearin (yychar = YYEMPTY)
00620 #define YYEMPTY (-2)
00621 #define YYEOF 0
00622
00623 #define YYACCEPT goto yyacceptlab
00624 #define YYABORT goto yyabortlab
00625 #define YYERROR goto yyerrorlab
00626
00627
00628
00629
00630
00631
00632 #define YYFAIL goto yyerrlab
00633
00634 #define YYRECOVERING() (!!yyerrstatus)
00635
00636 #define YYBACKUP(Token, Value) \
00637 do \
00638 if (yychar == YYEMPTY && yylen == 1) \
00639 { \
00640 yychar = (Token); \
00641 yylval = (Value); \
00642 yytoken = YYTRANSLATE (yychar); \
00643 YYPOPSTACK (1); \
00644 goto yybackup; \
00645 } \
00646 else \
00647 { \
00648 yyerror (YY_("syntax error: cannot back up")); \
00649 YYERROR; \
00650 } \
00651 while (YYID (0))
00652
00653
00654 #define YYTERROR 1
00655 #define YYERRCODE 256
00656
00657
00658
00659
00660
00661
00662 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
00663 #ifndef YYLLOC_DEFAULT
00664 # define YYLLOC_DEFAULT(Current, Rhs, N) \
00665 do \
00666 if (YYID (N)) \
00667 { \
00668 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
00669 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
00670 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
00671 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
00672 } \
00673 else \
00674 { \
00675 (Current).first_line = (Current).last_line = \
00676 YYRHSLOC (Rhs, 0).last_line; \
00677 (Current).first_column = (Current).last_column = \
00678 YYRHSLOC (Rhs, 0).last_column; \
00679 } \
00680 while (YYID (0))
00681 #endif
00682
00683
00684
00685
00686
00687
00688 #ifndef YY_LOCATION_PRINT
00689 # if YYLTYPE_IS_TRIVIAL
00690 # define YY_LOCATION_PRINT(File, Loc) \
00691 fprintf (File, "%d.%d-%d.%d", \
00692 (Loc).first_line, (Loc).first_column, \
00693 (Loc).last_line, (Loc).last_column)
00694 # else
00695 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
00696 # endif
00697 #endif
00698
00699
00700
00701
00702 #ifdef YYLEX_PARAM
00703 # define YYLEX yylex (&yylval, YYLEX_PARAM)
00704 #else
00705 # define YYLEX yylex (&yylval)
00706 #endif
00707
00708
00709 #if YYDEBUG
00710
00711 # ifndef YYFPRINTF
00712 # include <stdio.h>
00713 # define YYFPRINTF fprintf
00714 # endif
00715
00716 # define YYDPRINTF(Args) \
00717 do { \
00718 if (yydebug) \
00719 YYFPRINTF Args; \
00720 } while (YYID (0))
00721
00722 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
00723 do { \
00724 if (yydebug) \
00725 { \
00726 YYFPRINTF (stderr, "%s ", Title); \
00727 yy_symbol_print (stderr, \
00728 Type, Value); \
00729 YYFPRINTF (stderr, "\n"); \
00730 } \
00731 } while (YYID (0))
00732
00733
00734
00735
00736
00737
00738
00739 #if (defined __STDC__ || defined __C99__FUNC__ \
00740 || defined __cplusplus || defined _MSC_VER)
00741 static void
00742 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
00743 #else
00744 static void
00745 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
00746 FILE *yyoutput;
00747 int yytype;
00748 YYSTYPE const * const yyvaluep;
00749 #endif
00750 {
00751 if (!yyvaluep)
00752 return;
00753 # ifdef YYPRINT
00754 if (yytype < YYNTOKENS)
00755 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
00756 # else
00757 YYUSE (yyoutput);
00758 # endif
00759 switch (yytype)
00760 {
00761 default:
00762 break;
00763 }
00764 }
00765
00766
00767
00768
00769
00770
00771 #if (defined __STDC__ || defined __C99__FUNC__ \
00772 || defined __cplusplus || defined _MSC_VER)
00773 static void
00774 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
00775 #else
00776 static void
00777 yy_symbol_print (yyoutput, yytype, yyvaluep)
00778 FILE *yyoutput;
00779 int yytype;
00780 YYSTYPE const * const yyvaluep;
00781 #endif
00782 {
00783 if (yytype < YYNTOKENS)
00784 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
00785 else
00786 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
00787
00788 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
00789 YYFPRINTF (yyoutput, ")");
00790 }
00791
00792
00793
00794
00795
00796
00797 #if (defined __STDC__ || defined __C99__FUNC__ \
00798 || defined __cplusplus || defined _MSC_VER)
00799 static void
00800 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
00801 #else
00802 static void
00803 yy_stack_print (bottom, top)
00804 yytype_int16 *bottom;
00805 yytype_int16 *top;
00806 #endif
00807 {
00808 YYFPRINTF (stderr, "Stack now");
00809 for (; bottom <= top; ++bottom)
00810 YYFPRINTF (stderr, " %d", *bottom);
00811 YYFPRINTF (stderr, "\n");
00812 }
00813
00814 # define YY_STACK_PRINT(Bottom, Top) \
00815 do { \
00816 if (yydebug) \
00817 yy_stack_print ((Bottom), (Top)); \
00818 } while (YYID (0))
00819
00820
00821
00822
00823
00824
00825 #if (defined __STDC__ || defined __C99__FUNC__ \
00826 || defined __cplusplus || defined _MSC_VER)
00827 static void
00828 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
00829 #else
00830 static void
00831 yy_reduce_print (yyvsp, yyrule)
00832 YYSTYPE *yyvsp;
00833 int yyrule;
00834 #endif
00835 {
00836 int yynrhs = yyr2[yyrule];
00837 int yyi;
00838 unsigned long int yylno = yyrline[yyrule];
00839 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
00840 yyrule - 1, yylno);
00841
00842 for (yyi = 0; yyi < yynrhs; yyi++)
00843 {
00844 fprintf (stderr, " $%d = ", yyi + 1);
00845 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
00846 &(yyvsp[(yyi + 1) - (yynrhs)])
00847 );
00848 fprintf (stderr, "\n");
00849 }
00850 }
00851
00852 # define YY_REDUCE_PRINT(Rule) \
00853 do { \
00854 if (yydebug) \
00855 yy_reduce_print (yyvsp, Rule); \
00856 } while (YYID (0))
00857
00858
00859
00860 int yydebug;
00861 #else
00862 # define YYDPRINTF(Args)
00863 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
00864 # define YY_STACK_PRINT(Bottom, Top)
00865 # define YY_REDUCE_PRINT(Rule)
00866 #endif
00867
00868
00869
00870 #ifndef YYINITDEPTH
00871 # define YYINITDEPTH 200
00872 #endif
00873
00874
00875
00876
00877
00878
00879
00880
00881 #ifndef YYMAXDEPTH
00882 # define YYMAXDEPTH 10000
00883 #endif
00884
00885
00886
00887 #if YYERROR_VERBOSE
00888
00889 # ifndef yystrlen
00890 # if defined __GLIBC__ && defined _STRING_H
00891 # define yystrlen strlen
00892 # else
00893
00894 #if (defined __STDC__ || defined __C99__FUNC__ \
00895 || defined __cplusplus || defined _MSC_VER)
00896 static YYSIZE_T
00897 yystrlen (const char *yystr)
00898 #else
00899 static YYSIZE_T
00900 yystrlen (yystr)
00901 const char *yystr;
00902 #endif
00903 {
00904 YYSIZE_T yylen;
00905 for (yylen = 0; yystr[yylen]; yylen++)
00906 continue;
00907 return yylen;
00908 }
00909 # endif
00910 # endif
00911
00912 # ifndef yystpcpy
00913 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
00914 # define yystpcpy stpcpy
00915 # else
00916
00917
00918 #if (defined __STDC__ || defined __C99__FUNC__ \
00919 || defined __cplusplus || defined _MSC_VER)
00920 static char *
00921 yystpcpy (char *yydest, const char *yysrc)
00922 #else
00923 static char *
00924 yystpcpy (yydest, yysrc)
00925 char *yydest;
00926 const char *yysrc;
00927 #endif
00928 {
00929 char *yyd = yydest;
00930 const char *yys = yysrc;
00931
00932 while ((*yyd++ = *yys++) != '\0')
00933 continue;
00934
00935 return yyd - 1;
00936 }
00937 # endif
00938 # endif
00939
00940 # ifndef yytnamerr
00941
00942
00943
00944
00945
00946
00947
00948 static YYSIZE_T
00949 yytnamerr (char *yyres, const char *yystr)
00950 {
00951 if (*yystr == '"')
00952 {
00953 YYSIZE_T yyn = 0;
00954 char const *yyp = yystr;
00955
00956 for (;;)
00957 switch (*++yyp)
00958 {
00959 case '\'':
00960 case ',':
00961 goto do_not_strip_quotes;
00962
00963 case '\\':
00964 if (*++yyp != '\\')
00965 goto do_not_strip_quotes;
00966
00967 default:
00968 if (yyres)
00969 yyres[yyn] = *yyp;
00970 yyn++;
00971 break;
00972
00973 case '"':
00974 if (yyres)
00975 yyres[yyn] = '\0';
00976 return yyn;
00977 }
00978 do_not_strip_quotes: ;
00979 }
00980
00981 if (! yyres)
00982 return yystrlen (yystr);
00983
00984 return yystpcpy (yyres, yystr) - yyres;
00985 }
00986 # endif
00987
00988
00989
00990
00991
00992
00993
00994
00995 static YYSIZE_T
00996 yysyntax_error (char *yyresult, int yystate, int yychar)
00997 {
00998 int yyn = yypact[yystate];
00999
01000 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
01001 return 0;
01002 else
01003 {
01004 int yytype = YYTRANSLATE (yychar);
01005 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
01006 YYSIZE_T yysize = yysize0;
01007 YYSIZE_T yysize1;
01008 int yysize_overflow = 0;
01009 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
01010 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
01011 int yyx;
01012
01013 # if 0
01014
01015
01016 YY_("syntax error, unexpected %s");
01017 YY_("syntax error, unexpected %s, expecting %s");
01018 YY_("syntax error, unexpected %s, expecting %s or %s");
01019 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
01020 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
01021 # endif
01022 char *yyfmt;
01023 char const *yyf;
01024 static char const yyunexpected[] = "syntax error, unexpected %s";
01025 static char const yyexpecting[] = ", expecting %s";
01026 static char const yyor[] = " or %s";
01027 char yyformat[sizeof yyunexpected
01028 + sizeof yyexpecting - 1
01029 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
01030 * (sizeof yyor - 1))];
01031 char const *yyprefix = yyexpecting;
01032
01033
01034
01035 int yyxbegin = yyn < 0 ? -yyn : 0;
01036
01037
01038 int yychecklim = YYLAST - yyn + 1;
01039 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
01040 int yycount = 1;
01041
01042 yyarg[0] = yytname[yytype];
01043 yyfmt = yystpcpy (yyformat, yyunexpected);
01044
01045 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
01046 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
01047 {
01048 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
01049 {
01050 yycount = 1;
01051 yysize = yysize0;
01052 yyformat[sizeof yyunexpected - 1] = '\0';
01053 break;
01054 }
01055 yyarg[yycount++] = yytname[yyx];
01056 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
01057 yysize_overflow |= (yysize1 < yysize);
01058 yysize = yysize1;
01059 yyfmt = yystpcpy (yyfmt, yyprefix);
01060 yyprefix = yyor;
01061 }
01062
01063 yyf = YY_(yyformat);
01064 yysize1 = yysize + yystrlen (yyf);
01065 yysize_overflow |= (yysize1 < yysize);
01066 yysize = yysize1;
01067
01068 if (yysize_overflow)
01069 return YYSIZE_MAXIMUM;
01070
01071 if (yyresult)
01072 {
01073
01074
01075
01076 char *yyp = yyresult;
01077 int yyi = 0;
01078 while ((*yyp = *yyf) != '\0')
01079 {
01080 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
01081 {
01082 yyp += yytnamerr (yyp, yyarg[yyi++]);
01083 yyf += 2;
01084 }
01085 else
01086 {
01087 yyp++;
01088 yyf++;
01089 }
01090 }
01091 }
01092 return yysize;
01093 }
01094 }
01095 #endif
01096
01097
01098
01099
01100
01101
01102
01103 #if (defined __STDC__ || defined __C99__FUNC__ \
01104 || defined __cplusplus || defined _MSC_VER)
01105 static void
01106 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
01107 #else
01108 static void
01109 yydestruct (yymsg, yytype, yyvaluep)
01110 const char *yymsg;
01111 int yytype;
01112 YYSTYPE *yyvaluep;
01113 #endif
01114 {
01115 YYUSE (yyvaluep);
01116
01117 if (!yymsg)
01118 yymsg = "Deleting";
01119 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
01120
01121 switch (yytype)
01122 {
01123
01124 default:
01125 break;
01126 }
01127 }
01128
01129
01130
01131
01132 #ifdef YYPARSE_PARAM
01133 #if defined __STDC__ || defined __cplusplus
01134 int yyparse (void *YYPARSE_PARAM);
01135 #else
01136 int yyparse ();
01137 #endif
01138 #else
01139 #if defined __STDC__ || defined __cplusplus
01140 int yyparse (void);
01141 #else
01142 int yyparse ();
01143 #endif
01144 #endif
01145
01146
01147
01148
01149
01150
01151
01152
01153
01154
01155 #ifdef YYPARSE_PARAM
01156 #if (defined __STDC__ || defined __C99__FUNC__ \
01157 || defined __cplusplus || defined _MSC_VER)
01158 int
01159 yyparse (void *YYPARSE_PARAM)
01160 #else
01161 int
01162 yyparse (YYPARSE_PARAM)
01163 void *YYPARSE_PARAM;
01164 #endif
01165 #else
01166 #if (defined __STDC__ || defined __C99__FUNC__ \
01167 || defined __cplusplus || defined _MSC_VER)
01168 int
01169 yyparse (void)
01170 #else
01171 int
01172 yyparse ()
01173
01174 #endif
01175 #endif
01176 {
01177
01178 int yychar;
01179
01180
01181 YYSTYPE yylval;
01182
01183
01184 int yynerrs;
01185
01186 int yystate;
01187 int yyn;
01188 int yyresult;
01189
01190 int yyerrstatus;
01191
01192 int yytoken = 0;
01193 #if YYERROR_VERBOSE
01194
01195 char yymsgbuf[128];
01196 char *yymsg = yymsgbuf;
01197 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
01198 #endif
01199
01200
01201
01202
01203
01204
01205
01206
01207
01208
01209 yytype_int16 yyssa[YYINITDEPTH];
01210 yytype_int16 *yyss = yyssa;
01211 yytype_int16 *yyssp;
01212
01213
01214 YYSTYPE yyvsa[YYINITDEPTH];
01215 YYSTYPE *yyvs = yyvsa;
01216 YYSTYPE *yyvsp;
01217
01218
01219
01220 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
01221
01222 YYSIZE_T yystacksize =