1 | /* A Bison parser, made by GNU Bison 2.3. */ 2 | 3 | /* Skeleton implementation for Bison's Yacc-like parsers in C 4 | 5 | Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 6 | Free Software Foundation, Inc. 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2, or (at your option) 11 | any later version. 12 | 13 | This program is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with this program; if not, write to the Free Software 20 | Foundation, Inc., 51 Franklin Street, Fifth Floor, 21 | Boston, MA 02110-1301, USA. */ 22 | 23 | /* As a special exception, you may create a larger work that contains 24 | part or all of the Bison parser skeleton and distribute that work 25 | under terms of your choice, so long as that work isn't itself a 26 | parser generator using the skeleton or a modified version thereof 27 | as a parser skeleton. Alternatively, if you modify or redistribute 28 | the parser skeleton itself, you may (at your option) remove this 29 | special exception, which will cause the skeleton and the resulting 30 | Bison output files to be licensed under the GNU General Public 31 | License without this special exception. 32 | 33 | This special exception was added by the Free Software Foundation in 34 | version 2.2 of Bison. */ 35 | 36 | /* C LALR(1) parser skeleton written by Richard Stallman, by 37 | simplifying the original so-called "semantic" parser. */ 38 | 39 | /* All symbols defined below should begin with yy or YY, to avoid 40 | infringing on user name space. This should be done even for local 41 | variables, as they might otherwise be expanded by user macros. 42 | There are some unavoidable exceptions within include files to 43 | define necessary library symbols; they are noted "INFRINGES ON 44 | USER NAME SPACE" below. */ 45 | 46 | /* Identify Bison output. */ 47 | #define YYBISON 1 48 | 49 | /* Bison version. */ 50 | #define YYBISON_VERSION "2.3" 51 | 52 | /* Skeleton name. */ 53 | #define YYSKELETON_NAME "yacc.c" 54 | 55 | /* Pure parsers. */ 56 | #define YYPURE 0 57 | 58 | /* Using locations. */ 59 | #define YYLSP_NEEDED 0 60 | 61 | 62 | 63 | /* Tokens. */ 64 | #ifndef YYTOKENTYPE 65 | # define YYTOKENTYPE 66 | /* Put the tokens into the symbol table, so that GDB and other debuggers 67 | know about them. */ 68 | enum yytokentype { 69 | IDENTIFIER = 258, 70 | TYPE_NAME = 259, 71 | LITERAL = 260, 72 | STRING_LITERAL = 261, 73 | ELLIPSES = 262, 74 | MUL_ASSIGN = 263, 75 | DIV_ASSIGN = 264, 76 | MOD_ASSIGN = 265, 77 | ADD_ASSIGN = 266, 78 | SUB_ASSIGN = 267, 79 | LEFT_ASSIGN = 268, 80 | RIGHT_ASSIGN = 269, 81 | AND_ASSIGN = 270, 82 | XOR_ASSIGN = 271, 83 | OR_ASSIGN = 272, 84 | EQ_OP = 273, 85 | NE_OP = 274, 86 | PTR_OP = 275, 87 | AND_OP = 276, 88 | OR_OP = 277, 89 | DEC_OP = 278, 90 | INC_OP = 279, 91 | LE_OP = 280, 92 | GE_OP = 281, 93 | LEFT_SHIFT = 282, 94 | RIGHT_SHIFT = 283, 95 | SIZEOF = 284, 96 | TYPEDEF = 285, 97 | EXTERN = 286, 98 | STATIC = 287, 99 | AUTO = 288, 100 | REGISTER = 289, 101 | CONST = 290, 102 | VOLATILE = 291, 103 | VOID = 292, 104 | INLINE = 293, 105 | CHAR = 294, 106 | SHORT = 295, 107 | INT = 296, 108 | LONG = 297, 109 | SIGNED = 298, 110 | UNSIGNED = 299, 111 | FLOAT = 300, 112 | DOUBLE = 301, 113 | BOOL = 302, 114 | STRUCT = 303, 115 | UNION = 304, 116 | ENUM = 305, 117 | CASE = 306, 118 | DEFAULT = 307, 119 | IF = 308, 120 | ELSE = 309, 121 | SWITCH = 310, 122 | WHILE = 311, 123 | DO = 312, 124 | FOR = 313, 125 | GOTO = 314, 126 | CONTINUE = 315, 127 | BREAK = 316, 128 | RETURN = 317, 129 | ASM = 318 130 | }; 131 | #endif 132 | /* Tokens. */ 133 | #define IDENTIFIER 258 134 | #define TYPE_NAME 259 135 | #define LITERAL 260 136 | #define STRING_LITERAL 261 137 | #define ELLIPSES 262 138 | #define MUL_ASSIGN 263 139 | #define DIV_ASSIGN 264 140 | #define MOD_ASSIGN 265 141 | #define ADD_ASSIGN 266 142 | #define SUB_ASSIGN 267 143 | #define LEFT_ASSIGN 268 144 | #define RIGHT_ASSIGN 269 145 | #define AND_ASSIGN 270 146 | #define XOR_ASSIGN 271 147 | #define OR_ASSIGN 272 148 | #define EQ_OP 273 149 | #define NE_OP 274 150 | #define PTR_OP 275 151 | #define AND_OP 276 152 | #define OR_OP 277 153 | #define DEC_OP 278 154 | #define INC_OP 279 155 | #define LE_OP 280 156 | #define GE_OP 281 157 | #define LEFT_SHIFT 282 158 | #define RIGHT_SHIFT 283 159 | #define SIZEOF 284 160 | #define TYPEDEF 285 161 | #define EXTERN 286 162 | #define STATIC 287 163 | #define AUTO 288 164 | #define REGISTER 289 165 | #define CONST 290 166 | #define VOLATILE 291 167 | #define VOID 292 168 | #define INLINE 293 169 | #define CHAR 294 170 | #define SHORT 295 171 | #define INT 296 172 | #define LONG 297 173 | #define SIGNED 298 174 | #define UNSIGNED 299 175 | #define FLOAT 300 176 | #define DOUBLE 301 177 | #define BOOL 302 178 | #define STRUCT 303 179 | #define UNION 304 180 | #define ENUM 305 181 | #define CASE 306 182 | #define DEFAULT 307 183 | #define IF 308 184 | #define ELSE 309 185 | #define SWITCH 310 186 | #define WHILE 311 187 | #define DO 312 188 | #define FOR 313 189 | #define GOTO 314 190 | #define CONTINUE 315 191 | #define BREAK 316 192 | #define RETURN 317 193 | #define ASM 318 194 | 195 | 196 | 197 | 198 | /* Copy the first part of user declarations. */ 199 | #line 1 "./parse.y" 200 | 201 | /*************************************** 202 | $Header: /home/amb/cxref/src/RCS/parse.y 1.54 2005/02/20 16:45:19 amb Exp $ 203 | 204 | C Cross Referencing & Documentation tool. Version 1.6a. 205 | 206 | C parser. 207 | ******************/ /****************** 208 | Written by Andrew M. Bishop 209 | 210 | This file Copyright 1995,96,97,98,99,2000,01,02,03,04,05 Andrew M. Bishop 211 | It may be distributed under the GNU Public License, version 2, or 212 | any higher version. See section COPYING of the GNU Public license 213 | for conditions under which this file may be redistributed. 214 | ***************************************/ 215 | 216 | #include <string.h> 217 | #include "parse-yy.h" 218 | #include "cxref.h" 219 | #include "memory.h" 220 | 221 | /*+ A structure to hold the information about an object. +*/ 222 | typedef struct _stack 223 | { 224 | char *name; /*+ The name of the object. +*/ 225 | char *type; /*+ The type of the object. +*/ 226 | char *qual; /*+ The type qualifier of the object. +*/ 227 | } 228 | stack; 229 | 230 | #define yylex cxref_yylex 231 | 232 | static int cxref_yylex(void); 233 | 234 | static void yyerror(char *s); 235 | 236 | /*+ When in a header file, some stuff can be skipped over quickly. +*/ 237 | extern int in_header; 238 | 239 | /*+ A flag that is set to true when typedef is seen in a statement. +*/ 240 | int in_typedef=0; 241 | 242 | /*+ The scope of the function / variable that is being examined. +*/ 243 | static int scope; 244 | 245 | /*+ The variable must be LOCAL or EXTERNAL or GLOBAL, so this checks and sets that. +*/ 246 | #define SCOPE ( scope&(LOCAL|EXTERNAL|EXTERN_H|EXTERN_F) ? scope : scope|GLOBAL ) 247 | 248 | /*+ When in a function or a function definition, the behaviour is different. +*/ 249 | static int in_function=0,in_funcdef=0,in_funcbody=0; 250 | 251 | /*+ The parsing stack +*/ 252 | static stack first={NULL,NULL,NULL}, /*+ first value. +*/ 253 | *list=NULL, /*+ list of all values. +*/ 254 | *current=&first; /*+ current values. +*/ 255 | 256 | /*+ The depth of the stack +*/ 257 | static int depth=0, /*+ currently in use. +*/ 258 | maxdepth=0; /*+ total malloced. +*/ 259 | 260 | /*+ Declarations that are in the same statement share this comment. +*/ 261 | static char* common_comment=NULL; 262 | 263 | /*+ When inside a struct / union / enum definition, this is the depth. +*/ 264 | static int in_structunion=0; 265 | 266 | /*+ When inside a struct / union definition, this is the component type. +*/ 267 | static char *comp_type=NULL; 268 | 269 | /*+ To solve the problem where a type name is used as an identifier. +*/ 270 | static int in_type_spec=0; 271 | 272 | 273 | /*++++++++++++++++++++++++++++++++++++++ 274 | Reset the current level on the stack. 275 | ++++++++++++++++++++++++++++++++++++++*/ 276 | 277 | static void reset(void) 278 | { 279 | current->name=NULL; 280 | current->type=NULL; 281 | current->qual=NULL; 282 | } 283 | 284 | 285 | /*++++++++++++++++++++++++++++++++++++++ 286 | Push a level onto the stack. 287 | ++++++++++++++++++++++++++++++++++++++*/ 288 | 289 | static void push(void) 290 | { 291 | if(list==NULL) 292 | { 293 | list=(stack*)Malloc(8*sizeof(struct _stack)); 294 | list[0]=first; 295 | maxdepth=8; 296 | } 297 | else if(depth==(maxdepth-1)) 298 | { 299 | list=Realloc(list,(maxdepth+8)*sizeof(struct _stack)); 300 | maxdepth+=8; 301 | } 302 | 303 | depth++; 304 | current=&list[depth]; 305 | 306 | reset(); 307 | } 308 | 309 | 310 | /*++++++++++++++++++++++++++++++++++++++ 311 | Pop a level from the stack. 312 | ++++++++++++++++++++++++++++++++++++++*/ 313 | 314 | static void pop(void) 315 | { 316 | reset(); 317 | 318 | depth--; 319 | current=&list[depth]; 320 | } 321 | 322 | 323 | /*++++++++++++++++++++++++++++++++++++++ 324 | Reset the Parser, ready for the next file. 325 | ++++++++++++++++++++++++++++++++++++++*/ 326 | 327 | void ResetParser(void) 328 | { 329 | in_typedef=0; 330 | scope=0; 331 | in_function=0; 332 | in_funcdef=0; 333 | in_funcbody=0; 334 | depth=0; 335 | maxdepth=0; 336 | if(list) Free(list); 337 | list=NULL; 338 | current=&first; 339 | reset(); 340 | common_comment=NULL; 341 | in_structunion=0; 342 | comp_type=NULL; 343 | in_type_spec=0; 344 | } 345 | 346 | 347 | 348 | /* Enabling traces. */ 349 | #ifndef YYDEBUG 350 | # define YYDEBUG 0 351 | #endif 352 | 353 | /* Enabling verbose error messages. */ 354 | #ifdef YYERROR_VERBOSE 355 | # undef YYERROR_VERBOSE 356 | # define YYERROR_VERBOSE 1 357 | #else 358 | # define YYERROR_VERBOSE 0 359 | #endif 360 | 361 | /* Enabling the token table. */ 362 | #ifndef YYTOKEN_TABLE 363 | # define YYTOKEN_TABLE 0 364 | #endif 365 | 366 | #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 367 | typedef int YYSTYPE; 368 | # define yystype YYSTYPE /* obsolescent; will be withdrawn */ 369 | # define YYSTYPE_IS_DECLARED 1 370 | # define YYSTYPE_IS_TRIVIAL 1 371 | #endif 372 | 373 | 374 | 375 | /* Copy the second part of user declarations. */ 376 | 377 | 378 | /* Line 216 of yacc.c. */ 379 | #line 380 "y.tab.c" 380 | 381 | #ifdef short 382 | # undef short 383 | #endif 384 | 385 | #ifdef YYTYPE_UINT8 386 | typedef YYTYPE_UINT8 yytype_uint8; 387 | #else 388 | typedef unsigned char yytype_uint8; 389 | #endif 390 | 391 | #ifdef YYTYPE_INT8 392 | typedef YYTYPE_INT8 yytype_int8; 393 | #elif (defined __STDC__ || defined __C99__FUNC__ \ 394 | || defined __cplusplus || defined _MSC_VER) 395 | typedef signed char yytype_int8; 396 | #else 397 | typedef short int yytype_int8; 398 | #endif 399 | 400 | #ifdef YYTYPE_UINT16 401 | typedef YYTYPE_UINT16 yytype_uint16; 402 | #else 403 | typedef unsigned short int yytype_uint16; 404 | #endif 405 | 406 | #ifdef YYTYPE_INT16 407 | typedef YYTYPE_INT16 yytype_int16; 408 | #else 409 | typedef short int yytype_int16; 410 | #endif 411 | 412 | #ifndef YYSIZE_T 413 | # ifdef __SIZE_TYPE__ 414 | # define YYSIZE_T __SIZE_TYPE__ 415 | # elif defined size_t 416 | # define YYSIZE_T size_t 417 | # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 418 | || defined __cplusplus || defined _MSC_VER) 419 | # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 420 | # define YYSIZE_T size_t 421 | # else 422 | # define YYSIZE_T unsigned int 423 | # endif 424 | #endif 425 | 426 | #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 427 | 428 | #ifndef YY_ 429 | # if YYENABLE_NLS 430 | # if ENABLE_NLS 431 | # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 432 | # define YY_(msgid) dgettext ("bison-runtime", msgid) 433 | # endif 434 | # endif 435 | # ifndef YY_ 436 | # define YY_(msgid) msgid 437 | # endif 438 | #endif 439 | 440 | /* Suppress unused-variable warnings by "using" E. */ 441 | #if ! defined lint || defined __GNUC__ 442 | # define YYUSE(e) ((void) (e)) 443 | #else 444 | # define YYUSE(e) /* empty */ 445 | #endif 446 | 447 | /* Identity function, used to suppress warnings about constant conditions. */ 448 | #ifndef lint 449 | # define YYID(n) (n) 450 | #else 451 | #if (defined __STDC__ || defined __C99__FUNC__ \ 452 | || defined __cplusplus || defined _MSC_VER) 453 | static int 454 | YYID (int i) 455 | #else 456 | static int 457 | YYID (i) 458 | int i; 459 | #endif 460 | { 461 | return i; 462 | } 463 | #endif 464 | 465 | #if ! defined yyoverflow || YYERROR_VERBOSE 466 | 467 | /* The parser invokes alloca or malloc; define the necessary symbols. */ 468 | 469 | # ifdef YYSTACK_USE_ALLOCA 470 | # if YYSTACK_USE_ALLOCA 471 | # ifdef __GNUC__ 472 | # define YYSTACK_ALLOC __builtin_alloca 473 | # elif defined __BUILTIN_VA_ARG_INCR 474 | # include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 475 | # elif defined _AIX 476 | # define YYSTACK_ALLOC __alloca 477 | # elif defined _MSC_VER 478 | # include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 479 | # define alloca _alloca 480 | # else 481 | # define YYSTACK_ALLOC alloca 482 | # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 483 | || defined __cplusplus || defined _MSC_VER) 484 | # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 485 | # ifndef _STDLIB_H 486 | # define _STDLIB_H 1 487 | # endif 488 | # endif 489 | # endif 490 | # endif 491 | # endif 492 | 493 | # ifdef YYSTACK_ALLOC 494 | /* Pacify GCC's `empty if-body' warning. */ 495 | # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) 496 | # ifndef YYSTACK_ALLOC_MAXIMUM 497 | /* The OS might guarantee only one guard page at the bottom of the stack, 498 | and a page size can be as small as 4096 bytes. So we cannot safely 499 | invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 500 | to allow for a few compiler-allocated temporary stack slots. */ 501 | # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 502 | # endif 503 | # else 504 | # define YYSTACK_ALLOC YYMALLOC 505 | # define YYSTACK_FREE YYFREE 506 | # ifndef YYSTACK_ALLOC_MAXIMUM 507 | # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 508 | # endif 509 | # if (defined __cplusplus && ! defined _STDLIB_H \ 510 | && ! ((defined YYMALLOC || defined malloc) \ 511 | && (defined YYFREE || defined free))) 512 | # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 513 | # ifndef _STDLIB_H 514 | # define _STDLIB_H 1 515 | # endif 516 | # endif 517 | # ifndef YYMALLOC 518 | # define YYMALLOC malloc 519 | # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 520 | || defined __cplusplus || defined _MSC_VER) 521 | void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 522 | # endif 523 | # endif 524 | # ifndef YYFREE 525 | # define YYFREE free 526 | # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 527 | || defined __cplusplus || defined _MSC_VER) 528 | void free (void *); /* INFRINGES ON USER NAME SPACE */ 529 | # endif 530 | # endif 531 | # endif 532 | #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 533 | 534 | 535 | #if (! defined yyoverflow \ 536 | && (! defined __cplusplus \ 537 | || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 538 | 539 | /* A type that is properly aligned for any stack member. */ 540 | union yyalloc 541 | { 542 | yytype_int16 yyss; 543 | YYSTYPE yyvs; 544 | }; 545 | 546 | /* The size of the maximum gap between one aligned stack and the next. */ 547 | # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 548 | 549 | /* The size of an array large to enough to hold all stacks, each with 550 | N elements. */ 551 | # define YYSTACK_BYTES(N) \ 552 | ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ 553 | + YYSTACK_GAP_MAXIMUM) 554 | 555 | /* Copy COUNT objects from FROM to TO. The source and destination do 556 | not overlap. */ 557 | # ifndef YYCOPY 558 | # if defined __GNUC__ && 1 < __GNUC__ 559 | # define YYCOPY(To, From, Count) \ 560 | __builtin_memcpy (To, From, (Count) * sizeof (*(From))) 561 | # else 562 | # define YYCOPY(To, From, Count) \ 563 | do \ 564 | { \ 565 | YYSIZE_T yyi; \ 566 | for (yyi = 0; yyi < (Count); yyi++) \ 567 | (To)[yyi] = (From)[yyi]; \ 568 | } \ 569 | while (YYID (0)) 570 | # endif 571 | # endif 572 | 573 | /* Relocate STACK from its old location to the new one. The 574 | local variables YYSIZE and YYSTACKSIZE give the old and new number of 575 | elements in the stack, and YYPTR gives the new location of the 576 | stack. Advance YYPTR to a properly aligned location for the next 577 | stack. */ 578 | # define YYSTACK_RELOCATE(Stack) \ 579 | do \ 580 | { \ 581 | YYSIZE_T yynewbytes; \ 582 | YYCOPY (&yyptr->Stack, Stack, yysize); \ 583 | Stack = &yyptr->Stack; \ 584 | yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 585 | yyptr += yynewbytes / sizeof (*yyptr); \ 586 | } \ 587 | while (YYID (0)) 588 | 589 | #endif 590 | 591 | /* YYFINAL -- State number of the termination state. */ 592 | #define YYFINAL 92 593 | /* YYLAST -- Last index in YYTABLE. */ 594 | #define YYLAST 1569 595 | 596 | /* YYNTOKENS -- Number of terminals. */ 597 | #define YYNTOKENS 88 598 | /* YYNNTS -- Number of nonterminals. */ 599 | #define YYNNTS 170 600 | /* YYNRULES -- Number of rules. */ 601 | #define YYNRULES 376 602 | /* YYNRULES -- Number of states. */ 603 | #define YYNSTATES 563 604 | 605 | /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 606 | #define YYUNDEFTOK 2 607 | #define YYMAXUTOK 318 608 | 609 | #define YYTRANSLATE(YYX) \ 610 | ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 611 | 612 | /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 613 | static const yytype_uint8 yytranslate[] = 614 | { 615 | 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 616 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 617 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 618 | 2, 2, 2, 87, 2, 2, 2, 85, 79, 2, 619 | 73, 74, 75, 82, 65, 83, 70, 84, 2, 2, 620 | 2, 2, 2, 2, 2, 2, 2, 2, 69, 64, 621 | 80, 66, 81, 76, 2, 2, 2, 2, 2, 2, 622 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 623 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 624 | 2, 71, 2, 72, 78, 2, 2, 2, 2, 2, 625 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 626 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 627 | 2, 2, 2, 67, 77, 68, 86, 2, 2, 2, 628 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 629 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 630 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 631 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 632 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 633 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 634 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 635 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 636 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 637 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 638 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 639 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 640 | 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 641 | 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 642 | 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 643 | 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 644 | 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 645 | 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 646 | 55, 56, 57, 58, 59, 60, 61, 62, 63 647 | }; 648 | 649 | #if YYDEBUG 650 | /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 651 | YYRHS. */ 652 | static const yytype_uint16 yyprhs[] = 653 | { 654 | 0, 0, 3, 4, 6, 8, 11, 13, 15, 17, 655 | 19, 21, 24, 28, 31, 33, 35, 38, 40, 43, 656 | 45, 48, 50, 51, 56, 58, 60, 63, 66, 70, 657 | 73, 75, 79, 80, 82, 86, 89, 91, 95, 100, 658 | 105, 111, 119, 121, 125, 127, 130, 132, 136, 139, 659 | 143, 147, 152, 155, 159, 163, 168, 170, 173, 175, 660 | 178, 181, 185, 187, 191, 193, 195, 197, 201, 202, 661 | 203, 210, 212, 214, 216, 218, 220, 222, 224, 226, 662 | 229, 231, 233, 235, 237, 239, 241, 243, 245, 247, 663 | 249, 251, 253, 255, 258, 261, 263, 266, 269, 271, 664 | 273, 275, 277, 279, 281, 283, 285, 287, 289, 292, 665 | 294, 296, 297, 303, 304, 311, 313, 316, 318, 322, 666 | 324, 328, 330, 333, 335, 337, 339, 341, 342, 348, 667 | 349, 356, 359, 361, 363, 365, 367, 368, 374, 375, 668 | 382, 385, 387, 389, 390, 392, 394, 397, 399, 402, 669 | 405, 407, 408, 413, 414, 420, 421, 427, 429, 433, 670 | 435, 437, 439, 442, 446, 448, 450, 452, 453, 457, 671 | 459, 461, 464, 467, 471, 473, 475, 479, 482, 487, 672 | 488, 494, 496, 497, 499, 501, 503, 507, 509, 513, 673 | 515, 519, 522, 524, 527, 529, 531, 533, 535, 537, 674 | 539, 541, 543, 545, 547, 549, 551, 552, 553, 559, 675 | 560, 562, 564, 567, 569, 571, 573, 575, 583, 589, 676 | 591, 593, 595, 603, 604, 611, 614, 618, 622, 626, 677 | 631, 636, 641, 647, 649, 652, 654, 660, 663, 666, 678 | 669, 672, 677, 679, 681, 683, 689, 692, 695, 698, 679 | 702, 704, 707, 711, 713, 715, 719, 721, 723, 727, 680 | 733, 735, 737, 739, 741, 743, 745, 747, 749, 751, 681 | 753, 755, 757, 763, 768, 770, 774, 776, 780, 782, 682 | 786, 788, 792, 794, 798, 800, 804, 806, 808, 810, 683 | 814, 816, 818, 820, 822, 824, 828, 830, 832, 834, 684 | 838, 840, 842, 844, 848, 850, 852, 854, 856, 858, 685 | 860, 862, 864, 866, 868, 870, 872, 874, 876, 879, 686 | 882, 887, 894, 897, 900, 903, 906, 911, 914, 917, 687 | 920, 922, 924, 926, 928, 930, 932, 934, 936, 938, 688 | 942, 946, 950, 955, 959, 964, 967, 970, 975, 977, 689 | 979, 981, 983, 985, 988, 992, 993, 994, 1000, 1002, 690 | 1004, 1008, 1014, 1022, 1032, 1044, 1046, 1049, 1052, 1053, 691 | 1055, 1059, 1064, 1065, 1067, 1071, 1076 692 | }; 693 | 694 | /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 695 | static const yytype_int16 yyrhs[] = 696 | { 697 | 89, 0, -1, -1, 90, -1, 91, -1, 90, 91, 698 | -1, 93, -1, 162, -1, 251, -1, 202, -1, 93, 699 | -1, 92, 93, -1, 94, 96, 64, -1, 94, 64, 700 | -1, 95, -1, 115, -1, 115, 95, -1, 118, -1, 701 | 118, 95, -1, 117, -1, 117, 95, -1, 98, -1, 702 | -1, 96, 65, 97, 98, -1, 99, -1, 107, -1, 703 | 107, 256, -1, 107, 100, -1, 107, 256, 100, -1, 704 | 66, 101, -1, 206, -1, 67, 102, 68, -1, -1, 705 | 103, -1, 102, 65, 103, -1, 102, 65, -1, 101, 706 | -1, 161, 69, 101, -1, 70, 161, 66, 101, -1, 707 | 71, 104, 72, 101, -1, 71, 104, 72, 66, 101, 708 | -1, 71, 104, 72, 70, 161, 66, 101, -1, 249, 709 | -1, 249, 7, 249, -1, 108, -1, 108, 106, -1, 710 | 106, -1, 73, 105, 74, -1, 71, 72, -1, 106, 711 | 71, 72, -1, 71, 249, 72, -1, 106, 71, 249, 712 | 72, -1, 73, 74, -1, 106, 73, 74, -1, 73, 713 | 173, 74, -1, 106, 73, 173, 74, -1, 109, -1, 714 | 108, 109, -1, 75, -1, 75, 116, -1, 75, 108, 715 | -1, 75, 116, 108, -1, 110, -1, 73, 107, 74, 716 | -1, 111, -1, 168, -1, 3, -1, 109, 71, 72, 717 | -1, -1, -1, 109, 71, 112, 249, 113, 72, -1, 718 | 3, -1, 33, -1, 31, -1, 34, -1, 32, -1, 719 | 30, -1, 38, -1, 117, -1, 116, 117, -1, 35, 720 | -1, 36, -1, 119, -1, 127, -1, 120, -1, 121, 721 | -1, 123, -1, 137, -1, 124, -1, 143, -1, 125, 722 | -1, 45, -1, 46, -1, 46, 42, -1, 42, 46, 723 | -1, 122, -1, 122, 117, -1, 121, 122, -1, 43, 724 | -1, 44, -1, 39, -1, 40, -1, 41, -1, 42, 725 | -1, 47, -1, 4, -1, 37, -1, 94, -1, 94, 726 | 105, -1, 128, -1, 135, -1, -1, 50, 67, 129, 727 | 131, 68, -1, -1, 50, 136, 67, 130, 131, 68, 728 | -1, 132, -1, 132, 65, -1, 133, -1, 132, 65, 729 | 133, -1, 134, -1, 134, 66, 206, -1, 3, -1, 730 | 50, 136, -1, 3, -1, 4, -1, 138, -1, 141, 731 | -1, -1, 48, 67, 139, 149, 68, -1, -1, 48, 732 | 142, 67, 140, 149, 68, -1, 48, 142, -1, 3, 733 | -1, 4, -1, 144, -1, 147, -1, -1, 49, 67, 734 | 145, 149, 68, -1, -1, 49, 148, 67, 146, 149, 735 | 68, -1, 49, 148, -1, 3, -1, 4, -1, -1, 736 | 150, -1, 151, -1, 150, 151, -1, 64, -1, 138, 737 | 64, -1, 144, 64, -1, 152, -1, -1, 118, 153, 738 | 156, 64, -1, -1, 116, 118, 154, 156, 64, -1, 739 | -1, 118, 116, 155, 156, 64, -1, 157, -1, 156, 740 | 65, 157, -1, 158, -1, 159, -1, 107, -1, 69, 741 | 160, -1, 107, 69, 160, -1, 206, -1, 3, -1, 742 | 4, -1, -1, 164, 163, 177, -1, 165, -1, 166, 743 | -1, 94, 166, -1, 166, 92, -1, 94, 166, 92, 744 | -1, 167, -1, 168, -1, 73, 168, 74, -1, 108, 745 | 168, -1, 108, 73, 168, 74, -1, -1, 170, 73, 746 | 169, 171, 74, -1, 109, -1, -1, 173, -1, 172, 747 | -1, 3, -1, 172, 65, 3, -1, 174, -1, 174, 748 | 65, 7, -1, 175, -1, 174, 65, 175, -1, 94, 749 | 107, -1, 94, -1, 94, 105, -1, 251, -1, 177, 750 | -1, 183, -1, 186, -1, 193, -1, 197, -1, 198, 751 | -1, 199, -1, 200, -1, 201, -1, 202, -1, 203, 752 | -1, -1, -1, 67, 178, 180, 179, 68, -1, -1, 753 | 181, -1, 182, -1, 181, 182, -1, 176, -1, 93, 754 | -1, 185, -1, 184, -1, 53, 73, 204, 74, 176, 755 | 54, 176, -1, 53, 73, 204, 74, 176, -1, 187, 756 | -1, 188, -1, 192, -1, 57, 176, 56, 73, 204, 757 | 74, 64, -1, -1, 58, 189, 73, 190, 74, 176, 758 | -1, 64, 64, -1, 191, 64, 64, -1, 64, 204, 759 | 64, -1, 64, 64, 204, -1, 64, 204, 64, 204, 760 | -1, 191, 64, 64, 204, -1, 191, 64, 204, 64, 761 | -1, 191, 64, 204, 64, 204, -1, 204, -1, 94, 762 | 96, -1, 94, -1, 56, 73, 204, 74, 176, -1, 763 | 194, 69, -1, 196, 69, -1, 195, 69, -1, 51, 764 | 249, -1, 51, 249, 7, 249, -1, 52, -1, 3, 765 | -1, 4, -1, 55, 73, 204, 74, 176, -1, 61, 766 | 64, -1, 60, 64, -1, 204, 64, -1, 59, 3, 767 | 64, -1, 64, -1, 62, 64, -1, 62, 204, 64, 768 | -1, 205, -1, 206, -1, 205, 65, 206, -1, 208, 769 | -1, 257, -1, 224, 207, 206, -1, 224, 207, 67, 770 | 102, 68, -1, 66, -1, 8, -1, 9, -1, 10, 771 | -1, 11, -1, 12, -1, 13, -1, 14, -1, 15, 772 | -1, 16, -1, 17, -1, 209, -1, 209, 76, 204, 773 | 69, 208, -1, 209, 76, 69, 208, -1, 210, -1, 774 | 209, 22, 210, -1, 211, -1, 210, 21, 211, -1, 775 | 212, -1, 211, 77, 212, -1, 213, -1, 212, 78, 776 | 213, -1, 214, -1, 213, 79, 214, -1, 216, -1, 777 | 214, 215, 216, -1, 18, -1, 19, -1, 218, -1, 778 | 216, 217, 218, -1, 80, -1, 25, -1, 81, -1, 779 | 26, -1, 220, -1, 218, 219, 220, -1, 27, -1, 780 | 28, -1, 222, -1, 220, 221, 222, -1, 82, -1, 781 | 83, -1, 224, -1, 222, 223, 224, -1, 75, -1, 782 | 84, -1, 85, -1, 225, -1, 226, -1, 227, -1, 783 | 228, -1, 229, -1, 230, -1, 231, -1, 232, -1, 784 | 233, -1, 234, -1, 235, -1, 79, 224, -1, 86, 785 | 224, -1, 73, 126, 74, 224, -1, 73, 126, 74, 786 | 67, 102, 68, -1, 75, 224, -1, 87, 224, -1, 787 | 23, 224, -1, 24, 224, -1, 29, 73, 126, 74, 788 | -1, 29, 224, -1, 83, 224, -1, 82, 224, -1, 789 | 236, -1, 239, -1, 240, -1, 241, -1, 242, -1, 790 | 243, -1, 244, -1, 237, -1, 238, -1, 235, 70, 791 | 161, -1, 235, 20, 161, -1, 235, 73, 74, -1, 792 | 235, 73, 250, 74, -1, 114, 73, 74, -1, 114, 793 | 73, 250, 74, -1, 235, 23, -1, 235, 24, -1, 794 | 235, 71, 204, 72, -1, 114, -1, 5, -1, 245, 795 | -1, 246, -1, 6, -1, 245, 6, -1, 73, 204, 796 | 74, -1, -1, -1, 73, 247, 177, 248, 74, -1, 797 | 204, -1, 206, -1, 250, 65, 206, -1, 252, 73, 798 | 245, 74, 64, -1, 252, 73, 245, 69, 253, 74, 799 | 64, -1, 252, 73, 245, 69, 253, 69, 253, 74, 800 | 64, -1, 252, 73, 245, 69, 253, 69, 253, 69, 801 | 255, 74, 64, -1, 63, -1, 63, 36, -1, 36, 802 | 63, -1, -1, 254, -1, 253, 65, 254, -1, 245, 803 | 73, 204, 74, -1, -1, 245, -1, 255, 65, 245, 804 | -1, 63, 73, 245, 74, -1, 21, 196, -1 805 | }; 806 | 807 | /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 808 | static const yytype_uint16 yyrline[] = 809 | { 810 | 0, 168, 168, 170, 174, 175, 179, 181, 183, 184, 811 | 190, 192, 198, 200, 205, 211, 212, 214, 216, 219, 812 | 220, 227, 228, 228, 232, 278, 279, 280, 281, 285, 813 | 289, 290, 293, 295, 296, 297, 301, 302, 303, 304, 814 | 305, 306, 310, 311, 317, 318, 320, 324, 327, 329, 815 | 331, 333, 335, 337, 339, 341, 348, 350, 355, 356, 816 | 358, 360, 365, 366, 370, 371, 375, 382, 384, 384, 817 | 384, 391, 395, 397, 402, 404, 406, 410, 415, 416, 818 | 421, 423, 430, 435, 436, 437, 438, 439, 440, 441, 819 | 442, 446, 447, 448, 450, 455, 456, 458, 463, 464, 820 | 465, 466, 467, 468, 472, 476, 480, 484, 486, 493, 821 | 494, 499, 498, 512, 511, 527, 528, 532, 533, 538, 822 | 540, 545, 549, 554, 555, 561, 562, 567, 566, 580, 823 | 579, 595, 600, 601, 607, 608, 613, 612, 626, 625, 824 | 641, 646, 647, 652, 654, 658, 659, 664, 665, 668, 825 | 671, 676, 675, 680, 679, 684, 683, 690, 692, 698, 826 | 699, 703, 708, 710, 715, 719, 720, 729, 728, 735, 827 | 758, 759, 761, 762, 769, 774, 775, 776, 778, 784, 828 | 783, 794, 803, 805, 806, 810, 812, 818, 819, 825, 829 | 828, 834, 836, 838, 845, 846, 847, 848, 849, 850, 830 | 851, 852, 853, 854, 855, 856, 863, 865, 862, 869, 831 | 871, 875, 876, 880, 881, 888, 889, 893, 897, 903, 832 | 904, 905, 909, 914, 913, 920, 921, 922, 923, 924, 833 | 925, 926, 927, 931, 932, 934, 939, 945, 946, 947, 834 | 951, 952, 956, 960, 961, 967, 973, 977, 981, 985, 835 | 989, 993, 994, 1000, 1006, 1007, 1014, 1015, 1016, 1017, 836 | 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 837 | 1031, 1037, 1038, 1040, 1047, 1048, 1055, 1056, 1063, 1064, 838 | 1071, 1072, 1079, 1080, 1087, 1088, 1093, 1094, 1100, 1101, 839 | 1106, 1107, 1108, 1109, 1115, 1116, 1121, 1122, 1128, 1129, 840 | 1134, 1135, 1141, 1142, 1147, 1148, 1149, 1155, 1156, 1157, 841 | 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1169, 1173, 842 | 1178, 1180, 1184, 1188, 1193, 1197, 1201, 1203, 1208, 1213, 843 | 1220, 1221, 1222, 1224, 1225, 1226, 1227, 1231, 1232, 1236, 844 | 1240, 1244, 1245, 1249, 1250, 1254, 1258, 1262, 1266, 1268, 845 | 1269, 1270, 1274, 1275, 1279, 1281, 1281, 1281, 1287, 1291, 846 | 1292, 1300, 1301, 1302, 1303, 1307, 1308, 1309, 1312, 1314, 847 | 1315, 1319, 1322, 1324, 1325, 1329, 1335 848 | }; 849 | #endif 850 | 851 | #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 852 | /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 853 | First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 854 | static const char *const yytname[] = 855 | { 856 | "$end", "error", "$undefined", "IDENTIFIER", "TYPE_NAME", "LITERAL", 857 | "STRING_LITERAL", "ELLIPSES", "MUL_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", 858 | "ADD_ASSIGN", "SUB_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", 859 | "XOR_ASSIGN", "OR_ASSIGN", "EQ_OP", "NE_OP", "PTR_OP", "AND_OP", "OR_OP", 860 | "DEC_OP", "INC_OP", "LE_OP", "GE_OP", "LEFT_SHIFT", "RIGHT_SHIFT", 861 | "SIZEOF", "TYPEDEF", "EXTERN", "STATIC", "AUTO", "REGISTER", "CONST", 862 | "VOLATILE", "VOID", "INLINE", "CHAR", "SHORT", "INT", "LONG", "SIGNED", 863 | "UNSIGNED", "FLOAT", "DOUBLE", "BOOL", "STRUCT", "UNION", "ENUM", "CASE", 864 | "DEFAULT", "IF", "ELSE", "SWITCH", "WHILE", "DO", "FOR", "GOTO", 865 | "CONTINUE", "BREAK", "RETURN", "ASM", "';'", "','", "'='", "'{'", "'}'", 866 | "':'", "'.'", "'['", "']'", "'('", "')'", "'*'", "'?'", "'|'", "'^'", 867 | "'&'", "'<'", "'>'", "'+'", "'-'", "'/'", "'%'", "'~'", "'!'", "$accept", 868 | "file", "program", "top_level_declaration", "declaration_list", 869 | "declaration", "declaration_specifiers", "declaration_specifiers1", 870 | "initialized_declarator_list", "@1", "initialized_declarator", 871 | "initialized_declarator1", "initializer_part", "initializer", 872 | "struct_initializer_list", "named_initializer", 873 | "named_initializer_index", "abstract_declarator", 874 | "direct_abstract_declarator", "declarator", "pointer", 875 | "direct_declarator", "simple_declarator", "array_declarator", "@2", "@3", 876 | "name", "storage_class_specifier", "type_qualifier_list", 877 | "type_qualifier", "type_specifier", "type_specifier1", 878 | "floating_type_specifier", "integer_type_specifier", 879 | "integer_type_specifier_part", "boolean_type_specifier", "typedef_name", 880 | "void_type_specifier", "type_name", "enumeration_type_specifier", 881 | "enumeration_type_definition", "@4", "@5", "enumeration_definition_list", 882 | "enumeration_definition_list1", "enumeration_constant_definition", 883 | "enumeration_constant", "enumeration_type_reference", "enumeration_tag", 884 | "structure_type_specifier", "structure_type_definition", "@6", "@7", 885 | "structure_type_reference", "structure_tag", "union_type_specifier", 886 | "union_type_definition", "@8", "@9", "union_type_reference", "union_tag", 887 | "field_list", "field_list1", "field_list2", "component_declaration", 888 | "@10", "@11", "@12", "component_declarator_list", "component_declarator", 889 | "simple_component", "bit_field", "width", "component_name", 890 | "function_definition", "@13", "function_specifier", 891 | "function_specifier1", "function_declarator", "function_declarator0", 892 | "function_direct_declarator", "@14", "function_declarator1", 893 | "function_declarator2", "identifier_list", "parameter_type_list", 894 | "parameter_list", "parameter_declaration", "statement", 895 | "compound_statement", "@15", "@16", "compound_statement_body", 896 | "block_item_list", "block_item", "conditional_statement", 897 | "if_else_statement", "if_statement", "iterative_statement", 898 | "do_statement", "for_statement", "@17", "for_expressions", 899 | "for_expression_or_declaration", "while_statement", "labeled_statement", 900 | "case_label", "default_label", "named_label", "switch_statement", 901 | "break_statement", "continue_statement", "expression_statement", 902 | "goto_statement", "null_statement", "return_statement", "expression", 903 | "comma_expression", "assignment_expression", "assignment_op", 904 | "conditional_expression", "logical_or_expression", 905 | "logical_and_expression", "bitwise_or_expression", 906 | "bitwise_xor_expression", "bitwise_and_expression", 907 | "equality_expression", "equality_op", "relational_expression", 908 | "relational_op", "shift_expression", "shift_op", "additive_expression", 909 | "add_op", "multiplicative_expression", "mult_op", "unary_expression", 910 | "address_expression", "bitwise_negation_expression", "cast_expression", 911 | "indirection_expression", "logical_negation_expression", 912 | "predecrement_expression", "preincrement_expression", 913 | "sizeof_expression", "unary_minus_expression", "unary_plus_expression", 914 | "postfix_expression", "component_selection_expression", 915 | "direct_component_selection", "indirect_component_selection", 916 | "function_call", "function_call_direct", "postdecrement_expression", 917 | "postincrement_expression", "subscript_expression", "primary_expression", 918 | "string_literal", "parenthesized_expression", "@18", "@19", 919 | "constant_expression", "expression_list", "asm_statement", "asm_type", 920 | "asm_inout_list", "asm_inout", "asm_clobber_list", "asm_label", 921 | "named_label_address", 0 922 | }; 923 | #endif 924 | 925 | # ifdef YYPRINT 926 | /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 927 | token YYLEX-NUM. */ 928 | static const yytype_uint16 yytoknum[] = 929 | { 930 | 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 931 | 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 932 | 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 933 | 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 934 | 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 935 | 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 936 | 315, 316, 317, 318, 59, 44, 61, 123, 125, 58, 937 | 46, 91, 93, 40, 41, 42, 63, 124, 94, 38, 938 | 60, 62, 43, 45, 47, 37, 126, 33 939 | }; 940 | # endif 941 | 942 | /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 943 | static const yytype_uint16 yyr1[] = 944 | { 945 | 0, 88, 89, 89, 90, 90, 91, 91, 91, 91, 946 | 92, 92, 93, 93, 94, 95, 95, 95, 95, 95, 947 | 95, 96, 97, 96, 98, 99, 99, 99, 99, 100, 948 | 101, 101, 102, 102, 102, 102, 103, 103, 103, 103, 949 | 103, 103, 104, 104, 105, 105, 105, 106, 106, 106, 950 | 106, 106, 106, 106, 106, 106, 107, 107, 108, 108, 951 | 108, 108, 109, 109, 109, 109, 110, 111, 112, 113, 952 | 111, 114, 115, 115, 115, 115, 115, 115, 116, 116, 953 | 117, 117, 118, 119, 119, 119, 119, 119, 119, 119, 954 | 119, 120, 120, 120, 120, 121, 121, 121, 122, 122, 955 | 122, 122, 122, 122, 123, 124, 125, 126, 126, 127, 956 | 127, 129, 128, 130, 128, 131, 131, 132, 132, 133, 957 | 133, 134, 135, 136, 136, 137, 137, 139, 138, 140, 958 | 138, 141, 142, 142, 143, 143, 145, 144, 146, 144, 959 | 147, 148, 148, 149, 149, 150, 150, 151, 151, 151, 960 | 151, 153, 152, 154, 152, 155, 152, 156, 156, 157, 961 | 157, 158, 159, 159, 160, 161, 161, 163, 162, 164, 962 | 165, 165, 165, 165, 166, 167, 167, 167, 167, 169, 963 | 168, 170, 171, 171, 171, 172, 172, 173, 173, 174, 964 | 174, 175, 175, 175, 176, 176, 176, 176, 176, 176, 965 | 176, 176, 176, 176, 176, 176, 178, 179, 177, 180, 966 | 180, 181, 181, 182, 182, 183, 183, 184, 185, 186, 967 | 186, 186, 187, 189, 188, 190, 190, 190, 190, 190, 968 | 190, 190, 190, 191, 191, 191, 192, 193, 193, 193, 969 | 194, 194, 195, 196, 196, 197, 198, 199, 200, 201, 970 | 202, 203, 203, 204, 205, 205, 206, 206, 206, 206, 971 | 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 972 | 207, 208, 208, 208, 209, 209, 210, 210, 211, 211, 973 | 212, 212, 213, 213, 214, 214, 215, 215, 216, 216, 974 | 217, 217, 217, 217, 218, 218, 219, 219, 220, 220, 975 | 221, 221, 222, 222, 223, 223, 223, 224, 224, 224, 976 | 224, 224, 224, 224, 224, 224, 224, 224, 225, 226, 977 | 227, 227, 228, 229, 230, 231, 232, 232, 233, 234, 978 | 235, 235, 235, 235, 235, 235, 235, 236, 236, 237, 979 | 238, 239, 239, 240, 240, 241, 242, 243, 244, 244, 980 | 244, 244, 245, 245, 246, 247, 248, 246, 249, 250, 981 | 250, 251, 251, 251, 251, 252, 252, 252, 253, 253, 982 | 253, 254, 255, 255, 255, 256, 257 983 | }; 984 | 985 | /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 986 | static const yytype_uint8 yyr2[] = 987 | { 988 | 0, 2, 0, 1, 1, 2, 1, 1, 1, 1, 989 | 1, 2, 3, 2, 1, 1, 2, 1, 2, 1, 990 | 2, 1, 0, 4, 1, 1, 2, 2, 3, 2, 991 | 1, 3, 0, 1, 3, 2, 1, 3, 4, 4, 992 | 5, 7, 1, 3, 1, 2, 1, 3, 2, 3, 993 | 3, 4, 2, 3, 3, 4, 1, 2, 1, 2, 994 | 2, 3, 1, 3, 1, 1, 1, 3, 0, 0, 995 | 6, 1, 1, 1, 1, 1, 1, 1, 1, 2, 996 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 997 | 1, 1, 1, 2, 2, 1, 2, 2, 1, 1, 998 | 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 999 | 1, 0, 5, 0, 6, 1, 2, 1, 3, 1, 1000 | 3, 1, 2, 1, 1, 1, 1, 0, 5, 0, 1001 | 6, 2, 1, 1, 1, 1, 0, 5, 0, 6, 1002 | 2, 1, 1, 0, 1, 1, 2, 1, 2, 2, 1003 | 1, 0, 4, 0, 5, 0, 5, 1, 3, 1, 1004 | 1, 1, 2, 3, 1, 1, 1, 0, 3, 1, 1005 | 1, 2, 2, 3, 1, 1, 3, 2, 4, 0, 1006 | 5, 1, 0, 1, 1, 1, 3, 1, 3, 1, 1007 | 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1008 | 1, 1, 1, 1, 1, 1, 0, 0, 5, 0, 1009 | 1, 1, 2, 1, 1, 1, 1, 7, 5, 1, 1010 | 1, 1, 7, 0, 6, 2, 3, 3, 3, 4, 1011 | 4, 4, 5, 1, 2, 1, 5, 2, 2, 2, 1012 | 2, 4, 1, 1, 1, 5, 2, 2, 2, 3, 1013 | 1, 2, 3, 1, 1, 3, 1, 1, 3, 5, 1014 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1015 | 1, 1, 5, 4, 1, 3, 1, 3, 1, 3, 1016 | 1, 3, 1, 3, 1, 3, 1, 1, 1, 3, 1017 | 1, 1, 1, 1, 1, 3, 1, 1, 1, 3, 1018 | 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1019 | 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1020 | 4, 6, 2, 2, 2, 2, 4, 2, 2, 2, 1021 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1022 | 3, 3, 4, 3, 4, 2, 2, 4, 1, 1, 1023 | 1, 1, 1, 2, 3, 0, 0, 5, 1, 1, 1024 | 3, 5, 7, 9, 11, 1, 2, 2, 0, 1, 1025 | 3, 4, 0, 1, 3, 4, 2 1026 | }; 1027 | 1028 | /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state 1029 | STATE-NUM when YYTABLE doesn't specify something else to do. Zero 1030 | means the default is an error. */ 1031 | static const yytype_uint16 yydefact[] = 1032 | { 1033 | 2, 66, 105, 76, 73, 75, 72, 74, 80, 81, 1034 | 106, 77, 100, 101, 102, 103, 98, 99, 91, 92, 1035 | 104, 0, 0, 0, 365, 250, 0, 58, 0, 3, 1036 | 4, 6, 0, 14, 0, 181, 62, 64, 15, 19, 1037 | 17, 82, 84, 85, 95, 86, 88, 90, 83, 109, 1038 | 110, 87, 125, 126, 89, 134, 135, 7, 167, 169, 1039 | 170, 174, 175, 0, 9, 8, 0, 367, 94, 93, 1040 | 132, 133, 127, 131, 141, 142, 136, 140, 123, 124, 1041 | 111, 122, 366, 0, 0, 0, 56, 65, 81, 60, 1042 | 59, 78, 1, 5, 13, 0, 21, 24, 25, 0, 1043 | 171, 0, 177, 68, 16, 20, 18, 103, 97, 96, 1044 | 0, 172, 10, 0, 179, 0, 143, 129, 143, 138, 1045 | 0, 113, 65, 63, 57, 176, 61, 79, 12, 22, 1046 | 0, 0, 27, 26, 173, 65, 67, 0, 206, 168, 1047 | 11, 182, 352, 0, 147, 0, 151, 125, 134, 0, 1048 | 144, 145, 150, 143, 0, 143, 121, 0, 115, 117, 1049 | 119, 0, 0, 0, 71, 349, 0, 0, 0, 0, 1050 | 32, 355, 0, 0, 0, 0, 0, 0, 29, 348, 1051 | 30, 256, 271, 274, 276, 278, 280, 282, 284, 288, 1052 | 294, 298, 302, 307, 308, 309, 310, 311, 312, 313, 1053 | 314, 315, 316, 317, 330, 337, 338, 331, 332, 333, 1054 | 334, 335, 336, 350, 351, 257, 28, 178, 358, 253, 1055 | 254, 69, 209, 185, 192, 0, 184, 183, 187, 189, 1056 | 353, 368, 0, 153, 155, 0, 148, 149, 128, 146, 1057 | 0, 137, 0, 112, 116, 0, 0, 23, 0, 243, 1058 | 244, 376, 324, 325, 355, 327, 71, 166, 0, 0, 1059 | 36, 0, 33, 0, 107, 0, 0, 0, 322, 318, 1060 | 329, 328, 319, 323, 0, 0, 0, 0, 0, 0, 1061 | 0, 286, 287, 0, 291, 293, 290, 292, 0, 296, 1062 | 297, 0, 300, 301, 0, 304, 305, 306, 0, 261, 1063 | 262, 263, 264, 265, 266, 267, 268, 269, 270, 260, 1064 | 0, 0, 345, 346, 0, 0, 0, 0, 0, 71, 1065 | 105, 0, 242, 0, 0, 0, 0, 223, 0, 0, 1066 | 0, 0, 214, 213, 195, 207, 210, 211, 196, 216, 1067 | 215, 197, 219, 220, 221, 198, 0, 0, 0, 199, 1068 | 200, 201, 202, 203, 204, 205, 0, 194, 0, 0, 1069 | 193, 46, 191, 44, 180, 0, 0, 0, 0, 369, 1070 | 361, 0, 0, 0, 161, 0, 157, 159, 160, 130, 1071 | 139, 118, 120, 114, 375, 0, 165, 0, 0, 42, 1072 | 35, 31, 0, 0, 108, 44, 0, 354, 356, 343, 1073 | 359, 0, 275, 302, 0, 0, 277, 279, 281, 283, 1074 | 285, 289, 295, 299, 303, 32, 258, 340, 339, 0, 1075 | 341, 0, 255, 70, 240, 0, 0, 0, 0, 0, 1076 | 0, 0, 247, 246, 251, 0, 0, 212, 237, 239, 1077 | 238, 248, 48, 0, 52, 0, 0, 0, 0, 45, 1078 | 186, 188, 190, 0, 0, 368, 0, 0, 0, 162, 1079 | 164, 0, 152, 0, 326, 0, 0, 0, 34, 37, 1080 | 32, 320, 0, 0, 344, 273, 0, 0, 347, 342, 1081 | 0, 0, 0, 0, 0, 0, 249, 252, 208, 50, 1082 | 47, 54, 49, 0, 53, 0, 0, 370, 0, 362, 1083 | 154, 156, 163, 158, 38, 0, 0, 39, 43, 0, 1084 | 357, 360, 272, 259, 241, 0, 0, 0, 0, 0, 1085 | 235, 0, 0, 233, 51, 55, 371, 372, 0, 40, 1086 | 0, 321, 218, 245, 236, 0, 225, 0, 234, 0, 1087 | 0, 373, 0, 363, 0, 0, 0, 228, 227, 224, 1088 | 226, 0, 0, 0, 41, 217, 222, 229, 230, 231, 1089 | 374, 364, 232 1090 | }; 1091 | 1092 | /* YYDEFGOTO[NTERM-NUM]. */ 1093 | static const yytype_int16 yydefgoto[] = 1094 | { 1095 | -1, 28, 29, 30, 111, 31, 113, 33, 95, 162, 1096 | 96, 97, 132, 260, 261, 262, 388, 445, 361, 84, 1097 | 85, 86, 36, 37, 137, 318, 179, 38, 145, 39, 1098 | 40, 41, 42, 43, 44, 45, 46, 47, 265, 48, 1099 | 49, 120, 161, 157, 158, 159, 160, 50, 81, 51, 1100 | 52, 116, 153, 53, 73, 54, 55, 118, 155, 56, 1101 | 77, 149, 150, 151, 152, 235, 371, 372, 375, 376, 1102 | 377, 378, 459, 263, 57, 110, 58, 59, 60, 61, 1103 | 122, 141, 63, 225, 226, 446, 228, 229, 333, 334, 1104 | 222, 436, 335, 336, 337, 338, 339, 340, 341, 342, 1105 | 343, 430, 521, 522, 344, 345, 346, 347, 348, 349, 1106 | 350, 351, 352, 353, 354, 355, 356, 219, 220, 310, 1107 | 181, 182, 183, 184, 185, 186, 187, 283, 188, 288, 1108 | 189, 291, 190, 294, 191, 298, 192, 193, 194, 195, 1109 | 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 1110 | 206, 207, 208, 209, 210, 211, 212, 213, 214, 267, 1111 | 472, 221, 401, 357, 66, 368, 369, 542, 133, 215 1112 | }; 1113 | 1114 | /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 1115 | STATE-NUM. */ 1116 | #define YYPACT_NINF -405 1117 | static const yytype_int16 yypact[] = 1118 | { 1119 | 420, -405, -405, -405, -405, -405, -405, -405, -405, -30, 1120 | -405, -405, -405, -405, -405, -7, -405, -405, -405, 4, 1121 | -405, 67, 69, 73, 18, -405, 52, 32, 74, 420, 1122 | -405, -405, 33, -405, 14, 9, -405, -405, 1519, 1519, 1123 | 1519, -405, -405, 237, 84, -405, -405, -405, -405, -405, 1124 | -405, -405, -405, -405, -405, -405, -405, -405, -405, -405, 1125 | 1519, -405, 179, 23, -405, -405, 29, -405, -405, -405, 1126 | -405, -405, -405, 101, -405, -405, -405, 104, -405, -405, 1127 | -405, 107, -405, 52, 115, 26, 68, 120, -405, -405, 1128 | 32, -405, -405, -405, -405, 144, -405, -405, -41, 14, 1129 | 1519, 52, 179, 155, -405, -405, -405, -405, -405, -405, 1130 | 165, 1519, -405, 49, -405, 248, 788, -405, 788, -405, 1131 | 235, -405, -405, -405, 68, -405, -405, -405, -405, -405, 1132 | 178, 322, -405, 194, 1519, 192, -405, 1159, -405, -405, 1133 | -405, 1451, -405, 63, -405, 1326, 84, 204, 210, 223, 1134 | 788, -405, -405, 788, 254, 788, -405, 256, 258, -405, 1135 | 264, 235, 52, 248, -405, -405, 216, 1224, 1224, 1249, 1136 | 80, 656, 1224, 1224, 1224, 1224, 1224, 1224, -405, 224, 1137 | -405, -405, 35, 310, 273, 257, 275, 229, -2, 255, 1138 | 203, 94, 291, -405, -405, -405, -405, -405, -405, -405, 1139 | -405, -405, -405, 153, -405, -405, -405, -405, -405, -405, 1140 | -405, -405, -405, 327, -405, -405, -405, -405, -405, 290, 1141 | -405, -405, 486, -405, 17, 285, 293, -405, 296, -405, 1142 | -405, 248, 298, -405, 84, 25, -405, -405, -405, -405, 1143 | 295, -405, 297, -405, 235, 1159, 300, -405, 36, -405, 1144 | -405, -405, -405, -405, 656, -405, 301, -405, 284, 1159, 1145 | -405, -4, -405, 302, 188, 292, 299, 165, -405, -405, 1146 | -405, -405, -405, -405, 797, 1224, 872, 1224, 1224, 1224, 1147 | 1224, -405, -405, 1224, -405, -405, -405, -405, 1224, -405, 1148 | -405, 1224, -405, -405, 1224, -405, -405, -405, 1224, -405, 1149 | -405, -405, -405, -405, -405, -405, -405, -405, -405, -405, 1150 | 894, 284, -405, -405, 284, 1159, 919, 1159, 303, 305, 1151 | 307, 1159, -405, 306, 308, 309, 704, -405, 369, 314, 1152 | 316, 994, -405, -405, -405, -405, 486, -405, -405, -405, 1153 | -405, -405, -405, -405, -405, -405, 315, 318, 321, -405, 1154 | -405, -405, -405, -405, -405, -405, 319, -405, 1016, 1309, 1155 | -405, 113, -405, 60, -405, 388, 1472, 50, 122, -405, 1156 | -405, 25, 25, 1159, 323, 225, -405, -405, -405, -405, 1157 | -405, -405, -405, -405, -405, 325, -405, 330, 328, 386, 1158 | 80, -405, 322, 1356, -405, 164, 1202, -405, -405, -405, 1159 | -405, 91, 310, -405, 1224, 333, 273, 257, 275, 229, 1160 | -2, 255, 203, 94, -405, 80, -405, -405, -405, 334, 1161 | -405, 116, -405, -405, 403, 1159, 1159, 1159, -30, 355, 1162 | 339, 349, -405, -405, -405, 354, 351, -405, -405, -405, 1163 | -405, -405, -405, 348, -405, 347, 356, 1041, 1403, 113, 1164 | -405, -405, -405, 1159, 248, 248, 358, 231, 245, -405, 1165 | -405, 1159, -405, 25, 1202, 322, 775, 1159, -405, -405, 1166 | 80, -405, 359, 1159, -405, -405, 1224, 70, -405, -405, 1167 | 1159, 361, 362, 363, 352, 571, -405, -405, -405, -405, 1168 | -405, -405, -405, 357, -405, 364, 366, -405, 184, -405, 1169 | -405, -405, -405, -405, -405, 322, 284, -405, -405, 93, 1170 | -405, -405, -405, -405, -405, 704, 704, 704, 1159, 1112, 1171 | 52, 367, 368, -405, -405, -405, -405, 248, 379, -405, 1172 | 378, -405, 374, -405, -405, 371, 1159, 382, 383, 704, 1173 | 1137, 327, 157, -405, 322, 704, 407, -405, 1159, -405, 1174 | 1159, 408, 248, 409, -405, -405, -405, -405, -405, 1159, 1175 | 327, -405, -405 1176 | }; 1177 | 1178 | /* YYPGOTO[NTERM-NUM]. */ 1179 | static const yytype_int16 yypgoto[] = 1180 | { 1181 | -405, -405, -405, 418, 375, -52, 1, 232, -46, -405, 1182 | 317, -405, 343, -128, -404, 87, -405, -206, -344, -32, 1183 | 5, 6, -405, -405, -405, -405, -405, -405, -17, -1, 1184 | 30, -405, -405, -405, 435, -405, -405, -405, 226, -405, 1185 | -405, -405, -405, 320, -405, 238, -405, -405, -405, -405, 1186 | 86, -405, -405, -405, -405, -405, 112, -405, -405, -405, 1187 | -405, 42, -405, 335, -405, -405, -405, -405, -60, 24, 1188 | -405, -405, 37, -249, -405, -405, -405, -405, 462, -405, 1189 | 15, -405, -405, -405, -405, -129, -405, 130, -299, -103, 1190 | -405, -405, -405, -405, 161, -405, -405, -405, -405, -405, 1191 | -405, -405, -405, -405, -405, -405, -405, -405, 337, -405, 1192 | -405, -405, -405, -405, 16, -405, -133, -405, -117, -405, 1193 | -383, -405, 230, 222, 228, 221, 233, -405, 218, -405, 1194 | 220, -405, 213, -405, 217, -405, 38, -405, -405, -405, 1195 | -405, -405, -405, -405, -405, -405, -405, -405, -405, -405, 1196 | -405, -405, -405, -405, -405, -405, -405, -113, -405, -405, 1197 | -405, -246, 196, 31, -405, 85, 97, -405, -405, -405 1198 | }; 1199 | 1200 | /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 1201 | positive, shift that token. If negative, reduce the rule which 1202 | number is the opposite. If zero, do what YYDEFACT says. 1203 | If YYTABLE_NINF, syntax error. */ 1204 | #define YYTABLE_NINF -245 1205 | static const yytype_int16 yytable[] = 1206 | { 1207 | 98, 32, 143, 178, 218, 34, 35, 139, 112, 387, 1208 | 90, 477, 227, 389, 180, 62, 64, 1, 360, 449, 1209 | 1, 475, 130, 284, 285, 131, 91, 429, 1, 1, 1210 | 32, 65, 89, 67, 34, 35, 1, 99, 266, 68, 1211 | 35, 87, 230, 109, 62, 64, 69, 62, 112, 102, 1212 | 248, 449, 1, 180, 82, 1, 230, 275, 394, 140, 1213 | 65, 390, 417, 1, 391, 418, 509, 8, 88, 230, 1214 | 70, 71, 74, 75, 92, 424, 78, 79, 286, 287, 1215 | 103, 98, 140, 256, 257, 165, 142, 101, 358, 127, 1216 | 359, 124, 27, 512, 373, 126, 114, 94, 83, 83, 1217 | 27, 166, 115, 167, 168, 124, 26, 27, 27, 169, 1218 | 384, 276, 443, 94, 102, 91, 135, 91, 367, 8, 1219 | 88, 266, 83, 453, 27, 83, 218, 27, 382, 234, 1220 | 98, 358, 231, 359, 72, 390, 76, 232, 513, 103, 1221 | 80, -181, 224, 405, 127, 91, 146, 170, 146, 91, 1222 | 258, 259, 91, 171, 91, 172, 473, 400, 390, 173, 1223 | 154, 531, 174, 175, 398, 474, 176, 177, 117, 295, 1224 | 332, 119, 264, 311, 121, 233, 312, 313, 296, 297, 1225 | 146, 473, 419, 146, 447, 146, 448, 454, 218, 123, 1226 | 479, 455, 362, 416, 125, 240, 456, 242, 435, 400, 1227 | 422, 493, 147, 374, 147, 252, 253, 255, 128, 129, 1228 | 268, 269, 270, 271, 272, 273, 532, 533, 534, 249, 1229 | 250, 508, 552, 314, 315, 218, 316, 136, 148, 363, 1230 | 148, 553, 138, 127, 514, 358, 147, 393, 156, 147, 1231 | 549, 147, -65, -65, -65, -65, 555, 281, 282, 454, 1232 | -65, 163, -65, 527, 142, 264, 460, 530, 528, 358, 1233 | 131, 393, 148, 27, 469, 148, 217, 148, 236, 395, 1234 | 104, 105, 106, 180, 237, 180, 12, 13, 14, 107, 1235 | 16, 17, 289, 290, 332, 292, 293, 386, 257, 462, 1236 | 463, 238, 481, 482, 483, 500, 463, 274, 180, 299, 1237 | 300, 301, 302, 303, 304, 305, 306, 307, 308, 501, 1238 | 463, 457, 458, 403, 218, 403, 403, 403, 403, 495, 1239 | 496, 403, 241, 244, 243, 164, 403, 165, 142, 403, 1240 | 245, 277, 403, 230, 218, 279, 414, 504, 507, 374, 1241 | 374, 367, 367, 166, 460, 167, 168, 218, 180, 180, 1242 | 278, 169, 523, 180, 280, 317, 511, 309, 365, 364, 1243 | 224, 366, 370, 379, 363, 380, 396, 224, 383, 124, 1244 | -165, 392, 431, 397, -243, 423, -244, 529, 432, 425, 1245 | 433, 426, 427, 441, 438, 535, 537, 439, 180, 170, 1246 | 440, 450, 461, 467, 224, 171, 465, 172, 395, 464, 1247 | 466, 173, 476, 547, 174, 175, 478, 551, 176, 177, 1248 | 480, 484, 485, 486, 541, 557, 554, 558, 487, 488, 1249 | 489, 490, 499, 1, 2, 518, 562, 180, 545, 524, 1250 | 491, 374, 540, 510, 471, 515, 516, 517, 525, 560, 1251 | 526, 539, 403, 543, 544, 546, 548, 93, 129, 224, 1252 | 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1253 | 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 1254 | 23, 556, 559, 561, 538, 134, 216, 468, 108, 247, 1255 | 385, 246, 381, 24, 25, 239, 520, 503, 98, 319, 1256 | 320, 165, 142, 26, 100, 27, 452, 437, 502, 406, 1257 | 408, 410, 471, 251, 412, 402, 407, 166, 411, 167, 1258 | 168, 413, 421, 409, 403, 169, 3, 4, 5, 6, 1259 | 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1260 | 17, 18, 19, 20, 21, 22, 23, 321, 322, 323, 1261 | 498, 324, 325, 326, 327, 328, 329, 330, 331, 24, 1262 | 25, 497, 0, 138, 0, 0, 0, 0, 0, 171, 1263 | 0, 172, 0, 0, 0, 173, 0, 0, 174, 175, 1264 | 0, 0, 176, 177, 164, 2, 165, 142, 0, 0, 1265 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1266 | 0, 0, 166, 0, 167, 168, 0, 0, 0, 0, 1267 | 169, 3, 4, 5, 6, 7, 8, 88, 10, 11, 1268 | 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 1269 | 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 1270 | 0, 0, 0, 0, 0, 519, 0, 0, 0, 0, 1271 | 0, 0, 0, 0, 171, 0, 172, 0, 0, 0, 1272 | 173, 0, 0, 174, 175, 0, 0, 176, 177, 164, 1273 | 2, 165, 142, 0, 0, 0, 0, 0, 0, 0, 1274 | 0, 0, 0, 0, 0, 0, 0, 166, 0, 167, 1275 | 168, 0, 0, 0, 0, 169, 3, 4, 5, 6, 1276 | 7, 8, 88, 10, 11, 12, 13, 14, 15, 16, 1277 | 17, 18, 19, 20, 21, 22, 23, 319, 250, 165, 1278 | 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1279 | 0, 0, 0, 0, 0, 166, 0, 167, 168, 171, 1280 | 0, 172, 0, 169, 0, 173, 0, 0, 174, 175, 1281 | 428, 0, 176, 177, 0, 0, 0, 0, 0, 0, 1282 | 0, 0, 0, 0, 0, 321, 322, 323, 0, 324, 1283 | 325, 326, 327, 328, 329, 330, 331, 24, 25, 0, 1284 | 0, 138, 0, 0, 0, 0, 0, 171, 164, 172, 1285 | 165, 142, 0, 173, 0, 0, 174, 175, 0, 0, 1286 | 176, 177, 2, 0, 0, 0, 166, 0, 167, 168, 1287 | 164, 0, 165, 142, 169, 0, 0, 0, 0, 0, 1288 | 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 1289 | 167, 168, 0, 8, 88, 10, 169, 12, 13, 14, 1290 | 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 1291 | 0, 505, 170, 0, 0, 506, 0, 0, 171, 0, 1292 | 172, 0, 144, 0, 173, 0, 0, 174, 175, 0, 1293 | 0, 176, 177, 0, 0, 0, 0, 0, 0, 0, 1294 | 171, 399, 172, 0, 0, 164, 173, 165, 142, 174, 1295 | 175, 0, 0, 176, 177, 0, 0, 0, 0, 0, 1296 | 0, 0, 0, 166, 0, 167, 168, 164, 0, 165, 1297 | 142, 169, 0, 0, 0, 0, 0, 0, 0, 0, 1298 | 0, 0, 0, 0, 0, 166, 0, 167, 168, 0, 1299 | 0, 0, 164, 169, 165, 142, 0, 0, 0, 0, 1300 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1301 | 166, 404, 167, 168, 0, 171, 0, 172, 169, 0, 1302 | 0, 173, 0, 0, 174, 175, 0, 0, 176, 177, 1303 | 0, 415, 0, 0, 0, 0, 0, 171, 0, 172, 1304 | 0, 0, 0, 173, 0, 0, 174, 175, 0, 0, 1305 | 176, 177, 0, 0, 0, 0, 0, 0, 0, 0, 1306 | 0, 0, 171, 420, 172, 0, 0, 164, 173, 165, 1307 | 142, 174, 175, 0, 0, 176, 177, 0, 0, 0, 1308 | 0, 0, 0, 0, 0, 166, 0, 167, 168, 164, 1309 | 0, 165, 142, 169, 0, 0, 0, 0, 0, 0, 1310 | 0, 0, 0, 0, 0, 0, 0, 166, 0, 167, 1311 | 168, 0, 0, 0, 164, 169, 165, 142, 0, 0, 1312 | 0, 0, 0, 0, 0, 0, 0, 0, 434, 0, 1313 | 0, 0, 166, 0, 167, 168, 0, 171, 0, 172, 1314 | 169, 0, 0, 173, 0, 0, 174, 175, 0, 0, 1315 | 176, 177, 0, 0, 0, 0, 0, 0, 442, 171, 1316 | 0, 172, 0, 0, 0, 173, 0, 0, 174, 175, 1317 | 0, 0, 176, 177, 0, 0, 0, 0, 0, 0, 1318 | 0, 0, 0, 492, 171, 164, 172, 165, 142, 0, 1319 | 173, 0, 0, 174, 175, 0, 0, 176, 177, 0, 1320 | 0, 0, 0, 166, 0, 167, 168, 0, 0, 0, 1321 | 164, 169, 165, 142, 0, 0, 0, 0, 0, 0, 1322 | 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 1323 | 167, 168, 164, 0, 165, 142, 169, 0, 0, 0, 1324 | 0, 0, 0, 0, 0, 0, 536, 0, 0, 0, 1325 | 166, 0, 167, 168, 0, 171, 0, 172, 169, 0, 1326 | 0, 173, 0, 0, 174, 175, 0, 0, 176, 177, 1327 | 0, 550, 0, 0, 0, 164, 0, 165, 142, 0, 1328 | 171, 0, 172, 0, 0, 0, 173, 0, 0, 174, 1329 | 175, 0, 0, 176, 177, 167, 168, 164, 0, 165, 1330 | 142, 169, 171, 0, 172, 0, 0, 0, 173, 0, 1331 | 0, 174, 175, 0, 0, 176, 177, 167, 168, 0, 1332 | 0, 0, 164, 169, 165, 142, 0, 0, 0, 0, 1333 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 470, 1334 | 0, 0, 167, 168, 0, 171, 0, 172, 169, 0, 1335 | 0, 173, 0, 0, 174, 175, 0, 0, 176, 177, 1336 | 0, 0, 0, 0, 0, 0, 0, 171, 0, 172, 1337 | 0, 0, 0, 173, 0, 0, 174, 175, 0, 0, 1338 | 176, 177, 1, 2, 0, 0, 0, 0, 0, 0, 1339 | 0, 0, 254, 0, 172, 0, 0, 0, 173, 0, 1340 | 2, 174, 175, 0, 0, 176, 177, 0, 0, 3, 1341 | 4, 5, 6, 7, 8, 88, 10, 11, 12, 13, 1342 | 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 1343 | 2, 8, 88, 10, 0, 12, 13, 14, 15, 16, 1344 | 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 1345 | 358, 0, 359, 444, 27, 0, 3, 4, 5, 6, 1346 | 7, 8, 88, 10, 11, 12, 13, 14, 15, 16, 1347 | 17, 18, 19, 20, 21, 22, 23, 2, 0, 0, 1348 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349 | 0, 0, 0, 0, 0, 0, 0, 358, 0, 393, 1350 | 444, 27, 0, 3, 4, 5, 6, 7, 8, 88, 1351 | 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1352 | 20, 21, 22, 23, 223, 2, 0, 0, 0, 0, 1353 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1354 | 0, 0, 0, 0, 0, 0, 2, 494, 0, 451, 1355 | 0, 3, 4, 5, 6, 7, 8, 88, 10, 11, 1356 | 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 1357 | 22, 23, 3, 4, 5, 6, 7, 8, 88, 10, 1358 | 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1359 | 21, 22, 23, 2, 0, 0, 0, 0, 0, 0, 1360 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1361 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1362 | 4, 5, 6, 7, 8, 88, 10, 11, 12, 13, 1363 | 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 1364 | }; 1365 | 1366 | static const yytype_int16 yycheck[] = 1367 | { 1368 | 32, 0, 115, 131, 137, 0, 0, 110, 60, 258, 1369 | 27, 415, 141, 259, 131, 0, 0, 3, 224, 363, 1370 | 3, 404, 63, 25, 26, 66, 27, 326, 3, 3, 1371 | 29, 0, 27, 63, 29, 29, 3, 32, 171, 46, 1372 | 34, 26, 6, 44, 29, 29, 42, 32, 100, 34, 1373 | 163, 395, 3, 170, 36, 3, 6, 22, 264, 111, 1374 | 29, 65, 311, 3, 68, 314, 470, 35, 36, 6, 1375 | 3, 4, 3, 4, 0, 321, 3, 4, 80, 81, 1376 | 71, 113, 134, 3, 4, 5, 6, 73, 71, 90, 1377 | 73, 85, 75, 476, 69, 90, 73, 64, 73, 73, 1378 | 75, 21, 73, 23, 24, 99, 73, 75, 75, 29, 1379 | 74, 76, 358, 64, 99, 116, 101, 118, 231, 35, 1380 | 36, 254, 73, 73, 75, 73, 259, 75, 245, 146, 1381 | 162, 71, 69, 73, 67, 65, 67, 74, 68, 71, 1382 | 67, 73, 141, 276, 145, 146, 116, 67, 118, 150, 1383 | 70, 71, 153, 73, 155, 75, 65, 274, 65, 79, 1384 | 118, 68, 82, 83, 267, 74, 86, 87, 67, 75, 1385 | 222, 67, 171, 20, 67, 145, 23, 24, 84, 85, 1386 | 150, 65, 315, 153, 71, 155, 73, 65, 321, 74, 1387 | 74, 69, 224, 310, 74, 153, 74, 155, 331, 316, 1388 | 317, 447, 116, 235, 118, 167, 168, 169, 64, 65, 1389 | 172, 173, 174, 175, 176, 177, 515, 516, 517, 3, 1390 | 4, 467, 65, 70, 71, 358, 73, 72, 116, 224, 1391 | 118, 74, 67, 234, 480, 71, 150, 73, 3, 153, 1392 | 539, 155, 63, 64, 65, 66, 545, 18, 19, 65, 1393 | 71, 73, 73, 69, 6, 254, 373, 506, 74, 71, 1394 | 66, 73, 150, 75, 392, 153, 74, 155, 64, 264, 1395 | 38, 39, 40, 390, 64, 392, 39, 40, 41, 42, 1396 | 43, 44, 27, 28, 336, 82, 83, 3, 4, 64, 1397 | 65, 68, 425, 426, 427, 64, 65, 73, 415, 8, 1398 | 9, 10, 11, 12, 13, 14, 15, 16, 17, 64, 1399 | 65, 371, 372, 275, 447, 277, 278, 279, 280, 448, 1400 | 453, 283, 68, 65, 68, 3, 288, 5, 6, 291, 1401 | 66, 21, 294, 6, 467, 78, 298, 465, 466, 371, 1402 | 372, 454, 455, 21, 461, 23, 24, 480, 465, 466, 1403 | 77, 29, 485, 470, 79, 65, 473, 66, 65, 74, 1404 | 359, 65, 64, 68, 359, 68, 74, 366, 68, 363, 1405 | 69, 69, 3, 74, 69, 72, 69, 505, 64, 73, 1406 | 64, 73, 73, 64, 69, 518, 519, 69, 505, 67, 1407 | 69, 3, 69, 7, 393, 73, 66, 75, 393, 74, 1408 | 72, 79, 69, 536, 82, 83, 72, 540, 86, 87, 1409 | 7, 56, 73, 64, 527, 548, 544, 550, 64, 68, 1410 | 72, 74, 64, 3, 4, 73, 559, 544, 54, 72, 1411 | 74, 463, 64, 74, 396, 74, 74, 74, 74, 552, 1412 | 74, 74, 404, 64, 66, 74, 64, 29, 65, 448, 1413 | 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 1414 | 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 1415 | 50, 64, 64, 64, 520, 100, 133, 390, 43, 162, 1416 | 254, 161, 244, 63, 64, 150, 485, 463, 520, 3, 1417 | 4, 5, 6, 73, 32, 75, 366, 336, 461, 277, 1418 | 279, 283, 464, 166, 291, 275, 278, 21, 288, 23, 1419 | 24, 294, 316, 280, 476, 29, 30, 31, 32, 33, 1420 | 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 1421 | 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 1422 | 455, 55, 56, 57, 58, 59, 60, 61, 62, 63, 1423 | 64, 454, -1, 67, -1, -1, -1, -1, -1, 73, 1424 | -1, 75, -1, -1, -1, 79, -1, -1, 82, 83, 1425 | -1, -1, 86, 87, 3, 4, 5, 6, -1, -1, 1426 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1427 | -1, -1, 21, -1, 23, 24, -1, -1, -1, -1, 1428 | 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 1429 | 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 1430 | 49, 50, -1, -1, -1, -1, -1, -1, -1, -1, 1431 | -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, 1432 | -1, -1, -1, -1, 73, -1, 75, -1, -1, -1, 1433 | 79, -1, -1, 82, 83, -1, -1, 86, 87, 3, 1434 | 4, 5, 6, -1, -1, -1, -1, -1, -1, -1, 1435 | -1, -1, -1, -1, -1, -1, -1, 21, -1, 23, 1436 | 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, 1437 | 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 1438 | 44, 45, 46, 47, 48, 49, 50, 3, 4, 5, 1439 | 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1440 | -1, -1, -1, -1, -1, 21, -1, 23, 24, 73, 1441 | -1, 75, -1, 29, -1, 79, -1, -1, 82, 83, 1442 | 36, -1, 86, 87, -1, -1, -1, -1, -1, -1, 1443 | -1, -1, -1, -1, -1, 51, 52, 53, -1, 55, 1444 | 56, 57, 58, 59, 60, 61, 62, 63, 64, -1, 1445 | -1, 67, -1, -1, -1, -1, -1, 73, 3, 75, 1446 | 5, 6, -1, 79, -1, -1, 82, 83, -1, -1, 1447 | 86, 87, 4, -1, -1, -1, 21, -1, 23, 24, 1448 | 3, -1, 5, 6, 29, -1, -1, -1, -1, -1, 1449 | -1, -1, -1, -1, -1, -1, -1, -1, 21, -1, 1450 | 23, 24, -1, 35, 36, 37, 29, 39, 40, 41, 1451 | 42, 43, 44, 45, 46, 47, 48, 49, 50, -1, 1452 | -1, 66, 67, -1, -1, 70, -1, -1, 73, -1, 1453 | 75, -1, 64, -1, 79, -1, -1, 82, 83, -1, 1454 | -1, 86, 87, -1, -1, -1, -1, -1, -1, -1, 1455 | 73, 74, 75, -1, -1, 3, 79, 5, 6, 82, 1456 | 83, -1, -1, 86, 87, -1, -1, -1, -1, -1, 1457 | -1, -1, -1, 21, -1, 23, 24, 3, -1, 5, 1458 | 6, 29, -1, -1, -1, -1, -1, -1, -1, -1, 1459 | -1, -1, -1, -1, -1, 21, -1, 23, 24, -1, 1460 | -1, -1, 3, 29, 5, 6, -1, -1, -1, -1, 1461 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1462 | 21, 69, 23, 24, -1, 73, -1, 75, 29, -1, 1463 | -1, 79, -1, -1, 82, 83, -1, -1, 86, 87, 1464 | -1, 67, -1, -1, -1, -1, -1, 73, -1, 75, 1465 | -1, -1, -1, 79, -1, -1, 82, 83, -1, -1, 1466 | 86, 87, -1, -1, -1, -1, -1, -1, -1, -1, 1467 | -1, -1, 73, 74, 75, -1, -1, 3, 79, 5, 1468 | 6, 82, 83, -1, -1, 86, 87, -1, -1, -1, 1469 | -1, -1, -1, -1, -1, 21, -1, 23, 24, 3, 1470 | -1, 5, 6, 29, -1, -1, -1, -1, -1, -1, 1471 | -1, -1, -1, -1, -1, -1, -1, 21, -1, 23, 1472 | 24, -1, -1, -1, 3, 29, 5, 6, -1, -1, 1473 | -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, 1474 | -1, -1, 21, -1, 23, 24, -1, 73, -1, 75, 1475 | 29, -1, -1, 79, -1, -1, 82, 83, -1, -1, 1476 | 86, 87, -1, -1, -1, -1, -1, -1, 72, 73, 1477 | -1, 75, -1, -1, -1, 79, -1, -1, 82, 83, 1478 | -1, -1, 86, 87, -1, -1, -1, -1, -1, -1, 1479 | -1, -1, -1, 72, 73, 3, 75, 5, 6, -1, 1480 | 79, -1, -1, 82, 83, -1, -1, 86, 87, -1, 1481 | -1, -1, -1, 21, -1, 23, 24, -1, -1, -1, 1482 | 3, 29, 5, 6, -1, -1, -1, -1, -1, -1, 1483 | -1, -1, -1, -1, -1, -1, -1, -1, 21, -1, 1484 | 23, 24, 3, -1, 5, 6, 29, -1, -1, -1, 1485 | -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, 1486 | 21, -1, 23, 24, -1, 73, -1, 75, 29, -1, 1487 | -1, 79, -1, -1, 82, 83, -1, -1, 86, 87, 1488 | -1, 64, -1, -1, -1, 3, -1, 5, 6, -1, 1489 | 73, -1, 75, -1, -1, -1, 79, -1, -1, 82, 1490 | 83, -1, -1, 86, 87, 23, 24, 3, -1, 5, 1491 | 6, 29, 73, -1, 75, -1, -1, -1, 79, -1, 1492 | -1, 82, 83, -1, -1, 86, 87, 23, 24, -1, 1493 | -1, -1, 3, 29, 5, 6, -1, -1, -1, -1, 1494 | -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, 1495 | -1, -1, 23, 24, -1, 73, -1, 75, 29, -1, 1496 | -1, 79, -1, -1, 82, 83, -1, -1, 86, 87, 1497 | -1, -1, -1, -1, -1, -1, -1, 73, -1, 75, 1498 | -1, -1, -1, 79, -1, -1, 82, 83, -1, -1, 1499 | 86, 87, 3, 4, -1, -1, -1, -1, -1, -1, 1500 | -1, -1, 73, -1, 75, -1, -1, -1, 79, -1, 1501 | 4, 82, 83, -1, -1, 86, 87, -1, -1, 30, 1502 | 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 1503 | 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 1504 | 4, 35, 36, 37, -1, 39, 40, 41, 42, 43, 1505 | 44, 45, 46, 47, 48, 49, 50, -1, -1, -1, 1506 | 71, -1, 73, 74, 75, -1, 30, 31, 32, 33, 1507 | 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 1508 | 44, 45, 46, 47, 48, 49, 50, 4, -1, -1, 1509 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1510 | -1, -1, -1, -1, -1, -1, -1, 71, -1, 73, 1511 | 74, 75, -1, 30, 31, 32, 33, 34, 35, 36, 1512 | 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 1513 | 47, 48, 49, 50, 3, 4, -1, -1, -1, -1, 1514 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1515 | -1, -1, -1, -1, -1, -1, 4, 74, -1, 7, 1516 | -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 1517 | 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 1518 | 49, 50, 30, 31, 32, 33, 34, 35, 36, 37, 1519 | 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 1520 | 48, 49, 50, 4, -1, -1, -1, -1, -1, -1, 1521 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1522 | -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 1523 | 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 1524 | 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 1525 | }; 1526 | 1527 | /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 1528 | symbol of state STATE-NUM. */ 1529 | static const yytype_uint16 yystos[] = 1530 | { 1531 | 0, 3, 4, 30, 31, 32, 33, 34, 35, 36, 1532 | 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 1533 | 47, 48, 49, 50, 63, 64, 73, 75, 89, 90, 1534 | 91, 93, 94, 95, 108, 109, 110, 111, 115, 117, 1535 | 118, 119, 120, 121, 122, 123, 124, 125, 127, 128, 1536 | 135, 137, 138, 141, 143, 144, 147, 162, 164, 165, 1537 | 166, 167, 168, 170, 202, 251, 252, 63, 46, 42, 1538 | 3, 4, 67, 142, 3, 4, 67, 148, 3, 4, 1539 | 67, 136, 36, 73, 107, 108, 109, 168, 36, 108, 1540 | 116, 117, 0, 91, 64, 96, 98, 99, 107, 108, 1541 | 166, 73, 168, 71, 95, 95, 95, 42, 122, 117, 1542 | 163, 92, 93, 94, 73, 73, 139, 67, 145, 67, 1543 | 129, 67, 168, 74, 109, 74, 108, 117, 64, 65, 1544 | 63, 66, 100, 256, 92, 168, 72, 112, 67, 177, 1545 | 93, 169, 6, 245, 64, 116, 118, 138, 144, 149, 1546 | 150, 151, 152, 140, 149, 146, 3, 131, 132, 133, 1547 | 134, 130, 97, 73, 3, 5, 21, 23, 24, 29, 1548 | 67, 73, 75, 79, 82, 83, 86, 87, 101, 114, 1549 | 206, 208, 209, 210, 211, 212, 213, 214, 216, 218, 1550 | 220, 222, 224, 225, 226, 227, 228, 229, 230, 231, 1551 | 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 1552 | 242, 243, 244, 245, 246, 257, 100, 74, 204, 205, 1553 | 206, 249, 178, 3, 94, 171, 172, 173, 174, 175, 1554 | 6, 69, 74, 118, 116, 153, 64, 64, 68, 151, 1555 | 149, 68, 149, 68, 65, 66, 131, 98, 245, 3, 1556 | 4, 196, 224, 224, 73, 224, 3, 4, 70, 71, 1557 | 101, 102, 103, 161, 94, 126, 204, 247, 224, 224, 1558 | 224, 224, 224, 224, 73, 22, 76, 21, 77, 78, 1559 | 79, 18, 19, 215, 25, 26, 80, 81, 217, 27, 1560 | 28, 219, 82, 83, 221, 75, 84, 85, 223, 8, 1561 | 9, 10, 11, 12, 13, 14, 15, 16, 17, 66, 1562 | 207, 20, 23, 24, 70, 71, 73, 65, 113, 3, 1563 | 4, 51, 52, 53, 55, 56, 57, 58, 59, 60, 1564 | 61, 62, 93, 176, 177, 180, 181, 182, 183, 184, 1565 | 185, 186, 187, 188, 192, 193, 194, 195, 196, 197, 1566 | 198, 199, 200, 201, 202, 203, 204, 251, 71, 73, 1567 | 105, 106, 107, 108, 74, 65, 65, 245, 253, 254, 1568 | 64, 154, 155, 69, 107, 156, 157, 158, 159, 68, 1569 | 68, 133, 206, 68, 74, 126, 3, 161, 104, 249, 1570 | 65, 68, 69, 73, 105, 108, 74, 74, 177, 74, 1571 | 206, 250, 210, 224, 69, 204, 211, 212, 213, 214, 1572 | 216, 218, 220, 222, 224, 67, 206, 161, 161, 204, 1573 | 74, 250, 206, 72, 249, 73, 73, 73, 36, 176, 1574 | 189, 3, 64, 64, 64, 204, 179, 182, 69, 69, 1575 | 69, 64, 72, 249, 74, 105, 173, 71, 73, 106, 1576 | 3, 7, 175, 73, 65, 69, 74, 156, 156, 160, 1577 | 206, 69, 64, 65, 74, 66, 72, 7, 103, 101, 1578 | 67, 224, 248, 65, 74, 208, 69, 102, 72, 74, 1579 | 7, 204, 204, 204, 56, 73, 64, 64, 68, 72, 1580 | 74, 74, 72, 249, 74, 173, 204, 254, 253, 64, 1581 | 64, 64, 160, 157, 101, 66, 70, 101, 249, 102, 1582 | 74, 206, 208, 68, 249, 74, 74, 74, 73, 64, 1583 | 94, 190, 191, 204, 72, 74, 74, 69, 74, 101, 1584 | 161, 68, 176, 176, 176, 204, 64, 204, 96, 74, 1585 | 64, 245, 255, 64, 66, 54, 74, 204, 64, 176, 1586 | 64, 204, 65, 74, 101, 176, 64, 204, 204, 64, 1587 | 245, 64, 204 1588 | }; 1589 | 1590 | #define yyerrok (yyerrstatus = 0) 1591 | #define yyclearin (yychar = YYEMPTY) 1592 | #define YYEMPTY (-2) 1593 | #define YYEOF 0 1594 | 1595 | #define YYACCEPT goto yyacceptlab 1596 | #define YYABORT goto yyabortlab 1597 | #define YYERROR goto yyerrorlab 1598 | 1599 | 1600 | /* Like YYERROR except do call yyerror. This remains here temporarily 1601 | to ease the transition to the new meaning of YYERROR, for GCC. 1602 | Once GCC version 2 has supplanted version 1, this can go. */ 1603 | 1604 | #define YYFAIL goto yyerrlab 1605 | 1606 | #define YYRECOVERING() (!!yyerrstatus) 1607 | 1608 | #define YYBACKUP(Token, Value) \ 1609 | do \ 1610 | if (yychar == YYEMPTY && yylen == 1) \ 1611 | { \ 1612 | yychar = (Token); \ 1613 | yylval = (Value); \ 1614 | yytoken = YYTRANSLATE (yychar); \ 1615 | YYPOPSTACK (1); \ 1616 | goto yybackup; \ 1617 | } \ 1618 | else \ 1619 | { \ 1620 | yyerror (YY_("syntax error: cannot back up")); \ 1621 | YYERROR; \ 1622 | } \ 1623 | while (YYID (0)) 1624 | 1625 | 1626 | #define YYTERROR 1 1627 | #define YYERRCODE 256 1628 | 1629 | 1630 | /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 1631 | If N is 0, then set CURRENT to the empty location which ends 1632 | the previous symbol: RHS[0] (always defined). */ 1633 | 1634 | #define YYRHSLOC(Rhs, K) ((Rhs)[K]) 1635 | #ifndef YYLLOC_DEFAULT 1636 | # define YYLLOC_DEFAULT(Current, Rhs, N) \ 1637 | do \ 1638 | if (YYID (N)) \ 1639 | { \ 1640 | (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 1641 | (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 1642 | (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 1643 | (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 1644 | } \ 1645 | else \ 1646 | { \ 1647 | (Current).first_line = (Current).last_line = \ 1648 | YYRHSLOC (Rhs, 0).last_line; \ 1649 | (Current).first_column = (Current).last_column = \ 1650 | YYRHSLOC (Rhs, 0).last_column; \ 1651 | } \ 1652 | while (YYID (0)) 1653 | #endif 1654 | 1655 | 1656 | /* YY_LOCATION_PRINT -- Print the location on the stream. 1657 | This macro was not mandated originally: define only if we know 1658 | we won't break user code: when these are the locations we know. */ 1659 | 1660 | #ifndef YY_LOCATION_PRINT 1661 | # if YYLTYPE_IS_TRIVIAL 1662 | # define YY_LOCATION_PRINT(File, Loc) \ 1663 | fprintf (File, "%d.%d-%d.%d", \ 1664 | (Loc).first_line, (Loc).first_column, \ 1665 | (Loc).last_line, (Loc).last_column) 1666 | # else 1667 | # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 1668 | # endif 1669 | #endif 1670 | 1671 | 1672 | /* YYLEX -- calling `yylex' with the right arguments. */ 1673 | 1674 | #ifdef YYLEX_PARAM 1675 | # define YYLEX yylex (YYLEX_PARAM) 1676 | #else 1677 | # define YYLEX yylex () 1678 | #endif 1679 | 1680 | /* Enable debugging if requested. */ 1681 | #if YYDEBUG 1682 | 1683 | # ifndef YYFPRINTF 1684 | # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 1685 | # define YYFPRINTF fprintf 1686 | # endif 1687 | 1688 | # define YYDPRINTF(Args) \ 1689 | do { \ 1690 | if (yydebug) \ 1691 | YYFPRINTF Args; \ 1692 | } while (YYID (0)) 1693 | 1694 | # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 1695 | do { \ 1696 | if (yydebug) \ 1697 | { \ 1698 | YYFPRINTF (stderr, "%s ", Title); \ 1699 | yy_symbol_print (stderr, \ 1700 | Type, Value); \ 1701 | YYFPRINTF (stderr, "\n"); \ 1702 | } \ 1703 | } while (YYID (0)) 1704 | 1705 | 1706 | /*--------------------------------. 1707 | | Print this symbol on YYOUTPUT. | 1708 | `--------------------------------*/ 1709 | 1710 | /*ARGSUSED*/ 1711 | #if (defined __STDC__ || defined __C99__FUNC__ \ 1712 | || defined __cplusplus || defined _MSC_VER) 1713 | static void 1714 | yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 1715 | #else 1716 | static void 1717 | yy_symbol_value_print (yyoutput, yytype, yyvaluep) 1718 | FILE *yyoutput; 1719 | int yytype; 1720 | YYSTYPE const * const yyvaluep; 1721 | #endif 1722 | { 1723 | if (!yyvaluep) 1724 | return; 1725 | # ifdef YYPRINT 1726 | if (yytype < YYNTOKENS) 1727 | YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 1728 | # else 1729 | YYUSE (yyoutput); 1730 | # endif 1731 | switch (yytype) 1732 | { 1733 | default: 1734 | break; 1735 | } 1736 | } 1737 | 1738 | 1739 | /*--------------------------------. 1740 | | Print this symbol on YYOUTPUT. | 1741 | `--------------------------------*/ 1742 | 1743 | #if (defined __STDC__ || defined __C99__FUNC__ \ 1744 | || defined __cplusplus || defined _MSC_VER) 1745 | static void 1746 | yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 1747 | #else 1748 | static void 1749 | yy_symbol_print (yyoutput, yytype, yyvaluep) 1750 | FILE *yyoutput; 1751 | int yytype; 1752 | YYSTYPE const * const yyvaluep; 1753 | #endif 1754 | { 1755 | if (yytype < YYNTOKENS) 1756 | YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 1757 | else 1758 | YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 1759 | 1760 | yy_symbol_value_print (yyoutput, yytype, yyvaluep); 1761 | YYFPRINTF (yyoutput, ")"); 1762 | } 1763 | 1764 | /*------------------------------------------------------------------. 1765 | | yy_stack_print -- Print the state stack from its BOTTOM up to its | 1766 | | TOP (included). | 1767 | `------------------------------------------------------------------*/ 1768 | 1769 | #if (defined __STDC__ || defined __C99__FUNC__ \ 1770 | || defined __cplusplus || defined _MSC_VER) 1771 | static void 1772 | yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) 1773 | #else 1774 | static void 1775 | yy_stack_print (bottom, top) 1776 | yytype_int16 *bottom; 1777 | yytype_int16 *top; 1778 | #endif 1779 | { 1780 | YYFPRINTF (stderr, "Stack now"); 1781 | for (; bottom <= top; ++bottom) 1782 | YYFPRINTF (stderr, " %d", *bottom); 1783 | YYFPRINTF (stderr, "\n"); 1784 | } 1785 | 1786 | # define YY_STACK_PRINT(Bottom, Top) \ 1787 | do { \ 1788 | if (yydebug) \ 1789 | yy_stack_print ((Bottom), (Top)); \ 1790 | } while (YYID (0)) 1791 | 1792 | 1793 | /*------------------------------------------------. 1794 | | Report that the YYRULE is going to be reduced. | 1795 | `------------------------------------------------*/ 1796 | 1797 | #if (defined __STDC__ || defined __C99__FUNC__ \ 1798 | || defined __cplusplus || defined _MSC_VER) 1799 | static void 1800 | yy_reduce_print (YYSTYPE *yyvsp, int yyrule) 1801 | #else 1802 | static void 1803 | yy_reduce_print (yyvsp, yyrule) 1804 | YYSTYPE *yyvsp; 1805 | int yyrule; 1806 | #endif 1807 | { 1808 | int yynrhs = yyr2[yyrule]; 1809 | int yyi; 1810 | unsigned long int yylno = yyrline[yyrule]; 1811 | YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 1812 | yyrule - 1, yylno); 1813 | /* The symbols being reduced. */ 1814 | for (yyi = 0; yyi < yynrhs; yyi++) 1815 | { 1816 | fprintf (stderr, " $%d = ", yyi + 1); 1817 | yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 1818 | &(yyvsp[(yyi + 1) - (yynrhs)]) 1819 | ); 1820 | fprintf (stderr, "\n"); 1821 | } 1822 | } 1823 | 1824 | # define YY_REDUCE_PRINT(Rule) \ 1825 | do { \ 1826 | if (yydebug) \ 1827 | yy_reduce_print (yyvsp, Rule); \ 1828 | } while (YYID (0)) 1829 | 1830 | /* Nonzero means print parse trace. It is left uninitialized so that 1831 | multiple parsers can coexist. */ 1832 | int yydebug; 1833 | #else /* !YYDEBUG */ 1834 | # define YYDPRINTF(Args) 1835 | # define YY_SYMBOL_PRINT(Title, Type, Value, Location) 1836 | # define YY_STACK_PRINT(Bottom, Top) 1837 | # define YY_REDUCE_PRINT(Rule) 1838 | #endif /* !YYDEBUG */ 1839 | 1840 | 1841 | /* YYINITDEPTH -- initial size of the parser's stacks. */ 1842 | #ifndef YYINITDEPTH 1843 | # define YYINITDEPTH 200 1844 | #endif 1845 | 1846 | /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 1847 | if the built-in stack extension method is used). 1848 | 1849 | Do not make this value too large; the results are undefined if 1850 | YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 1851 | evaluated with infinite-precision integer arithmetic. */ 1852 | 1853 | #ifndef YYMAXDEPTH 1854 | # define YYMAXDEPTH 10000 1855 | #endif 1856 | 1857 | 1858 | 1859 | #if YYERROR_VERBOSE 1860 | 1861 | # ifndef yystrlen 1862 | # if defined __GLIBC__ && defined _STRING_H 1863 | # define yystrlen strlen 1864 | # else 1865 | /* Return the length of YYSTR. */ 1866 | #if (defined __STDC__ || defined __C99__FUNC__ \ 1867 | || defined __cplusplus || defined _MSC_VER) 1868 | static YYSIZE_T 1869 | yystrlen (const char *yystr) 1870 | #else 1871 | static YYSIZE_T 1872 | yystrlen (yystr) 1873 | const char *yystr; 1874 | #endif 1875 | { 1876 | YYSIZE_T yylen; 1877 | for (yylen = 0; yystr[yylen]; yylen++) 1878 | continue; 1879 | return yylen; 1880 | } 1881 | # endif 1882 | # endif 1883 | 1884 | # ifndef yystpcpy 1885 | # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 1886 | # define yystpcpy stpcpy 1887 | # else 1888 | /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 1889 | YYDEST. */ 1890 | #if (defined __STDC__ || defined __C99__FUNC__ \ 1891 | || defined __cplusplus || defined _MSC_VER) 1892 | static char * 1893 | yystpcpy (char *yydest, const char *yysrc) 1894 | #else 1895 | static char * 1896 | yystpcpy (yydest, yysrc) 1897 | char *yydest; 1898 | const char *yysrc; 1899 | #endif 1900 | { 1901 | char *yyd = yydest; 1902 | const char *yys = yysrc; 1903 | 1904 | while ((*yyd++ = *yys++) != '\0') 1905 | continue; 1906 | 1907 | return yyd - 1; 1908 | } 1909 | # endif 1910 | # endif 1911 | 1912 | # ifndef yytnamerr 1913 | /* Copy to YYRES the contents of YYSTR after stripping away unnecessary 1914 | quotes and backslashes, so that it's suitable for yyerror. The 1915 | heuristic is that double-quoting is unnecessary unless the string 1916 | contains an apostrophe, a comma, or backslash (other than 1917 | backslash-backslash). YYSTR is taken from yytname. If YYRES is 1918 | null, do not copy; instead, return the length of what the result 1919 | would have been. */ 1920 | static YYSIZE_T 1921 | yytnamerr (char *yyres, const char *yystr) 1922 | { 1923 | if (*yystr == '"') 1924 | { 1925 | YYSIZE_T yyn = 0; 1926 | char const *yyp = yystr; 1927 | 1928 | for (;;) 1929 | switch (*++yyp) 1930 | { 1931 | case '\'': 1932 | case ',': 1933 | goto do_not_strip_quotes; 1934 | 1935 | case '\\': 1936 | if (*++yyp != '\\') 1937 | goto do_not_strip_quotes; 1938 | /* Fall through. */ 1939 | default: 1940 | if (yyres) 1941 | yyres[yyn] = *yyp; 1942 | yyn++; 1943 | break; 1944 | 1945 | case '"': 1946 | if (yyres) 1947 | yyres[yyn] = '\0'; 1948 | return yyn; 1949 | } 1950 | do_not_strip_quotes: ; 1951 | } 1952 | 1953 | if (! yyres) 1954 | return yystrlen (yystr); 1955 | 1956 | return yystpcpy (yyres, yystr) - yyres; 1957 | } 1958 | # endif 1959 | 1960 | /* Copy into YYRESULT an error message about the unexpected token 1961 | YYCHAR while in state YYSTATE. Return the number of bytes copied, 1962 | including the terminating null byte. If YYRESULT is null, do not 1963 | copy anything; just return the number of bytes that would be 1964 | copied. As a special case, return 0 if an ordinary "syntax error" 1965 | message will do. Return YYSIZE_MAXIMUM if overflow occurs during 1966 | size calculation. */ 1967 | static YYSIZE_T 1968 | yysyntax_error (char *yyresult, int yystate, int yychar) 1969 | { 1970 | int yyn = yypact[yystate]; 1971 | 1972 | if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) 1973 | return 0; 1974 | else 1975 | { 1976 | int yytype = YYTRANSLATE (yychar); 1977 | YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); 1978 | YYSIZE_T yysize = yysize0; 1979 | YYSIZE_T yysize1; 1980 | int yysize_overflow = 0; 1981 | enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 1982 | char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 1983 | int yyx; 1984 | 1985 | # if 0 1986 | /* This is so xgettext sees the translatable formats that are 1987 | constructed on the fly. */ 1988 | YY_("syntax error, unexpected %s"); 1989 | YY_("syntax error, unexpected %s, expecting %s"); 1990 | YY_("syntax error, unexpected %s, expecting %s or %s"); 1991 | YY_("syntax error, unexpected %s, expecting %s or %s or %s"); 1992 | YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); 1993 | # endif 1994 | char *yyfmt; 1995 | char const *yyf; 1996 | static char const yyunexpected[] = "syntax error, unexpected %s"; 1997 | static char const yyexpecting[] = ", expecting %s"; 1998 | static char const yyor[] = " or %s"; 1999 | char yyformat[sizeof yyunexpected 2000 | + sizeof yyexpecting - 1 2001 | + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) 2002 | * (sizeof yyor - 1))]; 2003 | char const *yyprefix = yyexpecting; 2004 | 2005 | /* Start YYX at -YYN if negative to avoid negative indexes in 2006 | YYCHECK. */ 2007 | int yyxbegin = yyn < 0 ? -yyn : 0; 2008 | 2009 | /* Stay within bounds of both yycheck and yytname. */ 2010 | int yychecklim = YYLAST - yyn + 1; 2011 | int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 2012 | int yycount = 1; 2013 | 2014 | yyarg[0] = yytname[yytype]; 2015 | yyfmt = yystpcpy (yyformat, yyunexpected); 2016 | 2017 | for (yyx = yyxbegin; yyx < yyxend; ++yyx) 2018 | if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) 2019 | { 2020 | if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 2021 | { 2022 | yycount = 1; 2023 | yysize = yysize0; 2024 | yyformat[sizeof yyunexpected - 1] = '\0'; 2025 | break; 2026 | } 2027 | yyarg[yycount++] = yytname[yyx]; 2028 | yysize1 = yysize + yytnamerr (0, yytname[yyx]); 2029 | yysize_overflow |= (yysize1 < yysize); 2030 | yysize = yysize1; 2031 | yyfmt = yystpcpy (yyfmt, yyprefix); 2032 | yyprefix = yyor; 2033 | } 2034 | 2035 | yyf = YY_(yyformat); 2036 | yysize1 = yysize + yystrlen (yyf); 2037 | yysize_overflow |= (yysize1 < yysize); 2038 | yysize = yysize1; 2039 | 2040 | if (yysize_overflow) 2041 | return YYSIZE_MAXIMUM; 2042 | 2043 | if (yyresult) 2044 | { 2045 | /* Avoid sprintf, as that infringes on the user's name space. 2046 | Don't have undefined behavior even if the translation 2047 | produced a string with the wrong number of "%s"s. */ 2048 | char *yyp = yyresult; 2049 | int yyi = 0; 2050 | while ((*yyp = *yyf) != '\0') 2051 | { 2052 | if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) 2053 | { 2054 | yyp += yytnamerr (yyp, yyarg[yyi++]); 2055 | yyf += 2; 2056 | } 2057 | else 2058 | { 2059 | yyp++; 2060 | yyf++; 2061 | } 2062 | } 2063 | } 2064 | return yysize; 2065 | } 2066 | } 2067 | #endif /* YYERROR_VERBOSE */ 2068 | 2069 | 2070 | /*-----------------------------------------------. 2071 | | Release the memory associated to this symbol. | 2072 | `-----------------------------------------------*/ 2073 | 2074 | /*ARGSUSED*/ 2075 | #if (defined __STDC__ || defined __C99__FUNC__ \ 2076 | || defined __cplusplus || defined _MSC_VER) 2077 | static void 2078 | yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) 2079 | #else 2080 | static void 2081 | yydestruct (yymsg, yytype, yyvaluep) 2082 | const char *yymsg; 2083 | int yytype; 2084 | YYSTYPE *yyvaluep; 2085 | #endif 2086 | { 2087 | YYUSE (yyvaluep); 2088 | 2089 | if (!yymsg) 2090 | yymsg = "Deleting"; 2091 | YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 2092 | 2093 | switch (yytype) 2094 | { 2095 | 2096 | default: 2097 | break; 2098 | } 2099 | } 2100 | 2101 | 2102 | /* Prevent warnings from -Wmissing-prototypes. */ 2103 | 2104 | #ifdef YYPARSE_PARAM 2105 | #if defined __STDC__ || defined __cplusplus 2106 | int yyparse (void *YYPARSE_PARAM); 2107 | #else 2108 | int yyparse (); 2109 | #endif 2110 | #else /* ! YYPARSE_PARAM */ 2111 | #if defined __STDC__ || defined __cplusplus 2112 | int yyparse (void); 2113 | #else 2114 | int yyparse (); 2115 | #endif 2116 | #endif /* ! YYPARSE_PARAM */ 2117 | 2118 | 2119 | 2120 | /* The look-ahead symbol. */ 2121 | int yychar; 2122 | 2123 | /* The semantic value of the look-ahead symbol. */ 2124 | YYSTYPE yylval; 2125 | 2126 | /* Number of syntax errors so far. */ 2127 | int yynerrs; 2128 | 2129 | 2130 | 2131 | /*----------. 2132 | | yyparse. | 2133 | `----------*/ 2134 | 2135 | #ifdef YYPARSE_PARAM 2136 | #if (defined __STDC__ || defined __C99__FUNC__ \ 2137 | || defined __cplusplus || defined _MSC_VER) 2138 | int 2139 | yyparse (void *YYPARSE_PARAM) 2140 | #else 2141 | int 2142 | yyparse (YYPARSE_PARAM) 2143 | void *YYPARSE_PARAM; 2144 | #endif 2145 | #else /* ! YYPARSE_PARAM */ 2146 | #if (defined __STDC__ || defined __C99__FUNC__ \ 2147 | || defined __cplusplus || defined _MSC_VER) 2148 | int 2149 | yyparse (void) 2150 | #else 2151 | int 2152 | yyparse () 2153 | 2154 | #endif 2155 | #endif 2156 | { 2157 | 2158 | int yystate; 2159 | int yyn; 2160 | int yyresult; 2161 | /* Number of tokens to shift before error messages enabled. */ 2162 | int yyerrstatus; 2163 | /* Look-ahead token as an internal (translated) token number. */ 2164 | int yytoken = 0; 2165 | #if YYERROR_VERBOSE 2166 | /* Buffer for error messages, and its allocated size. */ 2167 | char yymsgbuf[128]; 2168 | char *yymsg = yymsgbuf; 2169 | YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 2170 | #endif 2171 | 2172 | /* Three stacks and their tools: 2173 | `yyss': related to states, 2174 | `yyvs': related to semantic values, 2175 | `yyls': related to locations. 2176 | 2177 | Refer to the stacks thru separate pointers, to allow yyoverflow 2178 | to reallocate them elsewhere. */ 2179 | 2180 | /* The state stack. */ 2181 | yytype_int16 yyssa[YYINITDEPTH]; 2182 | yytype_int16 *yyss = yyssa; 2183 | yytype_int16 *yyssp; 2184 | 2185 | /* The semantic value stack. */ 2186 | YYSTYPE yyvsa[YYINITDEPTH]; 2187 | YYSTYPE *yyvs = yyvsa; 2188 | YYSTYPE *yyvsp; 2189 | 2190 | 2191 | 2192 | #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) 2193 | 2194 | YYSIZE_T yystacksize = YYINITDEPTH; 2195 | 2196 | /* The variables used to return semantic value and location from the 2197 | action routines. */ 2198 | YYSTYPE yyval; 2199 | 2200 | 2201 | /* The number of symbols on the RHS of the reduced rule. 2202 | Keep to zero when no symbol should be popped. */ 2203 | int yylen = 0; 2204 | 2205 | YYDPRINTF ((stderr, "Starting parse\n")); 2206 | 2207 | yystate = 0; 2208 | yyerrstatus = 0; 2209 | yynerrs = 0; 2210 | yychar = YYEMPTY; /* Cause a token to be read. */ 2211 | 2212 | /* Initialize stack pointers. 2213 | Waste one element of value and location stack 2214 | so that they stay on the same level as the state stack. 2215 | The wasted elements are never initialized. */ 2216 | 2217 | yyssp = yyss; 2218 | yyvsp = yyvs; 2219 | 2220 | goto yysetstate; 2221 | 2222 | /*------------------------------------------------------------. 2223 | | yynewstate -- Push a new state, which is found in yystate. | 2224 | `------------------------------------------------------------*/ 2225 | yynewstate: 2226 | /* In all cases, when you get here, the value and location stacks 2227 | have just been pushed. So pushing a state here evens the stacks. */ 2228 | yyssp++; 2229 | 2230 | yysetstate: 2231 | *yyssp = yystate; 2232 | 2233 | if (yyss + yystacksize - 1 <= yyssp) 2234 | { 2235 | /* Get the current used size of the three stacks, in elements. */ 2236 | YYSIZE_T yysize = yyssp - yyss + 1; 2237 | 2238 | #ifdef yyoverflow 2239 | { 2240 | /* Give user a chance to reallocate the stack. Use copies of 2241 | these so that the &'s don't force the real ones into 2242 | memory. */ 2243 | YYSTYPE *yyvs1 = yyvs; 2244 | yytype_int16 *yyss1 = yyss; 2245 | 2246 | 2247 | /* Each stack pointer address is followed by the size of the 2248 | data in use in that stack, in bytes. This used to be a 2249 | conditional around just the two extra args, but that might 2250 | be undefined if yyoverflow is a macro. */ 2251 | yyoverflow (YY_("memory exhausted"), 2252 | &yyss1, yysize * sizeof (*yyssp), 2253 | &yyvs1, yysize * sizeof (*yyvsp), 2254 | 2255 | &yystacksize); 2256 | 2257 | yyss = yyss1; 2258 | yyvs = yyvs1; 2259 | } 2260 | #else /* no yyoverflow */ 2261 | # ifndef YYSTACK_RELOCATE 2262 | goto yyexhaustedlab; 2263 | # else 2264 | /* Extend the stack our own way. */ 2265 | if (YYMAXDEPTH <= yystacksize) 2266 | goto yyexhaustedlab; 2267 | yystacksize *= 2; 2268 | if (YYMAXDEPTH < yystacksize) 2269 | yystacksize = YYMAXDEPTH; 2270 | 2271 | { 2272 | yytype_int16 *yyss1 = yyss; 2273 | union yyalloc *yyptr = 2274 | (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 2275 | if (! yyptr) 2276 | goto yyexhaustedlab; 2277 | YYSTACK_RELOCATE (yyss); 2278 | YYSTACK_RELOCATE (yyvs); 2279 | 2280 | # undef YYSTACK_RELOCATE 2281 | if (yyss1 != yyssa) 2282 | YYSTACK_FREE (yyss1); 2283 | } 2284 | # endif 2285 | #endif /* no yyoverflow */ 2286 | 2287 | yyssp = yyss + yysize - 1; 2288 | yyvsp = yyvs + yysize - 1; 2289 | 2290 | 2291 | YYDPRINTF ((stderr, "Stack size increased to %lu\n", 2292 | (unsigned long int) yystacksize)); 2293 | 2294 | if (yyss + yystacksize - 1 <= yyssp) 2295 | YYABORT; 2296 | } 2297 | 2298 | YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 2299 | 2300 | goto yybackup; 2301 | 2302 | /*-----------. 2303 | | yybackup. | 2304 | `-----------*/ 2305 | yybackup: 2306 | 2307 | /* Do appropriate processing given the current state. Read a 2308 | look-ahead token if we need one and don't already have one. */ 2309 | 2310 | /* First try to decide what to do without reference to look-ahead token. */ 2311 | yyn = yypact[yystate]; 2312 | if (yyn == YYPACT_NINF) 2313 | goto yydefault; 2314 | 2315 | /* Not known => get a look-ahead token if don't already have one. */ 2316 | 2317 | /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ 2318 | if (yychar == YYEMPTY) 2319 | { 2320 | YYDPRINTF ((stderr, "Reading a token: ")); 2321 | yychar = YYLEX; 2322 | } 2323 | 2324 | if (yychar <= YYEOF) 2325 | { 2326 | yychar = yytoken = YYEOF; 2327 | YYDPRINTF ((stderr, "Now at end of input.\n")); 2328 | } 2329 | else 2330 | { 2331 | yytoken = YYTRANSLATE (yychar); 2332 | YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 2333 | } 2334 | 2335 | /* If the proper action on seeing token YYTOKEN is to reduce or to 2336 | detect an error, take that action. */ 2337 | yyn += yytoken; 2338 | if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 2339 | goto yydefault; 2340 | yyn = yytable[yyn]; 2341 | if (yyn <= 0) 2342 | { 2343 | if (yyn == 0 || yyn == YYTABLE_NINF) 2344 | goto yyerrlab; 2345 | yyn = -yyn; 2346 | goto yyreduce; 2347 | } 2348 | 2349 | if (yyn == YYFINAL) 2350 | YYACCEPT; 2351 | 2352 | /* Count tokens shifted since error; after three, turn off error 2353 | status. */ 2354 | if (yyerrstatus) 2355 | yyerrstatus--; 2356 | 2357 | /* Shift the look-ahead token. */ 2358 | YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 2359 | 2360 | /* Discard the shifted token unless it is eof. */ 2361 | if (yychar != YYEOF) 2362 | yychar = YYEMPTY; 2363 | 2364 | yystate = yyn; 2365 | *++yyvsp = yylval; 2366 | 2367 | goto yynewstate; 2368 | 2369 | 2370 | /*-----------------------------------------------------------. 2371 | | yydefault -- do the default action for the current state. | 2372 | `-----------------------------------------------------------*/ 2373 | yydefault: 2374 | yyn = yydefact[yystate]; 2375 | if (yyn == 0) 2376 | goto yyerrlab; 2377 | goto yyreduce; 2378 | 2379 | 2380 | /*-----------------------------. 2381 | | yyreduce -- Do a reduction. | 2382 | `-----------------------------*/ 2383 | yyreduce: 2384 | /* yyn is the number of a rule to reduce with. */ 2385 | yylen = yyr2[yyn]; 2386 | 2387 | /* If YYLEN is nonzero, implement the default value of the action: 2388 | `$$ = $1'. 2389 | 2390 | Otherwise, the following line sets YYVAL to garbage. 2391 | This behavior is undocumented and Bison 2392 | users should not rely upon it. Assigning to YYVAL 2393 | unconditionally makes the parser a bit smaller, and it avoids a 2394 | GCC warning that YYVAL may be used uninitialized. */ 2395 | yyval = yyvsp[1-yylen]; 2396 | 2397 | 2398 | YY_REDUCE_PRINT (yyn); 2399 | switch (yyn) 2400 | { 2401 | case 6: 2402 | #line 180 "./parse.y" 2403 | { scope=0; reset(); common_comment=NULL; in_typedef=0; GetCurrentComment(); } 2404 | break; 2405 | 2406 | case 7: 2407 | #line 182 "./parse.y" 2408 | { scope=0; reset(); common_comment=NULL; in_typedef=0; GetCurrentComment(); } 2409 | break; 2410 | 2411 | case 10: 2412 | #line 191 "./parse.y" 2413 | { scope=0; reset(); common_comment=NULL; in_typedef=0; } 2414 | break; 2415 | 2416 | case 11: 2417 | #line 193 "./parse.y" 2418 | { scope=0; reset(); common_comment=NULL; in_typedef=0; 2419 | (yyval)=(yyvsp[(2) - (2)]); } 2420 | break; 2421 | 2422 | case 12: 2423 | #line 199 "./parse.y" 2424 | { in_type_spec=0; } 2425 | break; 2426 | 2427 | case 13: 2428 | #line 201 "./parse.y" 2429 | { in_type_spec=0; } 2430 | break; 2431 | 2432 | case 14: 2433 | #line 206 "./parse.y" 2434 | { if(!in_structunion && !in_typedef && !in_function && !common_comment) 2435 | {common_comment=CopyString(GetCurrentComment()); SetCurrentComment(common_comment);} } 2436 | break; 2437 | 2438 | case 16: 2439 | #line 213 "./parse.y" 2440 | { if((yyvsp[(1) - (2)])) (yyval)=ConcatStrings(3,(yyvsp[(1) - (2)])," ",(yyvsp[(2) - (2)])); else (yyval)=(yyvsp[(2) - (2)]); } 2441 | break; 2442 | 2443 | case 17: 2444 | #line 215 "./parse.y" 2445 | { if(!current->type) current->type=(yyvsp[(1) - (1)]); } 2446 | break; 2447 | 2448 | case 18: 2449 | #line 217 "./parse.y" 2450 | { if(!current->type) current->type=(yyvsp[(1) - (2)]); 2451 | (yyval)=ConcatStrings(3,(yyvsp[(1) - (2)])," ",(yyvsp[(2) - (2)])); } 2452 | break; 2453 | 2454 | case 20: 2455 | #line 221 "./parse.y" 2456 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (2)])," ",(yyvsp[(2) - (2)])); } 2457 | break; 2458 | 2459 | case 22: 2460 | #line 228 "./parse.y" 2461 | { in_type_spec=1; } 2462 | break; 2463 | 2464 | case 24: 2465 | #line 233 "./parse.y" 2466 | { 2467 | if((in_function==0 || in_function==3) && !in_funcdef && !in_structunion) 2468 | { 2469 | char* specific_comment=GetCurrentComment(); 2470 | if(!common_comment) SetCurrentComment(specific_comment); else 2471 | if(!specific_comment) SetCurrentComment(common_comment); else 2472 | if(strcmp(common_comment,specific_comment)) SetCurrentComment(ConcatStrings(3,common_comment," ",specific_comment)); else 2473 | SetCurrentComment(common_comment); 2474 | } 2475 | 2476 | if(in_typedef) 2477 | { 2478 | char* vname=strstr((yyvsp[(1) - (1)]),current->name); 2479 | SeenTypedefName(current->name,vname[strlen(current->name)]=='('?-1:1); 2480 | if(!in_header) 2481 | SeenTypedef(current->name,ConcatStrings(3,current->qual,current->type,(yyvsp[(1) - (1)]))); 2482 | if(in_function==3) 2483 | DownScope(); 2484 | } 2485 | else if(in_function==2) 2486 | SeenFunctionArg(current->name,ConcatStrings(3,current->qual,current->type,(yyvsp[(1) - (1)]))); 2487 | else 2488 | { 2489 | char* vname=strstr((yyvsp[(1) - (1)]),current->name); 2490 | if(vname[strlen(current->name)]!='(' && IsATypeName(current->type)!='f') 2491 | { 2492 | if((in_funcbody==0 || scope&EXTERN_F) && !in_structunion && !(in_header==GLOBAL && scope&EXTERN_H)) 2493 | SeenVariableDefinition(current->name,ConcatStrings(3,current->qual,current->type,(yyvsp[(1) - (1)])),SCOPE); 2494 | else 2495 | if(in_funcbody) 2496 | SeenScopeVariable(current->name); 2497 | } 2498 | else 2499 | { 2500 | SeenFunctionProto(current->name,in_funcbody); 2501 | if(in_function==3) 2502 | DownScope(); 2503 | } 2504 | } 2505 | 2506 | if(in_function==3 && !in_structunion) in_function=0; 2507 | } 2508 | break; 2509 | 2510 | case 45: 2511 | #line 319 "./parse.y" 2512 | { (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 2513 | break; 2514 | 2515 | case 47: 2516 | #line 325 "./parse.y" 2517 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); 2518 | { int i=0; while((yyvsp[(2) - (3)])[i] && (yyvsp[(2) - (3)])[i]=='*') i++; if(!(yyvsp[(2) - (3)])[i]) in_type_spec=0; } } 2519 | break; 2520 | 2521 | case 48: 2522 | #line 328 "./parse.y" 2523 | { (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 2524 | break; 2525 | 2526 | case 49: 2527 | #line 330 "./parse.y" 2528 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 2529 | break; 2530 | 2531 | case 50: 2532 | #line 332 "./parse.y" 2533 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 2534 | break; 2535 | 2536 | case 51: 2537 | #line 334 "./parse.y" 2538 | { (yyval)=ConcatStrings(4,(yyvsp[(1) - (4)]),(yyvsp[(2) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)])); } 2539 | break; 2540 | 2541 | case 52: 2542 | #line 336 "./parse.y" 2543 | { (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 2544 | break; 2545 | 2546 | case 53: 2547 | #line 338 "./parse.y" 2548 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 2549 | break; 2550 | 2551 | case 54: 2552 | #line 340 "./parse.y" 2553 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 2554 | break; 2555 | 2556 | case 55: 2557 | #line 342 "./parse.y" 2558 | { (yyval)=ConcatStrings(4,(yyvsp[(1) - (4)]),(yyvsp[(2) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)])); } 2559 | break; 2560 | 2561 | case 56: 2562 | #line 349 "./parse.y" 2563 | { in_type_spec=0; } 2564 | break; 2565 | 2566 | case 57: 2567 | #line 351 "./parse.y" 2568 | { in_type_spec=0; (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 2569 | break; 2570 | 2571 | case 59: 2572 | #line 357 "./parse.y" 2573 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (2)])," ",(yyvsp[(2) - (2)])); } 2574 | break; 2575 | 2576 | case 60: 2577 | #line 359 "./parse.y" 2578 | { (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 2579 | break; 2580 | 2581 | case 61: 2582 | #line 361 "./parse.y" 2583 | { (yyval)=ConcatStrings(4,(yyvsp[(1) - (3)])," ",(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 2584 | break; 2585 | 2586 | case 63: 2587 | #line 367 "./parse.y" 2588 | { if((yyvsp[(2) - (3)])[0]=='*' && (yyvsp[(2) - (3)])[1]==' ') { (yyvsp[(2) - (3)])=&(yyvsp[(2) - (3)])[1]; (yyvsp[(2) - (3)])[0]='*'; } 2589 | (yyval)=ConcatStrings(4," ",(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); 2590 | } 2591 | break; 2592 | 2593 | case 66: 2594 | #line 376 "./parse.y" 2595 | { (yyval)=ConcatStrings(2," ",(yyvsp[(1) - (1)])); current->name=(yyvsp[(1) - (1)]); 2596 | if(!current->type) current->type="int"; 2597 | if(in_funcdef==1 && in_function!=3 && !in_structunion) SeenScopeVariable((yyvsp[(1) - (1)])); } 2598 | break; 2599 | 2600 | case 67: 2601 | #line 383 "./parse.y" 2602 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 2603 | break; 2604 | 2605 | case 68: 2606 | #line 384 "./parse.y" 2607 | { in_type_spec=0; } 2608 | break; 2609 | 2610 | case 69: 2611 | #line 384 "./parse.y" 2612 | { in_type_spec=1; } 2613 | break; 2614 | 2615 | case 70: 2616 | #line 385 "./parse.y" 2617 | { (yyval)=ConcatStrings(4,(yyvsp[(1) - (6)]),(yyvsp[(2) - (6)]),(yyvsp[(4) - (6)]),(yyvsp[(6) - (6)])); } 2618 | break; 2619 | 2620 | case 72: 2621 | #line 396 "./parse.y" 2622 | { (yyval)=NULL; } 2623 | break; 2624 | 2625 | case 73: 2626 | #line 398 "./parse.y" 2627 | { (yyval)=NULL; 2628 | if(in_funcbody) scope|=EXTERN_F; 2629 | else if(in_header) scope|=EXTERN_H; 2630 | else scope|=EXTERNAL; } 2631 | break; 2632 | 2633 | case 74: 2634 | #line 403 "./parse.y" 2635 | { (yyval)=NULL; } 2636 | break; 2637 | 2638 | case 75: 2639 | #line 405 "./parse.y" 2640 | { (yyval)=NULL; scope |= LOCAL; } 2641 | break; 2642 | 2643 | case 76: 2644 | #line 407 "./parse.y" 2645 | { (yyval)=NULL; 2646 | in_typedef=1; if(!in_header) SeenTypedef(NULL,NULL); 2647 | common_comment=CopyString(GetCurrentComment()); } 2648 | break; 2649 | 2650 | case 77: 2651 | #line 411 "./parse.y" 2652 | { (yyval)=NULL; scope |= INLINED; } 2653 | break; 2654 | 2655 | case 79: 2656 | #line 417 "./parse.y" 2657 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (2)])," ",(yyvsp[(2) - (2)])); } 2658 | break; 2659 | 2660 | case 80: 2661 | #line 422 "./parse.y" 2662 | { if(!current->type) current->qual=ConcatStrings(3,current->qual,(yyvsp[(1) - (1)])," "); } 2663 | break; 2664 | 2665 | case 81: 2666 | #line 424 "./parse.y" 2667 | { if(!current->type) current->qual=ConcatStrings(3,current->qual,(yyvsp[(1) - (1)])," "); } 2668 | break; 2669 | 2670 | case 82: 2671 | #line 431 "./parse.y" 2672 | { in_type_spec=1; } 2673 | break; 2674 | 2675 | case 93: 2676 | #line 449 "./parse.y" 2677 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (2)])," ",(yyvsp[(2) - (2)])); } 2678 | break; 2679 | 2680 | case 94: 2681 | #line 451 "./parse.y" 2682 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (2)])," ",(yyvsp[(2) - (2)])); } 2683 | break; 2684 | 2685 | case 96: 2686 | #line 457 "./parse.y" 2687 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (2)])," ",(yyvsp[(2) - (2)])); } 2688 | break; 2689 | 2690 | case 97: 2691 | #line 459 "./parse.y" 2692 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (2)])," ",(yyvsp[(2) - (2)])); } 2693 | break; 2694 | 2695 | case 107: 2696 | #line 485 "./parse.y" 2697 | { in_type_spec=0; } 2698 | break; 2699 | 2700 | case 108: 2701 | #line 487 "./parse.y" 2702 | { in_type_spec=0; (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 2703 | break; 2704 | 2705 | case 111: 2706 | #line 499 "./parse.y" 2707 | { push(); 2708 | if(!in_header) 2709 | { 2710 | if(in_structunion) SeenStructUnionComp((yyvsp[(1) - (2)]),in_structunion); 2711 | else SeenStructUnionStart((yyvsp[(1) - (2)])); 2712 | } 2713 | in_structunion++; } 2714 | break; 2715 | 2716 | case 112: 2717 | #line 507 "./parse.y" 2718 | { pop(); in_structunion--; 2719 | if(!in_structunion && !current->type) current->type=ConcatStrings(2,(yyvsp[(1) - (5)])," {...}"); 2720 | if(!in_header && !in_structunion && in_typedef) SeenStructUnionEnd(); 2721 | (yyval)=ConcatStrings(5,(yyvsp[(1) - (5)])," ",(yyvsp[(2) - (5)]),(yyvsp[(4) - (5)]),(yyvsp[(5) - (5)])); } 2722 | break; 2723 | 2724 | case 113: 2725 | #line 512 "./parse.y" 2726 | { push(); 2727 | if(!in_header) 2728 | { 2729 | if(in_structunion) SeenStructUnionComp(ConcatStrings(3,(yyvsp[(1) - (3)])," ",(yyvsp[(2) - (3)])),in_structunion); 2730 | else SeenStructUnionStart(ConcatStrings(3,(yyvsp[(1) - (3)])," ",(yyvsp[(2) - (3)]))); 2731 | } 2732 | in_structunion++; } 2733 | break; 2734 | 2735 | case 114: 2736 | #line 520 "./parse.y" 2737 | { pop(); in_structunion--; 2738 | if(!in_structunion && !current->type) current->type=ConcatStrings(3,(yyvsp[(1) - (6)])," ",(yyvsp[(2) - (6)])); 2739 | if(!in_header && !in_structunion) SeenStructUnionEnd(); 2740 | (yyval)=ConcatStrings(7,(yyvsp[(1) - (6)])," ",(yyvsp[(2) - (6)])," ",(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]),(yyvsp[(6) - (6)])); } 2741 | break; 2742 | 2743 | case 118: 2744 | #line 534 "./parse.y" 2745 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 2746 | break; 2747 | 2748 | case 119: 2749 | #line 539 "./parse.y" 2750 | { if(!in_header) SeenStructUnionComp((yyvsp[(1) - (1)]),in_structunion); } 2751 | break; 2752 | 2753 | case 120: 2754 | #line 541 "./parse.y" 2755 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); if(!in_header) SeenStructUnionComp((yyvsp[(1) - (3)]),in_structunion); } 2756 | break; 2757 | 2758 | case 122: 2759 | #line 550 "./parse.y" 2760 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (2)])," ",(yyvsp[(2) - (2)])); } 2761 | break; 2762 | 2763 | case 127: 2764 | #line 567 "./parse.y" 2765 | { push(); 2766 | if(!in_header) 2767 | { 2768 | if(in_structunion) SeenStructUnionComp((yyvsp[(1) - (2)]),in_structunion); 2769 | else SeenStructUnionStart((yyvsp[(1) - (2)])); 2770 | } 2771 | in_structunion++; } 2772 | break; 2773 | 2774 | case 128: 2775 | #line 575 "./parse.y" 2776 | { pop(); in_structunion--; 2777 | if(!in_structunion && !current->type) current->type=ConcatStrings(2,(yyvsp[(1) - (5)])," {...}"); 2778 | if(!in_header && !in_structunion && in_typedef) SeenStructUnionEnd(); 2779 | (yyval)=ConcatStrings(5,(yyvsp[(1) - (5)])," ",(yyvsp[(2) - (5)]),(yyvsp[(4) - (5)]),(yyvsp[(5) - (5)])); } 2780 | break; 2781 | 2782 | case 129: 2783 | #line 580 "./parse.y" 2784 | { push(); 2785 | if(!in_header) 2786 | { 2787 | if(in_structunion) SeenStructUnionComp(ConcatStrings(3,(yyvsp[(1) - (3)])," ",(yyvsp[(2) - (3)])),in_structunion); 2788 | else SeenStructUnionStart(ConcatStrings(3,(yyvsp[(1) - (3)])," ",(yyvsp[(2) - (3)]))); 2789 | } 2790 | in_structunion++; } 2791 | break; 2792 | 2793 | case 130: 2794 | #line 588 "./parse.y" 2795 | { pop(); in_structunion--; 2796 | if(!in_structunion && !current->type) current->type=ConcatStrings(3,(yyvsp[(1) - (6)])," ",(yyvsp[(2) - (6)])); 2797 | if(!in_header && !in_structunion) SeenStructUnionEnd(); 2798 | (yyval)=ConcatStrings(7,(yyvsp[(1) - (6)])," ",(yyvsp[(2) - (6)])," ",(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]),(yyvsp[(6) - (6)])); } 2799 | break; 2800 | 2801 | case 131: 2802 | #line 596 "./parse.y" 2803 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (2)])," ",(yyvsp[(2) - (2)])); } 2804 | break; 2805 | 2806 | case 136: 2807 | #line 613 "./parse.y" 2808 | { push(); 2809 | if(!in_header) 2810 | { 2811 | if(in_structunion) SeenStructUnionComp((yyvsp[(1) - (2)]),in_structunion); 2812 | else SeenStructUnionStart((yyvsp[(1) - (2)])); 2813 | } 2814 | in_structunion++; } 2815 | break; 2816 | 2817 | case 137: 2818 | #line 621 "./parse.y" 2819 | { pop(); in_structunion--; 2820 | if(!in_structunion && !current->type) current->type=ConcatStrings(2,(yyvsp[(1) - (5)])," {...}"); 2821 | if(!in_header && !in_structunion && in_typedef) SeenStructUnionEnd(); 2822 | (yyval)=ConcatStrings(5,(yyvsp[(1) - (5)])," ",(yyvsp[(2) - (5)]),(yyvsp[(4) - (5)]),(yyvsp[(5) - (5)])); } 2823 | break; 2824 | 2825 | case 138: 2826 | #line 626 "./parse.y" 2827 | { push(); 2828 | if(!in_header) 2829 | { 2830 | if(in_structunion) SeenStructUnionComp(ConcatStrings(3,(yyvsp[(1) - (3)])," ",(yyvsp[(2) - (3)])),in_structunion); 2831 | else SeenStructUnionStart(ConcatStrings(3,(yyvsp[(1) - (3)])," ",(yyvsp[(2) - (3)]))); 2832 | } 2833 | in_structunion++; } 2834 | break; 2835 | 2836 | case 139: 2837 | #line 634 "./parse.y" 2838 | { pop(); in_structunion--; 2839 | if(!in_structunion && !current->type) current->type=ConcatStrings(3,(yyvsp[(1) - (6)])," ",(yyvsp[(2) - (6)])); 2840 | if(!in_header && !in_structunion) SeenStructUnionEnd(); 2841 | (yyval)=ConcatStrings(7,(yyvsp[(1) - (6)])," ",(yyvsp[(2) - (6)])," ",(yyvsp[(3) - (6)]),(yyvsp[(5) - (6)]),(yyvsp[(6) - (6)])); } 2842 | break; 2843 | 2844 | case 140: 2845 | #line 642 "./parse.y" 2846 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (2)])," ",(yyvsp[(2) - (2)])); } 2847 | break; 2848 | 2849 | case 146: 2850 | #line 660 "./parse.y" 2851 | { (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 2852 | break; 2853 | 2854 | case 148: 2855 | #line 666 "./parse.y" 2856 | { (yyval) = ConcatStrings(3, (yyvsp[(1) - (2)]), " ", (yyvsp[(2) - (2)])); 2857 | if(!in_header) SeenStructUnionComp((yyvsp[(1) - (2)]),in_structunion); } 2858 | break; 2859 | 2860 | case 149: 2861 | #line 669 "./parse.y" 2862 | { (yyval) = ConcatStrings(3, (yyvsp[(1) - (2)]), " ", (yyvsp[(2) - (2)])); 2863 | if(!in_header) SeenStructUnionComp((yyvsp[(1) - (2)]),in_structunion); } 2864 | break; 2865 | 2866 | case 151: 2867 | #line 676 "./parse.y" 2868 | { comp_type=(yyvsp[(1) - (1)]); } 2869 | break; 2870 | 2871 | case 152: 2872 | #line 678 "./parse.y" 2873 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)])); reset(); in_type_spec=0; } 2874 | break; 2875 | 2876 | case 153: 2877 | #line 680 "./parse.y" 2878 | { comp_type=ConcatStrings(3,(yyvsp[(1) - (2)])," ",(yyvsp[(2) - (2)])); } 2879 | break; 2880 | 2881 | case 154: 2882 | #line 682 "./parse.y" 2883 | { (yyval)=ConcatStrings(4,(yyvsp[(1) - (5)]),(yyvsp[(2) - (5)]),(yyvsp[(4) - (5)]),(yyvsp[(5) - (5)])); reset(); in_type_spec=0; } 2884 | break; 2885 | 2886 | case 155: 2887 | #line 684 "./parse.y" 2888 | { comp_type=ConcatStrings(3,(yyvsp[(1) - (2)])," ",(yyvsp[(2) - (2)])); } 2889 | break; 2890 | 2891 | case 156: 2892 | #line 686 "./parse.y" 2893 | { (yyval)=ConcatStrings(4,(yyvsp[(1) - (5)]),(yyvsp[(2) - (5)]),(yyvsp[(4) - (5)]),(yyvsp[(5) - (5)])); reset(); in_type_spec=0; } 2894 | break; 2895 | 2896 | case 157: 2897 | #line 691 "./parse.y" 2898 | { if(!in_header) SeenStructUnionComp(ConcatStrings(2,comp_type,(yyvsp[(1) - (1)])),in_structunion); } 2899 | break; 2900 | 2901 | case 158: 2902 | #line 693 "./parse.y" 2903 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); 2904 | if(!in_header) SeenStructUnionComp(ConcatStrings(2,comp_type,(yyvsp[(3) - (3)])),in_structunion); } 2905 | break; 2906 | 2907 | case 161: 2908 | #line 704 "./parse.y" 2909 | { if(in_function==2 && !in_structunion) { DownScope(); pop(); in_function=0; } } 2910 | break; 2911 | 2912 | case 162: 2913 | #line 709 "./parse.y" 2914 | { (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 2915 | break; 2916 | 2917 | case 163: 2918 | #line 711 "./parse.y" 2919 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 2920 | break; 2921 | 2922 | case 167: 2923 | #line 729 "./parse.y" 2924 | { pop(); in_funcbody=1; in_function=0; } 2925 | break; 2926 | 2927 | case 168: 2928 | #line 731 "./parse.y" 2929 | { in_funcbody=in_function=0; DownScope(); SeenFunctionDefinition(NULL); } 2930 | break; 2931 | 2932 | case 169: 2933 | #line 736 "./parse.y" 2934 | { char *func_type,*fname=strstr((yyvsp[(1) - (1)]),(current-1)->name),*parenth=strstr((yyvsp[(1) - (1)]),"("); 2935 | if(parenth>fname) 2936 | {parenth[0]=0;func_type=ConcatStrings(3,(current-1)->qual,(current-1)->type,(yyvsp[(1) - (1)]));} 2937 | else 2938 | { 2939 | int open=1; 2940 | char *argbeg=strstr(&parenth[1],"("),*argend; 2941 | argbeg[1]=0; 2942 | for(argend=argbeg+2;*argend;argend++) 2943 | { 2944 | if(*argend=='(') open++; 2945 | if(*argend==')') open--; 2946 | if(!open) break; 2947 | } 2948 | func_type=ConcatStrings(4,(current-1)->qual,(current-1)->type,(yyvsp[(1) - (1)]),argend); 2949 | } 2950 | SeenFunctionDefinition(func_type); 2951 | common_comment=NULL; 2952 | } 2953 | break; 2954 | 2955 | case 171: 2956 | #line 760 "./parse.y" 2957 | { (yyval)=ConcatStrings(3,current->qual,current->type,(yyvsp[(2) - (2)])); } 2958 | break; 2959 | 2960 | case 173: 2961 | #line 763 "./parse.y" 2962 | { (yyval)=ConcatStrings(3,current->qual,current->type,(yyvsp[(2) - (3)])); } 2963 | break; 2964 | 2965 | case 174: 2966 | #line 770 "./parse.y" 2967 | { if(!in_structunion) { push(); in_function=2; } } 2968 | break; 2969 | 2970 | case 177: 2971 | #line 777 "./parse.y" 2972 | { (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 2973 | break; 2974 | 2975 | case 178: 2976 | #line 779 "./parse.y" 2977 | { (yyval)=ConcatStrings(2,(yyvsp[(1) - (4)]),(yyvsp[(3) - (4)])); } 2978 | break; 2979 | 2980 | case 179: 2981 | #line 784 "./parse.y" 2982 | { if(!in_structunion) 2983 | { push(); if(in_function==0) UpScope(); 2984 | if(in_function==0 && !in_funcdef) in_function=1; if(in_function!=3) in_funcdef++; } } 2985 | break; 2986 | 2987 | case 180: 2988 | #line 788 "./parse.y" 2989 | { if(!in_structunion) 2990 | { pop(); if(in_function!=3) in_funcdef--; if(in_funcdef==0) in_function=3; } 2991 | (yyval)=ConcatStrings(4,(yyvsp[(1) - (5)]),(yyvsp[(2) - (5)]),(yyvsp[(4) - (5)]),(yyvsp[(5) - (5)])); } 2992 | break; 2993 | 2994 | case 181: 2995 | #line 795 "./parse.y" 2996 | { 2997 | if(!in_funcdef && !in_function && !in_funcbody && !in_structunion) SeenFunctionDeclaration(current->name,SCOPE); 2998 | in_type_spec=0; 2999 | } 3000 | break; 3001 | 3002 | case 182: 3003 | #line 803 "./parse.y" 3004 | { if(in_function==1 && in_funcdef==1 && !in_structunion) SeenFunctionArg("void","void"); 3005 | if(in_structunion) (yyval)=NULL; else (yyval)="void"; } 3006 | break; 3007 | 3008 | case 185: 3009 | #line 811 "./parse.y" 3010 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0 && !in_structunion) { SeenFunctionArg((yyvsp[(1) - (1)]),NULL); SeenScopeVariable((yyvsp[(1) - (1)])); } } 3011 | break; 3012 | 3013 | case 186: 3014 | #line 813 "./parse.y" 3015 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0 && !in_structunion) { SeenFunctionArg((yyvsp[(3) - (3)]),NULL); SeenScopeVariable((yyvsp[(3) - (3)])); } 3016 | (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3017 | break; 3018 | 3019 | case 188: 3020 | #line 820 "./parse.y" 3021 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0 && !in_structunion) SeenFunctionArg((yyvsp[(3) - (3)]),(yyvsp[(3) - (3)])); 3022 | (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3023 | break; 3024 | 3025 | case 189: 3026 | #line 826 "./parse.y" 3027 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0 && !in_structunion) SeenFunctionArg(strcmp("void",(yyvsp[(1) - (1)]))?current->name:"void",(yyvsp[(1) - (1)])); 3028 | in_type_spec=0; } 3029 | break; 3030 | 3031 | case 190: 3032 | #line 829 "./parse.y" 3033 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0 && !in_structunion) SeenFunctionArg(current->name,(yyvsp[(3) - (3)])); 3034 | in_type_spec=0; (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3035 | break; 3036 | 3037 | case 191: 3038 | #line 835 "./parse.y" 3039 | { in_type_spec=0; (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 3040 | break; 3041 | 3042 | case 192: 3043 | #line 837 "./parse.y" 3044 | { in_type_spec=0; } 3045 | break; 3046 | 3047 | case 193: 3048 | #line 839 "./parse.y" 3049 | { in_type_spec=0; (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 3050 | break; 3051 | 3052 | case 206: 3053 | #line 863 "./parse.y" 3054 | { UpScope(); reset(); } 3055 | break; 3056 | 3057 | case 207: 3058 | #line 865 "./parse.y" 3059 | { DownScope(); } 3060 | break; 3061 | 3062 | case 214: 3063 | #line 882 "./parse.y" 3064 | { scope=0; reset(); common_comment=NULL; in_typedef=0; } 3065 | break; 3066 | 3067 | case 223: 3068 | #line 914 "./parse.y" 3069 | { UpScope(); reset(); } 3070 | break; 3071 | 3072 | case 224: 3073 | #line 916 "./parse.y" 3074 | { DownScope(); } 3075 | break; 3076 | 3077 | case 234: 3078 | #line 933 "./parse.y" 3079 | { in_type_spec=0; } 3080 | break; 3081 | 3082 | case 235: 3083 | #line 935 "./parse.y" 3084 | { in_type_spec=0; } 3085 | break; 3086 | 3087 | case 255: 3088 | #line 1008 "./parse.y" 3089 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3090 | break; 3091 | 3092 | case 272: 3093 | #line 1039 "./parse.y" 3094 | { (yyval)=ConcatStrings(5,(yyvsp[(1) - (5)]),(yyvsp[(2) - (5)]),(yyvsp[(3) - (5)]),(yyvsp[(4) - (5)]),(yyvsp[(5) - (5)])); } 3095 | break; 3096 | 3097 | case 273: 3098 | #line 1041 "./parse.y" 3099 | { (yyval)=ConcatStrings(4,(yyvsp[(1) - (4)]),(yyvsp[(2) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)])); } 3100 | break; 3101 | 3102 | case 275: 3103 | #line 1049 "./parse.y" 3104 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3105 | break; 3106 | 3107 | case 277: 3108 | #line 1057 "./parse.y" 3109 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3110 | break; 3111 | 3112 | case 279: 3113 | #line 1065 "./parse.y" 3114 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3115 | break; 3116 | 3117 | case 281: 3118 | #line 1073 "./parse.y" 3119 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3120 | break; 3121 | 3122 | case 283: 3123 | #line 1081 "./parse.y" 3124 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3125 | break; 3126 | 3127 | case 285: 3128 | #line 1089 "./parse.y" 3129 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3130 | break; 3131 | 3132 | case 289: 3133 | #line 1102 "./parse.y" 3134 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3135 | break; 3136 | 3137 | case 295: 3138 | #line 1117 "./parse.y" 3139 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3140 | break; 3141 | 3142 | case 299: 3143 | #line 1130 "./parse.y" 3144 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3145 | break; 3146 | 3147 | case 303: 3148 | #line 1143 "./parse.y" 3149 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3150 | break; 3151 | 3152 | case 319: 3153 | #line 1174 "./parse.y" 3154 | { (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 3155 | break; 3156 | 3157 | case 320: 3158 | #line 1179 "./parse.y" 3159 | { (yyval)=ConcatStrings(4,(yyvsp[(1) - (4)]),(yyvsp[(2) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)])); } 3160 | break; 3161 | 3162 | case 323: 3163 | #line 1189 "./parse.y" 3164 | { (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 3165 | break; 3166 | 3167 | case 326: 3168 | #line 1202 "./parse.y" 3169 | { (yyval)=ConcatStrings(4,(yyvsp[(1) - (4)]),(yyvsp[(2) - (4)]),(yyvsp[(3) - (4)]),(yyvsp[(4) - (4)])); } 3170 | break; 3171 | 3172 | case 327: 3173 | #line 1204 "./parse.y" 3174 | { (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 3175 | break; 3176 | 3177 | case 328: 3178 | #line 1209 "./parse.y" 3179 | { (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 3180 | break; 3181 | 3182 | case 329: 3183 | #line 1214 "./parse.y" 3184 | { (yyval)=ConcatStrings(2,(yyvsp[(1) - (2)]),(yyvsp[(2) - (2)])); } 3185 | break; 3186 | 3187 | case 332: 3188 | #line 1223 "./parse.y" 3189 | { if(!IsAScopeVariable((yyvsp[(1) - (1)]))) SeenFunctionCall((yyvsp[(1) - (1)])); } 3190 | break; 3191 | 3192 | case 348: 3193 | #line 1267 "./parse.y" 3194 | { CheckFunctionVariableRef((yyvsp[(1) - (1)]),in_funcbody); } 3195 | break; 3196 | 3197 | case 354: 3198 | #line 1280 "./parse.y" 3199 | { (yyval)=ConcatStrings(3,(yyvsp[(1) - (3)]),(yyvsp[(2) - (3)]),(yyvsp[(3) - (3)])); } 3200 | break; 3201 | 3202 | case 355: 3203 | #line 1281 "./parse.y" 3204 | { push(); } 3205 | break; 3206 | 3207 | case 356: 3208 | #line 1281 "./parse.y" 3209 | { pop(); } 3210 | break; 3211 | 3212 | 3213 | /* Line 1267 of yacc.c. */ 3214 | #line 3215 "y.tab.c" 3215 | default: break; 3216 | } 3217 | YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 3218 | 3219 | YYPOPSTACK (yylen); 3220 | yylen = 0; 3221 | YY_STACK_PRINT (yyss, yyssp); 3222 | 3223 | *++yyvsp = yyval; 3224 | 3225 | 3226 | /* Now `shift' the result of the reduction. Determine what state 3227 | that goes to, based on the state we popped back to and the rule 3228 | number reduced by. */ 3229 | 3230 | yyn = yyr1[yyn]; 3231 | 3232 | yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 3233 | if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 3234 | yystate = yytable[yystate]; 3235 | else 3236 | yystate = yydefgoto[yyn - YYNTOKENS]; 3237 | 3238 | goto yynewstate; 3239 | 3240 | 3241 | /*------------------------------------. 3242 | | yyerrlab -- here on detecting error | 3243 | `------------------------------------*/ 3244 | yyerrlab: 3245 | /* If not already recovering from an error, report this error. */ 3246 | if (!yyerrstatus) 3247 | { 3248 | ++yynerrs; 3249 | #if ! YYERROR_VERBOSE 3250 | yyerror (YY_("syntax error")); 3251 | #else 3252 | { 3253 | YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); 3254 | if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) 3255 | { 3256 | YYSIZE_T yyalloc = 2 * yysize; 3257 | if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) 3258 | yyalloc = YYSTACK_ALLOC_MAXIMUM; 3259 | if (yymsg != yymsgbuf) 3260 | YYSTACK_FREE (yymsg); 3261 | yymsg = (char *) YYSTACK_ALLOC (yyalloc); 3262 | if (yymsg) 3263 | yymsg_alloc = yyalloc; 3264 | else 3265 | { 3266 | yymsg = yymsgbuf; 3267 | yymsg_alloc = sizeof yymsgbuf; 3268 | } 3269 | } 3270 | 3271 | if (0 < yysize && yysize <= yymsg_alloc) 3272 | { 3273 | (void) yysyntax_error (yymsg, yystate, yychar); 3274 | yyerror (yymsg); 3275 | } 3276 | else 3277 | { 3278 | yyerror (YY_("syntax error")); 3279 | if (yysize != 0) 3280 | goto yyexhaustedlab; 3281 | } 3282 | } 3283 | #endif 3284 | } 3285 | 3286 | 3287 | 3288 | if (yyerrstatus == 3) 3289 | { 3290 | /* If just tried and failed to reuse look-ahead token after an 3291 | error, discard it. */ 3292 | 3293 | if (yychar <= YYEOF) 3294 | { 3295 | /* Return failure if at end of input. */ 3296 | if (yychar == YYEOF) 3297 | YYABORT; 3298 | } 3299 | else 3300 | { 3301 | yydestruct ("Error: discarding", 3302 | yytoken, &yylval); 3303 | yychar = YYEMPTY; 3304 | } 3305 | } 3306 | 3307 | /* Else will try to reuse look-ahead token after shifting the error 3308 | token. */ 3309 | goto yyerrlab1; 3310 | 3311 | 3312 | /*---------------------------------------------------. 3313 | | yyerrorlab -- error raised explicitly by YYERROR. | 3314 | `---------------------------------------------------*/ 3315 | yyerrorlab: 3316 | 3317 | /* Pacify compilers like GCC when the user code never invokes 3318 | YYERROR and the label yyerrorlab therefore never appears in user 3319 | code. */ 3320 | if (/*CONSTCOND*/ 0) 3321 | goto yyerrorlab; 3322 | 3323 | /* Do not reclaim the symbols of the rule which action triggered 3324 | this YYERROR. */ 3325 | YYPOPSTACK (yylen); 3326 | yylen = 0; 3327 | YY_STACK_PRINT (yyss, yyssp); 3328 | yystate = *yyssp; 3329 | goto yyerrlab1; 3330 | 3331 | 3332 | /*-------------------------------------------------------------. 3333 | | yyerrlab1 -- common code for both syntax error and YYERROR. | 3334 | `-------------------------------------------------------------*/ 3335 | yyerrlab1: 3336 | yyerrstatus = 3; /* Each real token shifted decrements this. */ 3337 | 3338 | for (;;) 3339 | { 3340 | yyn = yypact[yystate]; 3341 | if (yyn != YYPACT_NINF) 3342 | { 3343 | yyn += YYTERROR; 3344 | if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 3345 | { 3346 | yyn = yytable[yyn]; 3347 | if (0 < yyn) 3348 | break; 3349 | } 3350 | } 3351 | 3352 | /* Pop the current state because it cannot handle the error token. */ 3353 | if (yyssp == yyss) 3354 | YYABORT; 3355 | 3356 | 3357 | yydestruct ("Error: popping", 3358 | yystos[yystate], yyvsp); 3359 | YYPOPSTACK (1); 3360 | yystate = *yyssp; 3361 | YY_STACK_PRINT (yyss, yyssp); 3362 | } 3363 | 3364 | if (yyn == YYFINAL) 3365 | YYACCEPT; 3366 | 3367 | *++yyvsp = yylval; 3368 | 3369 | 3370 | /* Shift the error token. */ 3371 | YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 3372 | 3373 | yystate = yyn; 3374 | goto yynewstate; 3375 | 3376 | 3377 | /*-------------------------------------. 3378 | | yyacceptlab -- YYACCEPT comes here. | 3379 | `-------------------------------------*/ 3380 | yyacceptlab: 3381 | yyresult = 0; 3382 | goto yyreturn; 3383 | 3384 | /*-----------------------------------. 3385 | | yyabortlab -- YYABORT comes here. | 3386 | `-----------------------------------*/ 3387 | yyabortlab: 3388 | yyresult = 1; 3389 | goto yyreturn; 3390 | 3391 | #ifndef yyoverflow 3392 | /*-------------------------------------------------. 3393 | | yyexhaustedlab -- memory exhaustion comes here. | 3394 | `-------------------------------------------------*/ 3395 | yyexhaustedlab: 3396 | yyerror (YY_("memory exhausted")); 3397 | yyresult = 2; 3398 | /* Fall through. */ 3399 | #endif 3400 | 3401 | yyreturn: 3402 | if (yychar != YYEOF && yychar != YYEMPTY) 3403 | yydestruct ("Cleanup: discarding lookahead", 3404 | yytoken, &yylval); 3405 | /* Do not reclaim the symbols of the rule which action triggered 3406 | this YYABORT or YYACCEPT. */ 3407 | YYPOPSTACK (yylen); 3408 | YY_STACK_PRINT (yyss, yyssp); 3409 | while (yyssp != yyss) 3410 | { 3411 | yydestruct ("Cleanup: popping", 3412 | yystos[*yyssp], yyvsp); 3413 | YYPOPSTACK (1); 3414 | } 3415 | #ifndef yyoverflow 3416 | if (yyss != yyssa) 3417 | YYSTACK_FREE (yyss); 3418 | #endif 3419 | #if YYERROR_VERBOSE 3420 | if (yymsg != yymsgbuf) 3421 | YYSTACK_FREE (yymsg); 3422 | #endif 3423 | /* Make sure YYID is used. */ 3424 | return YYID (yyresult); 3425 | } 3426 | 3427 | 3428 | #line 1338 "./parse.y" 3429 | 3430 | 3431 | #if YYDEBUG 3432 | 3433 | static int last_yylex[11]; 3434 | static char *last_yylval[11]; 3435 | static int count=0,modcount=0; 3436 | 3437 | #endif /* YYDEBUG */ 3438 | 3439 | 3440 | /*++++++++++++++++++++++++++++++++++++++ 3441 | Stop parsing the current file, due to an error. 3442 | 3443 | char *s The error message to print out. 3444 | ++++++++++++++++++++++++++++++++++++++*/ 3445 | 3446 | static void yyerror( char *s ) 3447 | { 3448 | #if YYDEBUG 3449 | int i; 3450 | #endif 3451 | 3452 | fflush(stdout); 3453 | fprintf(stderr,"%s:%d: cxref: %s\n\n",parse_file,parse_line,s); 3454 | 3455 | #if YYDEBUG 3456 | 3457 | fprintf(stderr,"The previous 10, current and next 10 symbols are:\n"); 3458 | 3459 | for(i=count>10?count-11:0,modcount=i%11;i<count-1;i++,modcount=i%11) 3460 | #ifdef YYBISON 3461 | fprintf(stderr,"%3d | %3d : %16s : %s\n",i+1-count,last_yylex[modcount],yytname[YYTRANSLATE(last_yylex[modcount])],last_yylval[modcount]); 3462 | #else 3463 | fprintf(stderr,"%3d | %3d : %s\n",i+1-count,last_yylex[modcount],last_yylval[modcount]); 3464 | #endif 3465 | 3466 | #ifdef YYBISON 3467 | fprintf(stderr," 0 | %3d : %16s : %s\n",yychar,yytname[YYTRANSLATE(yychar)],yylval); 3468 | #else 3469 | fprintf(stderr," 0 | %3d : %s\n",yychar,yylval); 3470 | #endif 3471 | 3472 | for(i=0;i<10;i++) 3473 | { 3474 | yychar=yylex(); 3475 | if(!yychar) 3476 | {fprintf(stderr,"END OF FILE\n");break;} 3477 | #ifdef YYBISON 3478 | fprintf(stderr,"%3d | %3d : %16s : %s\n",i+1,yychar,yytname[YYTRANSLATE(yychar)],yylval); 3479 | #else 3480 | fprintf(stderr,"%3d | %3d : %s\n",i+1,yychar,yylval); 3481 | #endif 3482 | } 3483 | 3484 | fprintf(stderr,"\n"); 3485 | 3486 | #endif /* YYDEBUG */ 3487 | 3488 | /* Finish off the input. */ 3489 | 3490 | #undef yylex 3491 | 3492 | if(yychar) 3493 | while((yychar=yylex())); 3494 | } 3495 | 3496 | 3497 | /*++++++++++++++++++++++++++++++++++++++ 3498 | Call the lexer, the feedback from the parser to the lexer is applied here. 3499 | 3500 | int cxref_yylex Returns the value from the lexer, modified due to parser feedback. 3501 | ++++++++++++++++++++++++++++++++++++++*/ 3502 | 3503 | static int cxref_yylex(void) 3504 | { 3505 | static int last_yyl=0; 3506 | int yyl=yylex(); 3507 | 3508 | if(yyl==TYPE_NAME) 3509 | if(in_type_spec || (in_structunion && last_yyl=='}') || last_yyl==TYPE_NAME || 3510 | last_yyl==GOTO || 3511 | last_yyl==CHAR || last_yyl==SHORT || last_yyl==INT || last_yyl==LONG || 3512 | last_yyl==SIGNED || last_yyl==UNSIGNED || 3513 | last_yyl==FLOAT || last_yyl==DOUBLE || 3514 | last_yyl==BOOL) 3515 | yyl=IDENTIFIER; 3516 | 3517 | last_yyl=yyl; 3518 | 3519 | #if YYDEBUG 3520 | 3521 | last_yylex [modcount]=yyl; 3522 | last_yylval[modcount]=yylval; 3523 | 3524 | if(yyl) 3525 | { 3526 | count++; 3527 | modcount=count%11; 3528 | } 3529 | else 3530 | { 3531 | count=0; 3532 | modcount=0; 3533 | } 3534 | 3535 | #if YYDEBUG == 2 3536 | 3537 | if(yyl) 3538 | #ifdef YYBISON 3539 | printf("#parse.y# %6d | %16s:%4d | %3d : %16s : %s\n",count,parse_file,parse_line,yyl,yytname[YYTRANSLATE(yyl)],yylval); 3540 | #else 3541 | printf("#parse.y# %6d | %16s:%4d | %3d : %s\n",count,parse_file,parse_line,yyl,yylval); 3542 | #endif /* YYBISON */ 3543 | else 3544 | printf("#parse.y# %6d | %16s:%4d | END OF FILE\n",count,parse_file,parse_line); 3545 | 3546 | fflush(stdout); 3547 | 3548 | #endif /* YYDEBUG==2 */ 3549 | 3550 | #endif /* YYDEBUG */ 3551 | 3552 | return(yyl); 3553 | } 3554 |