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