api_grammar.tab.c (57044B)
1 /* 2 * 3 * 4 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 5 * 6 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 7 */ 8 9 /* A Bison parser, made by GNU Bison 2.4.1. */ 10 11 /* Skeleton implementation for Bison's Yacc-like parsers in C 12 13 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 14 Free Software Foundation, Inc. 15 16 This program is free software: you can redistribute it and/or modify 17 it under the terms of the GNU General Public License as published by 18 the Free Software Foundation, either version 3 of the License, or 19 (at your option) any later version. 20 21 This program is distributed in the hope that it will be useful, 22 but WITHOUT ANY WARRANTY; without even the implied warranty of 23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 24 GNU General Public License for more details. 25 26 You should have received a copy of the GNU General Public License 27 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 28 29 /* As a special exception, you may create a larger work that contains 30 part or all of the Bison parser skeleton and distribute that work 31 under terms of your choice, so long as that work isn't itself a 32 parser generator using the skeleton or a modified version thereof 33 as a parser skeleton. Alternatively, if you modify or redistribute 34 the parser skeleton itself, you may (at your option) remove this 35 special exception, which will cause the skeleton and the resulting 36 Bison output files to be licensed under the GNU General Public 37 License without this special exception. 38 39 This special exception was added by the Free Software Foundation in 40 version 2.2 of Bison. */ 41 42 /* C LALR(1) parser skeleton written by Richard Stallman, by 43 simplifying the original so-called "semantic" parser. */ 44 45 /* All symbols defined below should begin with yy or YY, to avoid 46 infringing on user name space. This should be done even for local 47 variables, as they might otherwise be expanded by user macros. 48 There are some unavoidable exceptions within include files to 49 define necessary library symbols; they are noted "INFRINGES ON 50 USER NAME SPACE" below. */ 51 52 /* Identify Bison output. */ 53 #define YYBISON 1 54 55 /* Bison version. */ 56 #define YYBISON_VERSION "2.4.1" 57 58 /* Skeleton name. */ 59 #define YYSKELETON_NAME "yacc.c" 60 61 /* Pure parsers. */ 62 #define YYPURE 1 63 64 /* Push parsers. */ 65 #define YYPUSH 1 66 67 /* Pull parsers. */ 68 #define YYPULL 1 69 70 /* Using locations. */ 71 #define YYLSP_NEEDED 1 72 73 /* Substitute the variable and function names. */ 74 #define yyparse api_mode_parse 75 #define yypush_parse api_mode_push_parse 76 #define yypull_parse api_mode_pull_parse 77 #define yypstate_new api_mode_pstate_new 78 #define yypstate_delete api_mode_pstate_delete 79 #define yypstate api_mode_pstate 80 #define yylex api_mode_lex 81 #define yyerror api_mode_error 82 #define yylval api_mode_lval 83 #define yychar api_mode_char 84 #define yydebug api_mode_debug 85 #define yynerrs api_mode_nerrs 86 #define yylloc api_mode_lloc 87 88 /* Copy the first part of user declarations. */ 89 90 /* Line 189 of yacc.c */ 91 #line 1 "api_grammar.y" 92 93 /* 94 * 95 * $Copyright: (c) 2011 Broadcom Corp. 96 * All Rights Reserved.$ 97 * 98 * File: api_grammar.y 99 * Purpose: API mode parser 100 */ 101 102 /* Line 189 of yacc.c */ 103 #line 15 "api_grammar.y" 104 105 #include "api_mode_yy.h" 106 extern void api_mode_error(yyltype *loc, yyscan_t yyscanner, 107 void *parser, char const *s); 108 109 110 /* Line 189 of yacc.c */ 111 #line 106 "api_grammar.tab.c" 112 113 /* Enabling traces. */ 114 #ifndef YYDEBUG 115 # define YYDEBUG 1 116 #endif 117 118 /* Enabling verbose error messages. */ 119 #ifdef YYERROR_VERBOSE 120 # undef YYERROR_VERBOSE 121 # define YYERROR_VERBOSE 1 122 #else 123 # define YYERROR_VERBOSE 1 124 #endif 125 126 /* Enabling the token table. */ 127 #ifndef YYTOKEN_TABLE 128 # define YYTOKEN_TABLE 0 129 #endif 130 131 132 /* Tokens. */ 133 #ifndef YYTOKENTYPE 134 # define YYTOKENTYPE 135 /* Put the tokens into the symbol table, so that GDB and other debuggers 136 know about them. */ 137 enum yytokentype { 138 IDENT = 258, 139 KEY = 259, 140 CONSTANT = 260, 141 AGGREGATE = 261, 142 PROMPT = 262, 143 EMPTY = 263, 144 KEY_VALUE = 264, 145 RANGE = 265, 146 ITEM = 266, 147 ASSIGN = 267, 148 VALUE = 268, 149 PRINT = 269, 150 VAR = 270, 151 CREATE = 271 152 }; 153 #endif 154 155 156 157 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 158 typedef int YYSTYPE; 159 # define YYSTYPE_IS_TRIVIAL 1 160 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ 161 # define YYSTYPE_IS_DECLARED 1 162 #endif 163 164 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED 165 typedef struct YYLTYPE 166 { 167 int first_line; 168 int first_column; 169 int last_line; 170 int last_column; 171 } YYLTYPE; 172 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */ 173 # define YYLTYPE_IS_DECLARED 1 174 # define YYLTYPE_IS_TRIVIAL 1 175 #endif 176 177 #ifndef YYPUSH_DECLS 178 # define YYPUSH_DECLS 179 struct yypstate; 180 typedef struct yypstate yypstate; 181 enum { YYPUSH_MORE = 4 }; 182 183 #if defined __STDC__ || defined __cplusplus 184 int yyparse (yyscan_t yyscanner, void *parser); 185 #else 186 int yyparse (); 187 #endif 188 #if defined __STDC__ || defined __cplusplus 189 int yypush_parse (yypstate *yyps, int yypushed_char, YYSTYPE const *yypushed_val, YYLTYPE const *yypushed_loc, yyscan_t yyscanner, void *parser); 190 #else 191 int yypush_parse (); 192 #endif 193 #if defined __STDC__ || defined __cplusplus 194 int yypull_parse (yypstate *yyps, yyscan_t yyscanner, void *parser); 195 #else 196 int yypull_parse (); 197 #endif 198 #if defined __STDC__ || defined __cplusplus 199 yypstate * yypstate_new (void); 200 #else 201 yypstate * yypstate_new (); 202 #endif 203 #if defined __STDC__ || defined __cplusplus 204 void yypstate_delete (yypstate *yyps); 205 #else 206 void yypstate_delete (); 207 #endif 208 #endif 209 210 211 /* Copy the second part of user declarations. */ 212 213 214 /* Line 264 of yacc.c */ 215 #line 210 "api_grammar.tab.c" 216 217 #ifdef short 218 # undef short 219 #endif 220 221 #ifdef YYTYPE_UINT8 222 typedef YYTYPE_UINT8 yytype_uint8; 223 #else 224 typedef unsigned char yytype_uint8; 225 #endif 226 227 #ifdef YYTYPE_INT8 228 typedef YYTYPE_INT8 yytype_int8; 229 #elif (defined __STDC__ || defined __C99__FUNC__ \ 230 || defined __cplusplus || defined _MSC_VER) 231 typedef signed char yytype_int8; 232 #else 233 typedef short int yytype_int8; 234 #endif 235 236 #ifdef YYTYPE_UINT16 237 typedef YYTYPE_UINT16 yytype_uint16; 238 #else 239 typedef unsigned short int yytype_uint16; 240 #endif 241 242 #ifdef YYTYPE_INT16 243 typedef YYTYPE_INT16 yytype_int16; 244 #else 245 typedef short int yytype_int16; 246 #endif 247 248 #ifndef YYSIZE_T 249 # ifdef __SIZE_TYPE__ 250 # define YYSIZE_T __SIZE_TYPE__ 251 # elif defined size_t 252 # define YYSIZE_T size_t 253 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 254 || defined __cplusplus || defined _MSC_VER) 255 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 256 # define YYSIZE_T size_t 257 # else 258 # define YYSIZE_T unsigned int 259 # endif 260 #endif 261 262 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 263 264 #ifndef YY_ 265 # if YYENABLE_NLS 266 # if ENABLE_NLS 267 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 268 # define YY_(msgid) dgettext ("bison-runtime", msgid) 269 # endif 270 # endif 271 # ifndef YY_ 272 # define YY_(msgid) msgid 273 # endif 274 #endif 275 276 /* Suppress unused-variable warnings by "using" E. */ 277 #if ! defined lint || defined __GNUC__ 278 # define YYUSE(e) ((void) (e)) 279 #else 280 # define YYUSE(e) /* empty */ 281 #endif 282 283 /* Identity function, used to suppress warnings about constant conditions. */ 284 #ifndef lint 285 # define YYID(n) (n) 286 #else 287 #if (defined __STDC__ || defined __C99__FUNC__ \ 288 || defined __cplusplus || defined _MSC_VER) 289 static int 290 YYID (int yyi) 291 #else 292 static int 293 YYID (yyi) 294 int yyi; 295 #endif 296 { 297 return yyi; 298 } 299 #endif 300 301 #if ! defined yyoverflow || YYERROR_VERBOSE 302 303 # ifdef YYSTACK_ALLOC 304 /* Pacify GCC's `empty if-body' warning. */ 305 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) 306 # ifndef YYSTACK_ALLOC_MAXIMUM 307 /* The OS might guarantee only one guard page at the bottom of the stack, 308 and a page size can be as small as 4096 bytes. So we cannot safely 309 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 310 to allow for a few compiler-allocated temporary stack slots. */ 311 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 312 # endif 313 # else 314 # define YYSTACK_ALLOC YYMALLOC 315 # define YYSTACK_FREE YYFREE 316 # ifndef YYSTACK_ALLOC_MAXIMUM 317 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 318 # endif 319 # if (! defined _STDLIB_H \ 320 && ! ((defined YYMALLOC || defined malloc) \ 321 && (defined YYFREE || defined free))) 322 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 323 # ifndef _STDLIB_H 324 # define _STDLIB_H 1 325 # endif 326 # endif 327 # ifndef YYMALLOC 328 # define YYMALLOC malloc 329 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 330 || defined __cplusplus || defined _MSC_VER) 331 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 332 # endif 333 # endif 334 # ifndef YYFREE 335 # define YYFREE free 336 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 337 || defined __cplusplus || defined _MSC_VER) 338 void free (void *); /* INFRINGES ON USER NAME SPACE */ 339 # endif 340 # endif 341 # endif 342 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 343 344 345 #if (! defined yyoverflow \ 346 && (! defined __cplusplus \ 347 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ 348 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 349 350 /* A type that is properly aligned for any stack member. */ 351 union yyalloc 352 { 353 yytype_int16 yyss_alloc; 354 YYSTYPE yyvs_alloc; 355 YYLTYPE yyls_alloc; 356 }; 357 358 /* The size of the maximum gap between one aligned stack and the next. */ 359 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 360 361 /* The size of an array large to enough to hold all stacks, each with 362 N elements. */ 363 # define YYSTACK_BYTES(N) \ 364 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ 365 + 2 * YYSTACK_GAP_MAXIMUM) 366 367 /* Copy COUNT objects from FROM to TO. The source and destination do 368 not overlap. */ 369 # ifndef YYCOPY 370 # if defined __GNUC__ && 1 < __GNUC__ 371 # define YYCOPY(To, From, Count) \ 372 __builtin_memcpy (To, From, (Count) * sizeof (*(From))) 373 # else 374 # define YYCOPY(To, From, Count) \ 375 do \ 376 { \ 377 YYSIZE_T yyi; \ 378 for (yyi = 0; yyi < (Count); yyi++) \ 379 (To)[yyi] = (From)[yyi]; \ 380 } \ 381 while (YYID (0)) 382 # endif 383 # endif 384 385 /* Relocate STACK from its old location to the new one. The 386 local variables YYSIZE and YYSTACKSIZE give the old and new number of 387 elements in the stack, and YYPTR gives the new location of the 388 stack. Advance YYPTR to a properly aligned location for the next 389 stack. */ 390 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ 391 do \ 392 { \ 393 YYSIZE_T yynewbytes; \ 394 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ 395 Stack = &yyptr->Stack_alloc; \ 396 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 397 yyptr += yynewbytes / sizeof (*yyptr); \ 398 } \ 399 while (YYID (0)) 400 401 #endif 402 403 /* YYFINAL -- State number of the termination state. */ 404 #define YYFINAL 18 405 /* YYLAST -- Last index in YYTABLE. */ 406 #define YYLAST 72 407 408 /* YYNTOKENS -- Number of terminals. */ 409 #define YYNTOKENS 28 410 /* YYNNTS -- Number of nonterminals. */ 411 #define YYNNTS 16 412 /* YYNRULES -- Number of rules. */ 413 #define YYNRULES 43 414 /* YYNRULES -- Number of states. */ 415 #define YYNSTATES 65 416 417 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 418 #define YYUNDEFTOK 2 419 #define YYMAXUTOK 271 420 421 #define YYTRANSLATE(YYX) \ 422 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 423 424 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 425 static const yytype_uint8 yytranslate[] = 426 { 427 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 428 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 429 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 430 2, 2, 2, 19, 2, 2, 2, 2, 2, 2, 431 2, 2, 23, 2, 25, 22, 21, 24, 2, 2, 432 2, 2, 2, 2, 2, 2, 2, 2, 2, 18, 433 2, 3, 2, 20, 2, 2, 2, 2, 2, 2, 434 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 435 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 436 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 437 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 438 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 439 2, 2, 2, 26, 2, 27, 2, 2, 2, 2, 440 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 441 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 442 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 443 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 444 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 445 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 446 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 447 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 448 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 449 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 450 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 451 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 452 2, 2, 2, 2, 2, 2, 1, 2, 4, 5, 453 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 454 16, 17 455 }; 456 457 #if YYDEBUG 458 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 459 YYRHS. */ 460 static const yytype_uint8 yyprhs[] = 461 { 462 0, 0, 3, 5, 9, 11, 13, 16, 19, 22, 463 26, 31, 35, 37, 40, 43, 46, 48, 51, 53, 464 57, 59, 62, 64, 67, 69, 72, 74, 78, 82, 465 88, 94, 96, 100, 102, 105, 109, 111, 113, 115, 466 119, 121, 123, 125 467 }; 468 469 /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 470 static const yytype_int8 yyrhs[] = 471 { 472 29, 0, -1, 30, -1, 29, 18, 30, -1, 31, 473 -1, 19, -1, 19, 31, -1, 32, 20, -1, 15, 474 34, -1, 17, 32, 35, -1, 16, 34, 3, 41, 475 -1, 16, 33, 8, -1, 32, -1, 32, 8, -1, 476 32, 36, -1, 32, 39, -1, 4, -1, 32, 4, 477 -1, 4, -1, 33, 21, 4, -1, 33, -1, 34, 478 33, -1, 5, -1, 35, 5, -1, 41, -1, 36, 479 41, -1, 12, -1, 12, 22, 12, -1, 12, 23, 480 6, -1, 12, 22, 12, 24, 6, -1, 12, 23, 481 12, 24, 6, -1, 37, -1, 38, 25, 37, -1, 482 40, -1, 39, 40, -1, 5, 3, 41, -1, 6, 483 -1, 14, -1, 42, -1, 26, 43, 27, -1, 38, 484 -1, 39, -1, 36, -1, 3, -1 485 }; 486 487 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 488 static const yytype_uint8 yyrline[] = 489 { 490 0, 53, 53, 55, 60, 61, 62, 64, 66, 68, 491 70, 72, 77, 78, 80, 82, 87, 89, 94, 96, 492 101, 103, 108, 110, 115, 117, 122, 123, 125, 127, 493 129, 134, 136, 141, 143, 148, 153, 154, 155, 159, 494 161, 166, 167, 168 495 }; 496 #endif 497 498 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 499 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 500 First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 501 static const char *const yytname[] = 502 { 503 "$end", "error", "$undefined", "'='", "IDENT", "KEY", "CONSTANT", 504 "AGGREGATE", "PROMPT", "EMPTY", "KEY_VALUE", "RANGE", "ITEM", "ASSIGN", 505 "VALUE", "PRINT", "VAR", "CREATE", "';'", "'!'", "'?'", "'.'", "'-'", 506 "'*'", "'/'", "','", "'{'", "'}'", "$accept", "statements", "statement", 507 "executable", "identifiers", "selectors", "selector_list", "keys", 508 "positional_arguments", "positional_item", "positional_list", 509 "keyword_arguments", "keyword_argument", "argument", "aggregate", 510 "aggregate_arguments", 0 511 }; 512 #endif 513 514 # ifdef YYPRINT 515 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 516 token YYLEX-NUM. */ 517 static const yytype_uint16 yytoknum[] = 518 { 519 0, 256, 257, 61, 258, 259, 260, 261, 262, 263, 520 264, 265, 266, 267, 268, 269, 270, 271, 59, 33, 521 63, 46, 45, 42, 47, 44, 123, 125 522 }; 523 # endif 524 525 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 526 static const yytype_uint8 yyr1[] = 527 { 528 0, 28, 29, 29, 30, 30, 30, 30, 30, 30, 529 30, 30, 31, 31, 31, 31, 32, 32, 33, 33, 530 34, 34, 35, 35, 36, 36, 37, 37, 37, 37, 531 37, 38, 38, 39, 39, 40, 41, 41, 41, 42, 532 42, 43, 43, 43 533 }; 534 535 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 536 static const yytype_uint8 yyr2[] = 537 { 538 0, 2, 1, 3, 1, 1, 2, 2, 2, 3, 539 4, 3, 1, 2, 2, 2, 1, 2, 1, 3, 540 1, 2, 1, 2, 1, 2, 1, 3, 3, 5, 541 5, 1, 3, 1, 2, 3, 1, 1, 1, 3, 542 1, 1, 1, 1 543 }; 544 545 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state 546 STATE-NUM when YYTABLE doesn't specify something else to do. Zero 547 means the default is an error. */ 548 static const yytype_uint8 yydefact[] = 549 { 550 0, 16, 0, 0, 0, 5, 0, 2, 4, 12, 551 18, 20, 8, 20, 0, 0, 6, 12, 1, 0, 552 17, 0, 36, 13, 26, 37, 7, 0, 14, 31, 553 40, 15, 33, 24, 38, 0, 21, 11, 0, 22, 554 9, 3, 0, 0, 0, 43, 42, 41, 0, 25, 555 0, 34, 19, 10, 23, 35, 27, 28, 0, 39, 556 32, 0, 0, 29, 30 557 }; 558 559 /* YYDEFGOTO[NTERM-NUM]. */ 560 static const yytype_int8 yydefgoto[] = 561 { 562 -1, 6, 7, 8, 9, 36, 12, 40, 28, 29, 563 30, 31, 32, 33, 34, 48 564 }; 565 566 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 567 STATE-NUM. */ 568 #define YYPACT_NINF -19 569 static const yytype_int8 yypact[] = 570 { 571 30, -19, 6, 6, 31, 31, 15, -19, -19, 0, 572 -19, 34, 6, 20, 28, 33, -19, 13, -19, 30, 573 -19, 47, -19, -19, 29, -19, -19, -3, 10, -19, 574 32, 53, -19, -19, -19, 52, 34, -19, 10, -19, 575 54, -19, 10, 48, -5, -19, 10, 53, 35, -19, 576 49, -19, -19, -19, -19, -19, 39, -19, 40, -19, 577 -19, 59, 60, -19, -19 578 }; 579 580 /* YYPGOTO[NTERM-NUM]. */ 581 static const yytype_int8 yypgoto[] = 582 { 583 -19, -19, 50, 62, 38, 51, 65, -19, 43, 21, 584 -19, 45, -18, 2, -19, -19 585 }; 586 587 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 588 positive, shift that token. If negative, reduce the rule which 589 number is the opposite. If zero, do what YYDEFACT says. 590 If YYTABLE_NINF, syntax error. */ 591 #define YYTABLE_NINF -1 592 static const yytype_uint8 yytable[] = 593 { 594 45, 57, 21, 22, 20, 21, 22, 58, 23, 24, 595 10, 25, 24, 51, 25, 18, 22, 20, 21, 22, 596 26, 23, 24, 27, 25, 24, 27, 25, 37, 51, 597 49, 38, 10, 19, 1, 1, 27, 20, 39, 27, 598 53, 35, 15, 17, 55, 2, 3, 4, 49, 5, 599 42, 43, 44, 11, 13, 35, 52, 50, 21, 54, 600 56, 24, 59, 61, 62, 63, 64, 16, 14, 41, 601 46, 60, 47 602 }; 603 604 static const yytype_uint8 yycheck[] = 605 { 606 3, 6, 5, 6, 4, 5, 6, 12, 8, 12, 607 4, 14, 12, 31, 14, 0, 6, 4, 5, 6, 608 20, 8, 12, 26, 14, 12, 26, 14, 8, 47, 609 28, 3, 4, 18, 4, 4, 26, 4, 5, 26, 610 38, 21, 4, 5, 42, 15, 16, 17, 46, 19, 611 3, 22, 23, 2, 3, 21, 4, 25, 5, 5, 612 12, 12, 27, 24, 24, 6, 6, 5, 3, 19, 613 27, 50, 27 614 }; 615 616 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 617 symbol of state STATE-NUM. */ 618 static const yytype_uint8 yystos[] = 619 { 620 0, 4, 15, 16, 17, 19, 29, 30, 31, 32, 621 4, 33, 34, 33, 34, 32, 31, 32, 0, 18, 622 4, 5, 6, 8, 12, 14, 20, 26, 36, 37, 623 38, 39, 40, 41, 42, 21, 33, 8, 3, 5, 624 35, 30, 3, 22, 23, 3, 36, 39, 43, 41, 625 25, 40, 4, 41, 5, 41, 12, 6, 12, 27, 626 37, 24, 24, 6, 6 627 }; 628 629 #define yyerrok (yyerrstatus = 0) 630 #define yyclearin (yychar = YYEMPTY) 631 #define YYEMPTY (-2) 632 #define YYEOF 0 633 634 #define YYACCEPT goto yyacceptlab 635 #define YYABORT goto yyabortlab 636 #define YYERROR goto yyerrorlab 637 638 639 /* Like YYERROR except do call yyerror. This remains here temporarily 640 to ease the transition to the new meaning of YYERROR, for GCC. 641 Once GCC version 2 has supplanted version 1, this can go. */ 642 643 #define YYFAIL goto yyerrlab 644 645 #define YYRECOVERING() (!!yyerrstatus) 646 647 #define YYBACKUP(Token, Value) \ 648 do \ 649 if (yychar == YYEMPTY && yylen == 1) \ 650 { \ 651 yychar = (Token); \ 652 yylval = (Value); \ 653 yytoken = YYTRANSLATE (yychar); \ 654 YYPOPSTACK (1); \ 655 goto yybackup; \ 656 } \ 657 else \ 658 { \ 659 yyerror (&yylloc, yyscanner, parser, YY_("syntax error: cannot back up")); \ 660 YYERROR; \ 661 } \ 662 while (YYID (0)) 663 664 665 #define YYTERROR 1 666 #define YYERRCODE 256 667 668 669 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 670 If N is 0, then set CURRENT to the empty location which ends 671 the previous symbol: RHS[0] (always defined). */ 672 673 #define YYRHSLOC(Rhs, K) ((Rhs)[K]) 674 #ifndef YYLLOC_DEFAULT 675 # define YYLLOC_DEFAULT(Current, Rhs, N) \ 676 do \ 677 if (YYID (N)) \ 678 { \ 679 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 680 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 681 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 682 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 683 } \ 684 else \ 685 { \ 686 (Current).first_line = (Current).last_line = \ 687 YYRHSLOC (Rhs, 0).last_line; \ 688 (Current).first_column = (Current).last_column = \ 689 YYRHSLOC (Rhs, 0).last_column; \ 690 } \ 691 while (YYID (0)) 692 #endif 693 694 695 /* YY_LOCATION_PRINT -- Print the location on the stream. 696 This macro was not mandated originally: define only if we know 697 we won't break user code: when these are the locations we know. */ 698 699 #ifndef YY_LOCATION_PRINT 700 # if YYLTYPE_IS_TRIVIAL 701 # define YY_LOCATION_PRINT(File, Loc) \ 702 fprintf (File, "%d.%d-%d.%d", \ 703 (Loc).first_line, (Loc).first_column, \ 704 (Loc).last_line, (Loc).last_column) 705 # else 706 # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 707 # endif 708 #endif 709 710 711 /* YYLEX -- calling `yylex' with the right arguments. */ 712 713 #ifdef YYLEX_PARAM 714 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) 715 #else 716 # define YYLEX yylex (&yylval, &yylloc, yyscanner) 717 #endif 718 719 /* Enable debugging if requested. */ 720 #if YYDEBUG 721 722 # ifndef YYFPRINTF 723 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 724 # define YYFPRINTF fprintf 725 # endif 726 727 # define YYDPRINTF(Args) \ 728 do { \ 729 if (yydebug) \ 730 YYFPRINTF Args; \ 731 } while (YYID (0)) 732 733 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 734 do { \ 735 if (yydebug) \ 736 { \ 737 YYFPRINTF (stderr, "%s ", Title); \ 738 yy_symbol_print (stderr, \ 739 Type, Value, Location, yyscanner, parser); \ 740 YYFPRINTF (stderr, "\n"); \ 741 } \ 742 } while (YYID (0)) 743 744 745 /*--------------------------------. 746 | Print this symbol on YYOUTPUT. | 747 `--------------------------------*/ 748 749 /*ARGSUSED*/ 750 #if (defined __STDC__ || defined __C99__FUNC__ \ 751 || defined __cplusplus || defined _MSC_VER) 752 static void 753 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, yyscan_t yyscanner, void *parser) 754 #else 755 static void 756 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner, parser) 757 FILE *yyoutput; 758 int yytype; 759 YYSTYPE const * const yyvaluep; 760 YYLTYPE const * const yylocationp; 761 yyscan_t yyscanner; 762 void *parser; 763 #endif 764 { 765 if (!yyvaluep) 766 return; 767 YYUSE (yylocationp); 768 YYUSE (yyscanner); 769 YYUSE (parser); 770 # ifdef YYPRINT 771 if (yytype < YYNTOKENS) 772 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 773 # else 774 YYUSE (yyoutput); 775 # endif 776 switch (yytype) 777 { 778 default: 779 break; 780 } 781 } 782 783 784 /*--------------------------------. 785 | Print this symbol on YYOUTPUT. | 786 `--------------------------------*/ 787 788 #if (defined __STDC__ || defined __C99__FUNC__ \ 789 || defined __cplusplus || defined _MSC_VER) 790 static void 791 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, yyscan_t yyscanner, void *parser) 792 #else 793 static void 794 yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner, parser) 795 FILE *yyoutput; 796 int yytype; 797 YYSTYPE const * const yyvaluep; 798 YYLTYPE const * const yylocationp; 799 yyscan_t yyscanner; 800 void *parser; 801 #endif 802 { 803 if (yytype < YYNTOKENS) 804 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 805 else 806 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 807 808 YY_LOCATION_PRINT (yyoutput, *yylocationp); 809 YYFPRINTF (yyoutput, ": "); 810 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, yyscanner, parser); 811 YYFPRINTF (yyoutput, ")"); 812 } 813 814 /*------------------------------------------------------------------. 815 | yy_stack_print -- Print the state stack from its BOTTOM up to its | 816 | TOP (included). | 817 `------------------------------------------------------------------*/ 818 819 #if (defined __STDC__ || defined __C99__FUNC__ \ 820 || defined __cplusplus || defined _MSC_VER) 821 static void 822 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) 823 #else 824 static void 825 yy_stack_print (yybottom, yytop) 826 yytype_int16 *yybottom; 827 yytype_int16 *yytop; 828 #endif 829 { 830 YYFPRINTF (stderr, "Stack now"); 831 for (; yybottom <= yytop; yybottom++) 832 { 833 int yybot = *yybottom; 834 YYFPRINTF (stderr, " %d", yybot); 835 } 836 YYFPRINTF (stderr, "\n"); 837 } 838 839 # define YY_STACK_PRINT(Bottom, Top) \ 840 do { \ 841 if (yydebug) \ 842 yy_stack_print ((Bottom), (Top)); \ 843 } while (YYID (0)) 844 845 846 /*------------------------------------------------. 847 | Report that the YYRULE is going to be reduced. | 848 `------------------------------------------------*/ 849 850 #if (defined __STDC__ || defined __C99__FUNC__ \ 851 || defined __cplusplus || defined _MSC_VER) 852 static void 853 yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, yyscan_t yyscanner, void *parser) 854 #else 855 static void 856 yy_reduce_print (yyvsp, yylsp, yyrule, yyscanner, parser) 857 YYSTYPE *yyvsp; 858 YYLTYPE *yylsp; 859 int yyrule; 860 yyscan_t yyscanner; 861 void *parser; 862 #endif 863 { 864 int yynrhs = yyr2[yyrule]; 865 int yyi; 866 unsigned long int yylno = yyrline[yyrule]; 867 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 868 yyrule - 1, yylno); 869 /* The symbols being reduced. */ 870 for (yyi = 0; yyi < yynrhs; yyi++) 871 { 872 YYFPRINTF (stderr, " $%d = ", yyi + 1); 873 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 874 &(yyvsp[(yyi + 1) - (yynrhs)]) 875 , &(yylsp[(yyi + 1) - (yynrhs)]) , yyscanner, parser); 876 YYFPRINTF (stderr, "\n"); 877 } 878 } 879 880 # define YY_REDUCE_PRINT(Rule) \ 881 do { \ 882 if (yydebug) \ 883 yy_reduce_print (yyvsp, yylsp, Rule, yyscanner, parser); \ 884 } while (YYID (0)) 885 886 /* Nonzero means print parse trace. It is left uninitialized so that 887 multiple parsers can coexist. */ 888 int yydebug; 889 #else /* !YYDEBUG */ 890 # define YYDPRINTF(Args) 891 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) 892 # define YY_STACK_PRINT(Bottom, Top) 893 # define YY_REDUCE_PRINT(Rule) 894 #endif /* !YYDEBUG */ 895 896 897 /* YYINITDEPTH -- initial size of the parser's stacks. */ 898 #ifndef YYINITDEPTH 899 # define YYINITDEPTH 200 900 #endif 901 902 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 903 if the built-in stack extension method is used). 904 905 Do not make this value too large; the results are undefined if 906 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 907 evaluated with infinite-precision integer arithmetic. */ 908 909 #ifndef YYMAXDEPTH 910 # define YYMAXDEPTH 10000 911 #endif 912 913 914 915 #if YYERROR_VERBOSE 916 917 # ifndef yystrlen 918 # if defined __GLIBC__ && defined _STRING_H 919 # define yystrlen strlen 920 # else 921 /* Return the length of YYSTR. */ 922 #if (defined __STDC__ || defined __C99__FUNC__ \ 923 || defined __cplusplus || defined _MSC_VER) 924 static YYSIZE_T 925 yystrlen (const char *yystr) 926 #else 927 static YYSIZE_T 928 yystrlen (yystr) 929 const char *yystr; 930 #endif 931 { 932 YYSIZE_T yylen; 933 for (yylen = 0; yystr[yylen]; yylen++) 934 continue; 935 return yylen; 936 } 937 # endif 938 # endif 939 940 # ifndef yystpcpy 941 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 942 # define yystpcpy stpcpy 943 # else 944 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 945 YYDEST. */ 946 #if (defined __STDC__ || defined __C99__FUNC__ \ 947 || defined __cplusplus || defined _MSC_VER) 948 static char * 949 yystpcpy (char *yydest, const char *yysrc) 950 #else 951 static char * 952 yystpcpy (yydest, yysrc) 953 char *yydest; 954 const char *yysrc; 955 #endif 956 { 957 char *yyd = yydest; 958 const char *yys = yysrc; 959 960 while ((*yyd++ = *yys++) != '\0') 961 continue; 962 963 return yyd - 1; 964 } 965 # endif 966 # endif 967 968 # ifndef yytnamerr 969 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary 970 quotes and backslashes, so that it's suitable for yyerror. The 971 heuristic is that double-quoting is unnecessary unless the string 972 contains an apostrophe, a comma, or backslash (other than 973 backslash-backslash). YYSTR is taken from yytname. If YYRES is 974 null, do not copy; instead, return the length of what the result 975 would have been. */ 976 static YYSIZE_T 977 yytnamerr (char *yyres, const char *yystr) 978 { 979 if (*yystr == '"') 980 { 981 YYSIZE_T yyn = 0; 982 char const *yyp = yystr; 983 984 for (;;) 985 switch (*++yyp) 986 { 987 case '\'': 988 case ',': 989 goto do_not_strip_quotes; 990 991 case '\\': 992 if (*++yyp != '\\') 993 goto do_not_strip_quotes; 994 /* Fall through. */ 995 default: 996 if (yyres) 997 yyres[yyn] = *yyp; 998 yyn++; 999 break; 1000 1001 case '"': 1002 if (yyres) 1003 yyres[yyn] = '\0'; 1004 return yyn; 1005 } 1006 do_not_strip_quotes: ; 1007 } 1008 1009 if (! yyres) 1010 return yystrlen (yystr); 1011 1012 return yystpcpy (yyres, yystr) - yyres; 1013 } 1014 # endif 1015 1016 /* Copy into YYRESULT an error message about the unexpected token 1017 YYCHAR while in state YYSTATE. Return the number of bytes copied, 1018 including the terminating null byte. If YYRESULT is null, do not 1019 copy anything; just return the number of bytes that would be 1020 copied. As a special case, return 0 if an ordinary "syntax error" 1021 message will do. Return YYSIZE_MAXIMUM if overflow occurs during 1022 size calculation. */ 1023 static YYSIZE_T 1024 yysyntax_error (char *yyresult, int yystate, int yychar) 1025 { 1026 int yyn = yypact[yystate]; 1027 1028 if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) 1029 return 0; 1030 else 1031 { 1032 int yytype = YYTRANSLATE (yychar); 1033 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); 1034 YYSIZE_T yysize = yysize0; 1035 YYSIZE_T yysize1; 1036 int yysize_overflow = 0; 1037 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 1038 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 1039 int yyx; 1040 1041 # if 0 1042 /* This is so xgettext sees the translatable formats that are 1043 constructed on the fly. */ 1044 YY_("syntax error, unexpected %s"); 1045 YY_("syntax error, unexpected %s, expecting %s"); 1046 YY_("syntax error, unexpected %s, expecting %s or %s"); 1047 YY_("syntax error, unexpected %s, expecting %s or %s or %s"); 1048 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); 1049 # endif 1050 char *yyfmt; 1051 char const *yyf; 1052 static char const yyunexpected[] = "syntax error, unexpected %s"; 1053 static char const yyexpecting[] = ", expecting %s"; 1054 static char const yyor[] = " or %s"; 1055 char yyformat[sizeof yyunexpected 1056 + sizeof yyexpecting - 1 1057 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) 1058 * (sizeof yyor - 1))]; 1059 char const *yyprefix = yyexpecting; 1060 1061 /* Start YYX at -YYN if negative to avoid negative indexes in 1062 YYCHECK. */ 1063 int yyxbegin = yyn < 0 ? -yyn : 0; 1064 1065 /* Stay within bounds of both yycheck and yytname. */ 1066 int yychecklim = YYLAST - yyn + 1; 1067 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 1068 int yycount = 1; 1069 1070 yyarg[0] = yytname[yytype]; 1071 yyfmt = yystpcpy (yyformat, yyunexpected); 1072 1073 for (yyx = yyxbegin; yyx < yyxend; ++yyx) 1074 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) 1075 { 1076 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 1077 { 1078 yycount = 1; 1079 yysize = yysize0; 1080 yyformat[sizeof yyunexpected - 1] = '\0'; 1081 break; 1082 } 1083 yyarg[yycount++] = yytname[yyx]; 1084 yysize1 = yysize + yytnamerr (0, yytname[yyx]); 1085 yysize_overflow |= (yysize1 < yysize); 1086 yysize = yysize1; 1087 yyfmt = yystpcpy (yyfmt, yyprefix); 1088 yyprefix = yyor; 1089 } 1090 1091 yyf = YY_(yyformat); 1092 yysize1 = yysize + yystrlen (yyf); 1093 yysize_overflow |= (yysize1 < yysize); 1094 yysize = yysize1; 1095 1096 if (yysize_overflow) 1097 return YYSIZE_MAXIMUM; 1098 1099 if (yyresult) 1100 { 1101 /* Avoid sprintf, as that infringes on the user's name space. 1102 Don't have undefined behavior even if the translation 1103 produced a string with the wrong number of "%s"s. */ 1104 char *yyp = yyresult; 1105 int yyi = 0; 1106 while ((*yyp = *yyf) != '\0') 1107 { 1108 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) 1109 { 1110 yyp += yytnamerr (yyp, yyarg[yyi++]); 1111 yyf += 2; 1112 } 1113 else 1114 { 1115 yyp++; 1116 yyf++; 1117 } 1118 } 1119 } 1120 return yysize; 1121 } 1122 } 1123 #endif /* YYERROR_VERBOSE */ 1124 1125 1126 /*-----------------------------------------------. 1127 | Release the memory associated to this symbol. | 1128 `-----------------------------------------------*/ 1129 1130 /*ARGSUSED*/ 1131 #if (defined __STDC__ || defined __C99__FUNC__ \ 1132 || defined __cplusplus || defined _MSC_VER) 1133 static void 1134 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, yyscan_t yyscanner, void *parser) 1135 #else 1136 static void 1137 yydestruct (yymsg, yytype, yyvaluep, yylocationp, yyscanner, parser) 1138 const char *yymsg; 1139 int yytype; 1140 YYSTYPE *yyvaluep; 1141 YYLTYPE *yylocationp; 1142 yyscan_t yyscanner; 1143 void *parser; 1144 #endif 1145 { 1146 YYUSE (yyvaluep); 1147 YYUSE (yylocationp); 1148 YYUSE (yyscanner); 1149 YYUSE (parser); 1150 1151 if (!yymsg) 1152 yymsg = "Deleting"; 1153 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 1154 1155 switch (yytype) 1156 { 1157 1158 default: 1159 break; 1160 } 1161 } 1162 1163 1164 1165 1166 1167 1168 struct yypstate 1169 { 1170 /* Number of syntax errors so far. */ 1171 int yynerrs; 1172 1173 int yystate; 1174 /* Number of tokens to shift before error messages enabled. */ 1175 int yyerrstatus; 1176 1177 /* The stacks and their tools: 1178 `yyss': related to states. 1179 `yyvs': related to semantic values. 1180 `yyls': related to locations. 1181 1182 Refer to the stacks thru separate pointers, to allow yyoverflow 1183 to reallocate them elsewhere. */ 1184 1185 /* The state stack. */ 1186 yytype_int16 yyssa[YYINITDEPTH]; 1187 yytype_int16 *yyss; 1188 yytype_int16 *yyssp; 1189 1190 /* The semantic value stack. */ 1191 YYSTYPE yyvsa[YYINITDEPTH]; 1192 YYSTYPE *yyvs; 1193 YYSTYPE *yyvsp; 1194 1195 /* The location stack. */ 1196 YYLTYPE yylsa[YYINITDEPTH]; 1197 YYLTYPE *yyls; 1198 YYLTYPE *yylsp; 1199 1200 /* The locations where the error started and ended. */ 1201 YYLTYPE yyerror_range[2]; 1202 1203 YYSIZE_T yystacksize; 1204 1205 /* Used to determine if this is the first time this instance has 1206 been used. */ 1207 int yynew; 1208 }; 1209 1210 #if (defined __STDC__ || defined __C99__FUNC__ \ 1211 || defined __cplusplus || defined _MSC_VER) 1212 int 1213 yyparse (yyscan_t yyscanner, void *parser) 1214 #else 1215 int 1216 yyparse (yyscanner, parser) 1217 yyscan_t yyscanner; 1218 void *parser; 1219 #endif 1220 { 1221 return yypull_parse (0, yyscanner, parser); 1222 } 1223 1224 #if (defined __STDC__ || defined __C99__FUNC__ \ 1225 || defined __cplusplus || defined _MSC_VER) 1226 int 1227 yypull_parse (yypstate *yyps, yyscan_t yyscanner, void *parser) 1228 #else 1229 int 1230 yypull_parse (yyps, yyscanner, parser) 1231 yypstate *yyps; 1232 yyscan_t yyscanner; 1233 void *parser; 1234 #endif 1235 { 1236 int yystatus; 1237 yypstate *yyps_local; 1238 int yychar; 1239 YYSTYPE yylval; 1240 YYLTYPE yylloc; 1241 if (yyps == 0) 1242 { 1243 yyps_local = yypstate_new (); 1244 if (!yyps_local) 1245 { 1246 yyerror (&yylloc, yyscanner, parser, YY_("memory exhausted")); 1247 return 2; 1248 } 1249 } 1250 else 1251 yyps_local = yyps; 1252 do { 1253 yychar = YYLEX; 1254 yystatus = 1255 yypush_parse (yyps_local, yychar, &yylval, &yylloc, yyscanner, parser); 1256 } while (yystatus == YYPUSH_MORE); 1257 if (yyps == 0) 1258 yypstate_delete (yyps_local); 1259 return yystatus; 1260 } 1261 1262 /* Initialize the parser data structure. */ 1263 #if (defined __STDC__ || defined __C99__FUNC__ \ 1264 || defined __cplusplus || defined _MSC_VER) 1265 yypstate * 1266 yypstate_new (void) 1267 #else 1268 yypstate * 1269 yypstate_new () 1270 1271 #endif 1272 { 1273 yypstate *yyps; 1274 yyps = (yypstate *) malloc (sizeof *yyps); 1275 if (!yyps) 1276 return 0; 1277 yyps->yynew = 1; 1278 return yyps; 1279 } 1280 1281 #if (defined __STDC__ || defined __C99__FUNC__ \ 1282 || defined __cplusplus || defined _MSC_VER) 1283 void 1284 yypstate_delete (yypstate *yyps) 1285 #else 1286 void 1287 yypstate_delete (yyps) 1288 yypstate *yyps; 1289 #endif 1290 { 1291 #ifndef yyoverflow 1292 /* If the stack was reallocated but the parse did not complete, then the 1293 stack still needs to be freed. */ 1294 if (!yyps->yynew && yyps->yyss != yyps->yyssa) 1295 YYSTACK_FREE (yyps->yyss); 1296 #endif 1297 free (yyps); 1298 } 1299 1300 #define api_mode_nerrs yyps->api_mode_nerrs 1301 #define yystate yyps->yystate 1302 #define yyerrstatus yyps->yyerrstatus 1303 #define yyssa yyps->yyssa 1304 #define yyss yyps->yyss 1305 #define yyssp yyps->yyssp 1306 #define yyvsa yyps->yyvsa 1307 #define yyvs yyps->yyvs 1308 #define yyvsp yyps->yyvsp 1309 #define yylsa yyps->yylsa 1310 #define yyls yyps->yyls 1311 #define yylsp yyps->yylsp 1312 #define yyerror_range yyps->yyerror_range 1313 #define yystacksize yyps->yystacksize 1314 1315 /*-------------------------. 1316 | yyparse or yypush_parse. | 1317 `-------------------------*/ 1318 1319 #if (defined __STDC__ || defined __C99__FUNC__ \ 1320 || defined __cplusplus || defined _MSC_VER) 1321 int 1322 yypush_parse (yypstate *yyps, int yypushed_char, YYSTYPE const *yypushed_val, YYLTYPE const *yypushed_loc, yyscan_t yyscanner, void *parser) 1323 #else 1324 int 1325 yypush_parse (yyps, yypushed_char, yypushed_val, yypushed_loc, yyscanner, parser) 1326 yypstate *yyps; 1327 int yypushed_char; 1328 YYSTYPE const *yypushed_val; 1329 YYLTYPE const *yypushed_loc; 1330 yyscan_t yyscanner; 1331 void *parser; 1332 #endif 1333 { 1334 /* The lookahead symbol. */ 1335 int yychar; 1336 1337 /* The semantic value of the lookahead symbol. */ 1338 YYSTYPE yylval; 1339 1340 /* Location data for the lookahead symbol. */ 1341 YYLTYPE yylloc; 1342 1343 1344 int yyn; 1345 int yyresult; 1346 /* Lookahead token as an internal (translated) token number. */ 1347 int yytoken; 1348 /* The variables used to return semantic value and location from the 1349 action routines. */ 1350 YYSTYPE yyval; 1351 YYLTYPE yyloc; 1352 1353 #if YYERROR_VERBOSE 1354 /* Buffer for error messages, and its allocated size. */ 1355 char yymsgbuf[128]; 1356 char *yymsg = yymsgbuf; 1357 YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 1358 #endif 1359 1360 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) 1361 1362 /* The number of symbols on the RHS of the reduced rule. 1363 Keep to zero when no symbol should be popped. */ 1364 int yylen = 0; 1365 1366 yylval = 0; 1367 if (!yyps->yynew) 1368 { 1369 yyn = yypact[yystate]; 1370 goto yyread_pushed_token; 1371 } 1372 1373 yytoken = 0; 1374 yyss = yyssa; 1375 yyvs = yyvsa; 1376 yyls = yylsa; 1377 yystacksize = YYINITDEPTH; 1378 1379 YYDPRINTF ((stderr, "Starting parse\n")); 1380 1381 yystate = 0; 1382 yyerrstatus = 0; 1383 yynerrs = 0; 1384 yychar = YYEMPTY; /* Cause a token to be read. */ 1385 1386 /* Initialize stack pointers. 1387 Waste one element of value and location stack 1388 so that they stay on the same level as the state stack. 1389 The wasted elements are never initialized. */ 1390 yyssp = yyss; 1391 yyvsp = yyvs; 1392 yylsp = yyls; 1393 1394 #if YYLTYPE_IS_TRIVIAL 1395 /* Initialize the default location before parsing starts. */ 1396 yylloc.first_line = yylloc.last_line = 1; 1397 yylloc.first_column = yylloc.last_column = 1; 1398 #endif 1399 1400 goto yysetstate; 1401 1402 /*------------------------------------------------------------. 1403 | yynewstate -- Push a new state, which is found in yystate. | 1404 `------------------------------------------------------------*/ 1405 yynewstate: 1406 /* In all cases, when you get here, the value and location stacks 1407 have just been pushed. So pushing a state here evens the stacks. */ 1408 yyssp++; 1409 1410 yysetstate: 1411 *yyssp = yystate; 1412 1413 if (yyss + yystacksize - 1 <= yyssp) 1414 { 1415 /* Get the current used size of the three stacks, in elements. */ 1416 YYSIZE_T yysize = yyssp - yyss + 1; 1417 1418 #ifdef yyoverflow 1419 { 1420 /* Give user a chance to reallocate the stack. Use copies of 1421 these so that the &'s don't force the real ones into 1422 memory. */ 1423 YYSTYPE *yyvs1 = yyvs; 1424 yytype_int16 *yyss1 = yyss; 1425 YYLTYPE *yyls1 = yyls; 1426 1427 /* Each stack pointer address is followed by the size of the 1428 data in use in that stack, in bytes. This used to be a 1429 conditional around just the two extra args, but that might 1430 be undefined if yyoverflow is a macro. */ 1431 yyoverflow (YY_("memory exhausted"), 1432 &yyss1, yysize * sizeof (*yyssp), 1433 &yyvs1, yysize * sizeof (*yyvsp), 1434 &yyls1, yysize * sizeof (*yylsp), 1435 &yystacksize); 1436 1437 yyls = yyls1; 1438 yyss = yyss1; 1439 yyvs = yyvs1; 1440 } 1441 #else /* no yyoverflow */ 1442 # ifndef YYSTACK_RELOCATE 1443 goto yyexhaustedlab; 1444 # else 1445 /* Extend the stack our own way. */ 1446 if (YYMAXDEPTH <= yystacksize) 1447 goto yyexhaustedlab; 1448 yystacksize *= 2; 1449 if (YYMAXDEPTH < yystacksize) 1450 yystacksize = YYMAXDEPTH; 1451 1452 { 1453 yytype_int16 *yyss1 = yyss; 1454 union yyalloc *yyptr = 1455 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 1456 if (! yyptr) 1457 goto yyexhaustedlab; 1458 YYSTACK_RELOCATE (yyss_alloc, yyss); 1459 YYSTACK_RELOCATE (yyvs_alloc, yyvs); 1460 YYSTACK_RELOCATE (yyls_alloc, yyls); 1461 # undef YYSTACK_RELOCATE 1462 if (yyss1 != yyssa) 1463 YYSTACK_FREE (yyss1); 1464 } 1465 # endif 1466 #endif /* no yyoverflow */ 1467 1468 yyssp = yyss + yysize - 1; 1469 yyvsp = yyvs + yysize - 1; 1470 yylsp = yyls + yysize - 1; 1471 1472 YYDPRINTF ((stderr, "Stack size increased to %lu\n", 1473 (unsigned long int) yystacksize)); 1474 1475 if (yyss + yystacksize - 1 <= yyssp) 1476 YYABORT; 1477 } 1478 1479 YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 1480 1481 if (yystate == YYFINAL) 1482 YYACCEPT; 1483 1484 goto yybackup; 1485 1486 /*-----------. 1487 | yybackup. | 1488 `-----------*/ 1489 yybackup: 1490 1491 /* Do appropriate processing given the current state. Read a 1492 lookahead token if we need one and don't already have one. */ 1493 1494 /* First try to decide what to do without reference to lookahead token. */ 1495 yyn = yypact[yystate]; 1496 if (yyn == YYPACT_NINF) 1497 goto yydefault; 1498 1499 /* Not known => get a lookahead token if don't already have one. */ 1500 1501 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ 1502 if (yychar == YYEMPTY) 1503 { 1504 if (!yyps->yynew) 1505 { 1506 YYDPRINTF ((stderr, "Return for a new token:\n")); 1507 yyresult = YYPUSH_MORE; 1508 goto yypushreturn; 1509 } 1510 yyps->yynew = 0; 1511 yyread_pushed_token: 1512 YYDPRINTF ((stderr, "Reading a token: ")); 1513 yychar = yypushed_char; 1514 if (yypushed_val) 1515 yylval = *yypushed_val; 1516 if (yypushed_loc) 1517 yylloc = *yypushed_loc; 1518 } 1519 1520 if (yychar <= YYEOF) 1521 { 1522 yychar = yytoken = YYEOF; 1523 YYDPRINTF ((stderr, "Now at end of input.\n")); 1524 } 1525 else 1526 { 1527 yytoken = YYTRANSLATE (yychar); 1528 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 1529 } 1530 1531 /* If the proper action on seeing token YYTOKEN is to reduce or to 1532 detect an error, take that action. */ 1533 yyn += yytoken; 1534 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 1535 goto yydefault; 1536 yyn = yytable[yyn]; 1537 if (yyn <= 0) 1538 { 1539 if (yyn == 0 || yyn == YYTABLE_NINF) 1540 goto yyerrlab; 1541 yyn = -yyn; 1542 goto yyreduce; 1543 } 1544 1545 /* Count tokens shifted since error; after three, turn off error 1546 status. */ 1547 if (yyerrstatus) 1548 yyerrstatus--; 1549 1550 /* Shift the lookahead token. */ 1551 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 1552 1553 /* Discard the shifted token. */ 1554 yychar = YYEMPTY; 1555 1556 yystate = yyn; 1557 *++yyvsp = yylval; 1558 *++yylsp = yylloc; 1559 goto yynewstate; 1560 1561 1562 /*-----------------------------------------------------------. 1563 | yydefault -- do the default action for the current state. | 1564 `-----------------------------------------------------------*/ 1565 yydefault: 1566 yyn = yydefact[yystate]; 1567 if (yyn == 0) 1568 goto yyerrlab; 1569 goto yyreduce; 1570 1571 1572 /*-----------------------------. 1573 | yyreduce -- Do a reduction. | 1574 `-----------------------------*/ 1575 yyreduce: 1576 /* yyn is the number of a rule to reduce with. */ 1577 yylen = yyr2[yyn]; 1578 1579 /* If YYLEN is nonzero, implement the default value of the action: 1580 `$$ = $1'. 1581 1582 Otherwise, the following line sets YYVAL to garbage. 1583 This behavior is undocumented and Bison 1584 users should not rely upon it. Assigning to YYVAL 1585 unconditionally makes the parser a bit smaller, and it avoids a 1586 GCC warning that YYVAL may be used uninitialized. */ 1587 yyval = yyvsp[1-yylen]; 1588 1589 /* Default location. */ 1590 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); 1591 YY_REDUCE_PRINT (yyn); 1592 switch (yyn) 1593 { 1594 case 2: 1595 1596 /* Line 1455 of yacc.c */ 1597 #line 54 "api_grammar.y" 1598 { api_mode_execute(parser, (yyvsp[(1) - (1)])); YYACCEPT; ;} 1599 break; 1600 1601 case 3: 1602 1603 /* Line 1455 of yacc.c */ 1604 #line 56 "api_grammar.y" 1605 { (yyval) = api_mode_append((yyvsp[(1) - (3)]), api_mode_append((yyvsp[(2) - (3)]),(yyvsp[(3) - (3)]))); ;} 1606 break; 1607 1608 case 6: 1609 1610 /* Line 1455 of yacc.c */ 1611 #line 63 "api_grammar.y" 1612 { (yyval) = api_mode_append((yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} 1613 break; 1614 1615 case 7: 1616 1617 /* Line 1455 of yacc.c */ 1618 #line 65 "api_grammar.y" 1619 { (yyval) = api_mode_append((yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} 1620 break; 1621 1622 case 8: 1623 1624 /* Line 1455 of yacc.c */ 1625 #line 67 "api_grammar.y" 1626 { (yyval) = api_mode_append((yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} 1627 break; 1628 1629 case 9: 1630 1631 /* Line 1455 of yacc.c */ 1632 #line 69 "api_grammar.y" 1633 { (yyval) = api_mode_append((yyvsp[(1) - (3)]),api_mode_append((yyvsp[(2) - (3)]),(yyvsp[(3) - (3)]))); ;} 1634 break; 1635 1636 case 10: 1637 1638 /* Line 1455 of yacc.c */ 1639 #line 71 "api_grammar.y" 1640 { (yyval) = api_mode_append((yyvsp[(1) - (4)]),api_mode_append((yyvsp[(2) - (4)]),(yyvsp[(4) - (4)]))); ;} 1641 break; 1642 1643 case 11: 1644 1645 /* Line 1455 of yacc.c */ 1646 #line 73 "api_grammar.y" 1647 { (yyval) = api_mode_append((yyvsp[(1) - (3)]),api_mode_append((yyvsp[(2) - (3)]),(yyvsp[(3) - (3)]))); ;} 1648 break; 1649 1650 case 13: 1651 1652 /* Line 1455 of yacc.c */ 1653 #line 79 "api_grammar.y" 1654 { (yyval) = api_mode_append((yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} 1655 break; 1656 1657 case 14: 1658 1659 /* Line 1455 of yacc.c */ 1660 #line 81 "api_grammar.y" 1661 { (yyval) = api_mode_append((yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} 1662 break; 1663 1664 case 15: 1665 1666 /* Line 1455 of yacc.c */ 1667 #line 83 "api_grammar.y" 1668 { (yyval) = api_mode_append((yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} 1669 break; 1670 1671 case 16: 1672 1673 /* Line 1455 of yacc.c */ 1674 #line 88 "api_grammar.y" 1675 { (yyval) = api_mode_mark((yyvsp[(1) - (1)]), IS_FIRST); ;} 1676 break; 1677 1678 case 17: 1679 1680 /* Line 1455 of yacc.c */ 1681 #line 90 "api_grammar.y" 1682 { (yyval) = api_mode_append((yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} 1683 break; 1684 1685 case 18: 1686 1687 /* Line 1455 of yacc.c */ 1688 #line 95 "api_grammar.y" 1689 { (yyval) = api_mode_mark((yyvsp[(1) - (1)]), IS_FIRST); ;} 1690 break; 1691 1692 case 19: 1693 1694 /* Line 1455 of yacc.c */ 1695 #line 97 "api_grammar.y" 1696 { (yyval) = api_mode_sub_append((yyvsp[(1) - (3)]),(yyvsp[(3) - (3)])); ;} 1697 break; 1698 1699 case 20: 1700 1701 /* Line 1455 of yacc.c */ 1702 #line 102 "api_grammar.y" 1703 { (yyval) = api_mode_mark((yyvsp[(1) - (1)]), IS_FIRST); ;} 1704 break; 1705 1706 case 21: 1707 1708 /* Line 1455 of yacc.c */ 1709 #line 104 "api_grammar.y" 1710 { (yyval) = api_mode_append((yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} 1711 break; 1712 1713 case 22: 1714 1715 /* Line 1455 of yacc.c */ 1716 #line 109 "api_grammar.y" 1717 { (yyval) = api_mode_mark((yyvsp[(1) - (1)]), IS_FIRST); ;} 1718 break; 1719 1720 case 23: 1721 1722 /* Line 1455 of yacc.c */ 1723 #line 111 "api_grammar.y" 1724 { (yyval) = api_mode_append((yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} 1725 break; 1726 1727 case 24: 1728 1729 /* Line 1455 of yacc.c */ 1730 #line 116 "api_grammar.y" 1731 { (yyval) = api_mode_mark((yyvsp[(1) - (1)]), IS_FIRST); ;} 1732 break; 1733 1734 case 25: 1735 1736 /* Line 1455 of yacc.c */ 1737 #line 118 "api_grammar.y" 1738 { (yyval) = api_mode_append((yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} 1739 break; 1740 1741 case 27: 1742 1743 /* Line 1455 of yacc.c */ 1744 #line 124 "api_grammar.y" 1745 { (yyval) = api_mode_range((yyvsp[(1) - (3)]), (yyvsp[(3) - (3)]), NULL, NULL); ;} 1746 break; 1747 1748 case 28: 1749 1750 /* Line 1455 of yacc.c */ 1751 #line 126 "api_grammar.y" 1752 { (yyval) = api_mode_range((yyvsp[(1) - (3)]), NULL, NULL, (yyvsp[(3) - (3)])); ;} 1753 break; 1754 1755 case 29: 1756 1757 /* Line 1455 of yacc.c */ 1758 #line 128 "api_grammar.y" 1759 { (yyval) = api_mode_range((yyvsp[(1) - (5)]), (yyvsp[(3) - (5)]), NULL, (yyvsp[(5) - (5)])); ;} 1760 break; 1761 1762 case 30: 1763 1764 /* Line 1455 of yacc.c */ 1765 #line 130 "api_grammar.y" 1766 { (yyval) = api_mode_range((yyvsp[(1) - (5)]), NULL, (yyvsp[(3) - (5)]), (yyvsp[(5) - (5)])); ;} 1767 break; 1768 1769 case 31: 1770 1771 /* Line 1455 of yacc.c */ 1772 #line 135 "api_grammar.y" 1773 { (yyval) = api_mode_mark((yyvsp[(1) - (1)]), IS_FIRST); ;} 1774 break; 1775 1776 case 32: 1777 1778 /* Line 1455 of yacc.c */ 1779 #line 137 "api_grammar.y" 1780 { (yyval) = api_mode_append((yyvsp[(1) - (3)]),(yyvsp[(3) - (3)])); ;} 1781 break; 1782 1783 case 33: 1784 1785 /* Line 1455 of yacc.c */ 1786 #line 142 "api_grammar.y" 1787 { (yyval) = api_mode_mark((yyvsp[(1) - (1)]), IS_FIRST); ;} 1788 break; 1789 1790 case 34: 1791 1792 /* Line 1455 of yacc.c */ 1793 #line 144 "api_grammar.y" 1794 { (yyval) = api_mode_append((yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); ;} 1795 break; 1796 1797 case 35: 1798 1799 /* Line 1455 of yacc.c */ 1800 #line 149 "api_grammar.y" 1801 { (yyval) = api_mode_key_value((yyvsp[(1) - (3)]),(yyvsp[(3) - (3)])); ;} 1802 break; 1803 1804 case 39: 1805 1806 /* Line 1455 of yacc.c */ 1807 #line 160 "api_grammar.y" 1808 { (yyval) = api_mode_sub(api_mode_node(parser,"", AGGREGATE), (yyvsp[(2) - (3)])); ;} 1809 break; 1810 1811 case 40: 1812 1813 /* Line 1455 of yacc.c */ 1814 #line 162 "api_grammar.y" 1815 { (yyval) = api_mode_sub(api_mode_node(parser,"", AGGREGATE), (yyvsp[(1) - (1)])); ;} 1816 break; 1817 1818 case 43: 1819 1820 /* Line 1455 of yacc.c */ 1821 #line 169 "api_grammar.y" 1822 { (yyval) = api_mode_node(parser,"{=}", PROMPT); ;} 1823 break; 1824 1825 1826 1827 /* Line 1455 of yacc.c */ 1828 #line 1822 "api_grammar.tab.c" 1829 default: break; 1830 } 1831 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 1832 1833 YYPOPSTACK (yylen); 1834 yylen = 0; 1835 YY_STACK_PRINT (yyss, yyssp); 1836 1837 *++yyvsp = yyval; 1838 *++yylsp = yyloc; 1839 1840 /* Now `shift' the result of the reduction. Determine what state 1841 that goes to, based on the state we popped back to and the rule 1842 number reduced by. */ 1843 1844 yyn = yyr1[yyn]; 1845 1846 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 1847 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 1848 yystate = yytable[yystate]; 1849 else 1850 yystate = yydefgoto[yyn - YYNTOKENS]; 1851 1852 goto yynewstate; 1853 1854 1855 /*------------------------------------. 1856 | yyerrlab -- here on detecting error | 1857 `------------------------------------*/ 1858 yyerrlab: 1859 /* If not already recovering from an error, report this error. */ 1860 if (!yyerrstatus) 1861 { 1862 ++yynerrs; 1863 #if ! YYERROR_VERBOSE 1864 yyerror (&yylloc, yyscanner, parser, YY_("syntax error")); 1865 #else 1866 { 1867 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); 1868 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) 1869 { 1870 YYSIZE_T yyalloc = 2 * yysize; 1871 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) 1872 yyalloc = YYSTACK_ALLOC_MAXIMUM; 1873 if (yymsg != yymsgbuf) 1874 YYSTACK_FREE (yymsg); 1875 yymsg = (char *) YYSTACK_ALLOC (yyalloc); 1876 if (yymsg) 1877 yymsg_alloc = yyalloc; 1878 else 1879 { 1880 yymsg = yymsgbuf; 1881 yymsg_alloc = sizeof yymsgbuf; 1882 } 1883 } 1884 1885 if (0 < yysize && yysize <= yymsg_alloc) 1886 { 1887 (void) yysyntax_error (yymsg, yystate, yychar); 1888 yyerror (&yylloc, yyscanner, parser, yymsg); 1889 } 1890 else 1891 { 1892 yyerror (&yylloc, yyscanner, parser, YY_("syntax error")); 1893 if (yysize != 0) 1894 goto yyexhaustedlab; 1895 } 1896 } 1897 #endif 1898 } 1899 1900 yyerror_range[0] = yylloc; 1901 1902 if (yyerrstatus == 3) 1903 { 1904 /* If just tried and failed to reuse lookahead token after an 1905 error, discard it. */ 1906 1907 if (yychar <= YYEOF) 1908 { 1909 /* Return failure if at end of input. */ 1910 if (yychar == YYEOF) 1911 YYABORT; 1912 } 1913 else 1914 { 1915 yydestruct ("Error: discarding", 1916 yytoken, &yylval, &yylloc, yyscanner, parser); 1917 yychar = YYEMPTY; 1918 } 1919 } 1920 1921 /* Else will try to reuse lookahead token after shifting the error 1922 token. */ 1923 goto yyerrlab1; 1924 1925 1926 /*---------------------------------------------------. 1927 | yyerrorlab -- error raised explicitly by YYERROR. | 1928 `---------------------------------------------------*/ 1929 yyerrorlab: 1930 1931 /* Pacify compilers like GCC when the user code never invokes 1932 YYERROR and the label yyerrorlab therefore never appears in user 1933 code. */ 1934 if (/*CONSTCOND*/ 0) 1935 goto yyerrorlab; 1936 1937 yyerror_range[0] = yylsp[1-yylen]; 1938 /* Do not reclaim the symbols of the rule which action triggered 1939 this YYERROR. */ 1940 YYPOPSTACK (yylen); 1941 yylen = 0; 1942 YY_STACK_PRINT (yyss, yyssp); 1943 yystate = *yyssp; 1944 goto yyerrlab1; 1945 1946 1947 /*-------------------------------------------------------------. 1948 | yyerrlab1 -- common code for both syntax error and YYERROR. | 1949 `-------------------------------------------------------------*/ 1950 yyerrlab1: 1951 yyerrstatus = 3; /* Each real token shifted decrements this. */ 1952 1953 for (;;) 1954 { 1955 yyn = yypact[yystate]; 1956 if (yyn != YYPACT_NINF) 1957 { 1958 yyn += YYTERROR; 1959 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 1960 { 1961 yyn = yytable[yyn]; 1962 if (0 < yyn) 1963 break; 1964 } 1965 } 1966 1967 /* Pop the current state because it cannot handle the error token. */ 1968 if (yyssp == yyss) 1969 YYABORT; 1970 1971 yyerror_range[0] = *yylsp; 1972 yydestruct ("Error: popping", 1973 yystos[yystate], yyvsp, yylsp, yyscanner, parser); 1974 YYPOPSTACK (1); 1975 yystate = *yyssp; 1976 YY_STACK_PRINT (yyss, yyssp); 1977 } 1978 1979 *++yyvsp = yylval; 1980 1981 yyerror_range[1] = yylloc; 1982 /* Using YYLLOC is tempting, but would change the location of 1983 the lookahead. YYLOC is available though. */ 1984 YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); 1985 *++yylsp = yyloc; 1986 1987 /* Shift the error token. */ 1988 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 1989 1990 yystate = yyn; 1991 goto yynewstate; 1992 1993 1994 /*-------------------------------------. 1995 | yyacceptlab -- YYACCEPT comes here. | 1996 `-------------------------------------*/ 1997 yyacceptlab: 1998 yyresult = 0; 1999 goto yyreturn; 2000 2001 /*-----------------------------------. 2002 | yyabortlab -- YYABORT comes here. | 2003 `-----------------------------------*/ 2004 yyabortlab: 2005 yyresult = 1; 2006 goto yyreturn; 2007 2008 #if !defined(yyoverflow) || YYERROR_VERBOSE 2009 /*-------------------------------------------------. 2010 | yyexhaustedlab -- memory exhaustion comes here. | 2011 `-------------------------------------------------*/ 2012 yyexhaustedlab: 2013 yyerror (&yylloc, yyscanner, parser, YY_("memory exhausted")); 2014 yyresult = 2; 2015 /* Fall through. */ 2016 #endif 2017 2018 yyreturn: 2019 if (yychar != YYEMPTY) 2020 yydestruct ("Cleanup: discarding lookahead", 2021 yytoken, &yylval, &yylloc, yyscanner, parser); 2022 /* Do not reclaim the symbols of the rule which action triggered 2023 this YYABORT or YYACCEPT. */ 2024 YYPOPSTACK (yylen); 2025 YY_STACK_PRINT (yyss, yyssp); 2026 while (yyssp != yyss) 2027 { 2028 yydestruct ("Cleanup: popping", 2029 yystos[*yyssp], yyvsp, yylsp, yyscanner, parser); 2030 YYPOPSTACK (1); 2031 } 2032 #ifndef yyoverflow 2033 if (yyss != yyssa) 2034 YYSTACK_FREE (yyss); 2035 #endif 2036 yyps->yynew = 1; 2037 2038 yypushreturn: 2039 #if YYERROR_VERBOSE 2040 if (yymsg != yymsgbuf) 2041 YYSTACK_FREE (yymsg); 2042 #endif 2043 /* Make sure YYID is used. */ 2044 return YYID (yyresult); 2045 } 2046 2047 2048