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