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