1 | 2 | /* A Bison parser, made from parse.y 3 | by GNU Bison version 1.25 4 | */ 5 | 6 | #define YYBISON 1 /* Identify Bison output. */ 7 | 8 | #define IDENTIFIER 258 9 | #define TYPE_NAME 259 10 | #define LITERAL 260 11 | #define STRING_LITERAL 261 12 | #define ELLIPSES 262 13 | #define MUL_ASSIGN 263 14 | #define DIV_ASSIGN 264 15 | #define MOD_ASSIGN 265 16 | #define ADD_ASSIGN 266 17 | #define SUB_ASSIGN 267 18 | #define LEFT_ASSIGN 268 19 | #define RIGHT_ASSIGN 269 20 | #define AND_ASSIGN 270 21 | #define XOR_ASSIGN 271 22 | #define OR_ASSIGN 272 23 | #define EQ_OP 273 24 | #define NE_OP 274 25 | #define PTR_OP 275 26 | #define AND_OP 276 27 | #define OR_OP 277 28 | #define DEC_OP 278 29 | #define INC_OP 279 30 | #define LE_OP 280 31 | #define GE_OP 281 32 | #define LEFT_SHIFT 282 33 | #define RIGHT_SHIFT 283 34 | #define SIZEOF 284 35 | #define TYPEDEF 285 36 | #define EXTERN 286 37 | #define STATIC 287 38 | #define AUTO 288 39 | #define REGISTER 289 40 | #define CONST 290 41 | #define VOLATILE 291 42 | #define VOID 292 43 | #define INLINE 293 44 | #define CHAR 294 45 | #define SHORT 295 46 | #define INT 296 47 | #define LONG 297 48 | #define SIGNED 298 49 | #define UNSIGNED 299 50 | #define FLOAT 300 51 | #define DOUBLE 301 52 | #define STRUCT 302 53 | #define UNION 303 54 | #define ENUM 304 55 | #define CASE 305 56 | #define DEFAULT 306 57 | #define IF 307 58 | #define ELSE 308 59 | #define SWITCH 309 60 | #define WHILE 310 61 | #define DO 311 62 | #define FOR 312 63 | #define GOTO 313 64 | #define CONTINUE 314 65 | #define BREAK 315 66 | #define RETURN 316 67 | #define ASM 317 68 | 69 | 70 | /*************************************** 71 | $Header: /home/amb/cxref/RCS/parse.y 1.38 1999/01/27 19:19:31 amb Exp $ 72 | 73 | C Cross Referencing & Documentation tool. Version 1.5. 74 | 75 | C parser. 76 | ******************/ /****************** 77 | Written by Andrew M. Bishop 78 | 79 | This file Copyright 1995,96,97,98 Andrew M. Bishop 80 | It may be distributed under the GNU Public License, version 2, or 81 | any higher version. See section COPYING of the GNU Public license 82 | for conditions under which this file may be redistributed. 83 | ***************************************/ 84 | 85 | #include <string.h> 86 | #include "parse-yy.h" 87 | #include "cxref.h" 88 | #include "memory.h" 89 | 90 | /*+ A structure to hold the information about an object. +*/ 91 | typedef struct _stack 92 | { 93 | char *name; /*+ The name of the object. +*/ 94 | char *type; /*+ The type of the object. +*/ 95 | char *qual; /*+ The type qualifier of the object. +*/ 96 | } 97 | stack; 98 | 99 | #define yylex cxref_yylex 100 | 101 | static int cxref_yylex(void); 102 | 103 | static void yyerror(char *s); 104 | 105 | /*+ When in a header file, some stuff can be skipped over quickly. +*/ 106 | extern int in_header; 107 | 108 | /*+ A flag that is set to true when typedef is seen in a statement. +*/ 109 | int in_typedef=0; 110 | 111 | /*+ The scope of the function / variable that is being examined. +*/ 112 | static int scope; 113 | 114 | /*+ The variable must be LOCAL or EXTERNAL or GLOBAL, so this checks and sets that. +*/ 115 | #define SCOPE ( scope&(LOCAL|EXTERNAL|EXTERN_H|EXTERN_F) ? scope : scope|GLOBAL ) 116 | 117 | /*+ When in a function or a function definition, the behaviour is different. +*/ 118 | static int in_function=0,in_funcdef=0,in_funcbody=0; 119 | 120 | /*+ The parsing stack +*/ 121 | static stack first={NULL,NULL,NULL}, /*+ first value. +*/ 122 | *list=NULL, /*+ list of all values. +*/ 123 | *current=&first; /*+ current values. +*/ 124 | 125 | /*+ The depth of the stack +*/ 126 | static int depth=0, /*+ currently in use. +*/ 127 | maxdepth=0; /*+ total malloced. +*/ 128 | 129 | /*+ Declarations that are in the same statement share this comment. +*/ 130 | static char* common_comment=NULL; 131 | 132 | /*+ When inside a struct / union / enum definition, this is the depth. +*/ 133 | static int in_structunion=0; 134 | 135 | /*+ When inside a struct / union definition, this is the component type. +*/ 136 | static char *comp_type=NULL; 137 | 138 | /*+ To solve the problem where a type name is used as an identifier. +*/ 139 | static int in_type_spec=0; 140 | 141 | 142 | /*++++++++++++++++++++++++++++++++++++++ 143 | Reset the current level on the stack. 144 | ++++++++++++++++++++++++++++++++++++++*/ 145 | 146 | static void reset(void) 147 | { 148 | current->name=NULL; 149 | current->type=NULL; 150 | current->qual=NULL; 151 | } 152 | 153 | 154 | /*++++++++++++++++++++++++++++++++++++++ 155 | Push a level onto the stack. 156 | ++++++++++++++++++++++++++++++++++++++*/ 157 | 158 | static void push(void) 159 | { 160 | if(list==NULL) 161 | { 162 | list=(stack*)Malloc(8*sizeof(struct _stack)); 163 | list[0]=first; 164 | maxdepth=8; 165 | } 166 | else if(depth==maxdepth) 167 | { 168 | list=Realloc(list,(maxdepth+8)*sizeof(struct _stack)); 169 | maxdepth+=8; 170 | } 171 | 172 | depth++; 173 | current=&list[depth]; 174 | 175 | reset(); 176 | } 177 | 178 | 179 | /*++++++++++++++++++++++++++++++++++++++ 180 | Pop a level from the stack. 181 | ++++++++++++++++++++++++++++++++++++++*/ 182 | 183 | static void pop(void) 184 | { 185 | reset(); 186 | 187 | depth--; 188 | current=&list[depth]; 189 | } 190 | 191 | 192 | /*++++++++++++++++++++++++++++++++++++++ 193 | Reset the Parser, ready for the next file. 194 | ++++++++++++++++++++++++++++++++++++++*/ 195 | 196 | void ResetParser(void) 197 | { 198 | in_typedef=0; 199 | scope=0; 200 | in_function=0; 201 | in_funcdef=0; 202 | in_funcbody=0; 203 | depth=0; 204 | maxdepth=0; 205 | if(list) Free(list); 206 | list=NULL; 207 | current=&first; 208 | reset(); 209 | common_comment=NULL; 210 | in_structunion=0; 211 | comp_type=NULL; 212 | in_type_spec=0; 213 | } 214 | 215 | #ifndef YYSTYPE 216 | #define YYSTYPE int 217 | #endif 218 | #include <stdio.h> 219 | 220 | #ifndef __cplusplus 221 | #ifndef __STDC__ 222 | #define const 223 | #endif 224 | #endif 225 | 226 | 227 | 228 | #define YYFINAL 554 229 | #define YYFLAG -32768 230 | #define YYNTBASE 87 231 | 232 | #define YYTRANSLATE(x) ((unsigned)(x) <= 317 ? yytranslate[x] : 255) 233 | 234 | static const char yytranslate[] = { 0, 235 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 236 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 237 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 238 | 2, 2, 85, 2, 2, 2, 83, 77, 2, 68, 239 | 69, 72, 80, 64, 81, 86, 82, 2, 2, 2, 240 | 2, 2, 2, 2, 2, 2, 2, 73, 63, 78, 241 | 65, 79, 74, 2, 2, 2, 2, 2, 2, 2, 242 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 243 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 244 | 70, 2, 71, 76, 2, 2, 2, 2, 2, 2, 245 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 246 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 247 | 2, 2, 66, 75, 67, 84, 2, 2, 2, 2, 248 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 249 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 250 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 251 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 252 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 253 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 254 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 255 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 256 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 257 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 258 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 259 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 260 | 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 261 | 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 262 | 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 263 | 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 264 | 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 265 | 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 266 | 56, 57, 58, 59, 60, 61, 62 267 | }; 268 | 269 | #if YYDEBUG != 0 270 | static const short yyprhs[] = { 0, 271 | 0, 1, 3, 5, 8, 10, 12, 14, 16, 18, 272 | 21, 25, 28, 30, 32, 35, 37, 40, 42, 45, 273 | 47, 48, 53, 55, 57, 60, 63, 67, 70, 72, 274 | 76, 78, 81, 85, 90, 92, 95, 97, 101, 104, 275 | 108, 112, 117, 120, 124, 128, 133, 135, 138, 140, 276 | 143, 146, 150, 152, 156, 158, 160, 162, 166, 167, 277 | 168, 175, 177, 179, 181, 183, 185, 187, 189, 191, 278 | 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 279 | 214, 216, 218, 221, 224, 226, 229, 232, 234, 236, 280 | 238, 240, 242, 244, 246, 248, 250, 253, 255, 257, 281 | 258, 264, 265, 272, 274, 277, 279, 283, 285, 289, 282 | 291, 294, 296, 298, 300, 302, 303, 309, 310, 317, 283 | 320, 322, 324, 326, 328, 329, 335, 336, 343, 346, 284 | 348, 350, 351, 353, 355, 358, 360, 363, 366, 368, 285 | 369, 374, 375, 381, 382, 388, 390, 394, 396, 398, 286 | 400, 403, 407, 409, 411, 413, 414, 418, 420, 422, 287 | 425, 428, 432, 434, 436, 439, 440, 446, 448, 449, 288 | 451, 453, 455, 459, 461, 465, 467, 471, 474, 476, 289 | 479, 481, 483, 485, 487, 489, 491, 493, 495, 497, 290 | 499, 501, 503, 505, 508, 509, 510, 516, 517, 519, 291 | 521, 524, 526, 528, 530, 538, 544, 546, 548, 550, 292 | 558, 564, 567, 571, 575, 579, 584, 589, 594, 600, 293 | 606, 609, 612, 615, 618, 620, 622, 628, 631, 634, 294 | 637, 641, 643, 646, 650, 652, 654, 658, 660, 662, 295 | 666, 672, 674, 676, 678, 680, 682, 684, 686, 688, 296 | 690, 692, 694, 696, 702, 707, 709, 713, 715, 719, 297 | 721, 725, 727, 731, 733, 737, 739, 743, 745, 747, 298 | 749, 753, 755, 757, 759, 761, 763, 767, 769, 771, 299 | 773, 777, 779, 781, 783, 787, 789, 791, 793, 795, 300 | 797, 799, 801, 803, 805, 807, 809, 811, 813, 815, 301 | 818, 821, 826, 833, 840, 843, 846, 849, 852, 857, 302 | 860, 863, 866, 868, 870, 872, 874, 876, 878, 880, 303 | 882, 884, 888, 892, 896, 901, 905, 910, 913, 916, 304 | 921, 923, 925, 927, 929, 931, 934, 938, 939, 940, 305 | 946, 948, 950, 954, 960, 968, 978, 990, 992, 995, 306 | 998, 999, 1001, 1005, 1010, 1011, 1013, 1017, 1022, 1025, 307 | 1027, 1031, 1032, 1034, 1038, 1042, 1048, 1053, 1060, 1062 308 | }; 309 | 310 | static const short yyrhs[] = { -1, 311 | 88, 0, 89, 0, 88, 89, 0, 91, 0, 157, 312 | 0, 244, 0, 195, 0, 91, 0, 90, 91, 0, 313 | 92, 94, 63, 0, 92, 63, 0, 93, 0, 111, 314 | 0, 111, 93, 0, 114, 0, 114, 93, 0, 113, 315 | 0, 113, 93, 0, 96, 0, 0, 94, 64, 95, 316 | 96, 0, 97, 0, 103, 0, 103, 249, 0, 103, 317 | 98, 0, 103, 249, 98, 0, 65, 100, 0, 100, 318 | 0, 99, 64, 100, 0, 199, 0, 66, 67, 0, 319 | 66, 99, 67, 0, 66, 99, 64, 67, 0, 104, 320 | 0, 104, 102, 0, 102, 0, 68, 101, 69, 0, 321 | 70, 71, 0, 102, 70, 71, 0, 70, 242, 71, 322 | 0, 102, 70, 242, 71, 0, 68, 69, 0, 102, 323 | 68, 69, 0, 68, 168, 69, 0, 102, 68, 168, 324 | 69, 0, 105, 0, 104, 105, 0, 72, 0, 72, 325 | 112, 0, 72, 104, 0, 72, 112, 104, 0, 106, 326 | 0, 68, 103, 69, 0, 107, 0, 163, 0, 3, 327 | 0, 105, 70, 71, 0, 0, 0, 105, 70, 108, 328 | 242, 109, 71, 0, 3, 0, 33, 0, 31, 0, 329 | 34, 0, 32, 0, 30, 0, 38, 0, 113, 0, 330 | 112, 113, 0, 35, 0, 36, 0, 115, 0, 122, 331 | 0, 116, 0, 117, 0, 132, 0, 119, 0, 138, 332 | 0, 120, 0, 45, 0, 46, 0, 46, 42, 0, 333 | 42, 46, 0, 118, 0, 118, 113, 0, 117, 118, 334 | 0, 43, 0, 44, 0, 39, 0, 40, 0, 41, 335 | 0, 42, 0, 4, 0, 37, 0, 92, 0, 92, 336 | 101, 0, 123, 0, 130, 0, 0, 49, 66, 124, 337 | 126, 67, 0, 0, 49, 131, 66, 125, 126, 67, 338 | 0, 127, 0, 127, 64, 0, 128, 0, 127, 64, 339 | 128, 0, 129, 0, 129, 65, 199, 0, 3, 0, 340 | 49, 131, 0, 3, 0, 4, 0, 133, 0, 136, 341 | 0, 0, 47, 66, 134, 144, 67, 0, 0, 47, 342 | 137, 66, 135, 144, 67, 0, 47, 137, 0, 3, 343 | 0, 4, 0, 139, 0, 142, 0, 0, 48, 66, 344 | 140, 144, 67, 0, 0, 48, 143, 66, 141, 144, 345 | 67, 0, 48, 143, 0, 3, 0, 4, 0, 0, 346 | 145, 0, 146, 0, 145, 146, 0, 63, 0, 133, 347 | 63, 0, 139, 63, 0, 147, 0, 0, 114, 148, 348 | 151, 63, 0, 0, 112, 114, 149, 151, 63, 0, 349 | 0, 114, 112, 150, 151, 63, 0, 152, 0, 151, 350 | 64, 152, 0, 153, 0, 154, 0, 103, 0, 73, 351 | 155, 0, 103, 73, 155, 0, 199, 0, 3, 0, 352 | 4, 0, 0, 159, 158, 173, 0, 160, 0, 161, 353 | 0, 92, 161, 0, 161, 90, 0, 92, 161, 90, 354 | 0, 162, 0, 163, 0, 104, 163, 0, 0, 165, 355 | 68, 164, 166, 69, 0, 105, 0, 0, 168, 0, 356 | 167, 0, 3, 0, 167, 64, 3, 0, 169, 0, 357 | 169, 64, 7, 0, 170, 0, 169, 64, 170, 0, 358 | 92, 103, 0, 92, 0, 92, 101, 0, 244, 0, 359 | 173, 0, 178, 0, 181, 0, 186, 0, 190, 0, 360 | 191, 0, 192, 0, 193, 0, 194, 0, 195, 0, 361 | 196, 0, 171, 0, 172, 171, 0, 0, 0, 66, 362 | 174, 176, 175, 67, 0, 0, 177, 0, 172, 0, 363 | 177, 172, 0, 90, 0, 180, 0, 179, 0, 52, 364 | 68, 197, 69, 171, 53, 171, 0, 52, 68, 197, 365 | 69, 171, 0, 182, 0, 183, 0, 185, 0, 56, 366 | 171, 55, 68, 197, 69, 63, 0, 57, 68, 184, 367 | 69, 171, 0, 63, 63, 0, 197, 63, 63, 0, 368 | 63, 197, 63, 0, 63, 63, 197, 0, 63, 197, 369 | 63, 197, 0, 197, 63, 63, 197, 0, 197, 63, 370 | 197, 63, 0, 197, 63, 197, 63, 197, 0, 55, 371 | 68, 197, 69, 171, 0, 187, 73, 0, 189, 73, 372 | 0, 188, 73, 0, 50, 242, 0, 51, 0, 3, 373 | 0, 54, 68, 197, 69, 171, 0, 60, 63, 0, 374 | 59, 63, 0, 197, 63, 0, 58, 3, 63, 0, 375 | 63, 0, 61, 63, 0, 61, 197, 63, 0, 198, 376 | 0, 199, 0, 198, 64, 199, 0, 201, 0, 250, 377 | 0, 217, 200, 199, 0, 217, 200, 66, 251, 67, 378 | 0, 65, 0, 8, 0, 9, 0, 10, 0, 11, 379 | 0, 12, 0, 13, 0, 14, 0, 15, 0, 16, 380 | 0, 17, 0, 202, 0, 202, 74, 197, 73, 201, 381 | 0, 202, 74, 73, 201, 0, 203, 0, 202, 22, 382 | 203, 0, 204, 0, 203, 21, 204, 0, 205, 0, 383 | 204, 75, 205, 0, 206, 0, 205, 76, 206, 0, 384 | 207, 0, 206, 77, 207, 0, 209, 0, 207, 208, 385 | 209, 0, 18, 0, 19, 0, 211, 0, 209, 210, 386 | 211, 0, 78, 0, 25, 0, 79, 0, 26, 0, 387 | 213, 0, 211, 212, 213, 0, 27, 0, 28, 0, 388 | 215, 0, 213, 214, 215, 0, 80, 0, 81, 0, 389 | 217, 0, 215, 216, 217, 0, 72, 0, 82, 0, 390 | 83, 0, 218, 0, 219, 0, 220, 0, 221, 0, 391 | 222, 0, 223, 0, 224, 0, 225, 0, 226, 0, 392 | 227, 0, 228, 0, 77, 217, 0, 84, 217, 0, 393 | 68, 121, 69, 217, 0, 68, 121, 69, 66, 251, 394 | 67, 0, 68, 121, 69, 66, 254, 67, 0, 72, 395 | 217, 0, 85, 217, 0, 23, 217, 0, 24, 217, 396 | 0, 29, 68, 121, 69, 0, 29, 217, 0, 81, 397 | 217, 0, 80, 217, 0, 229, 0, 232, 0, 233, 398 | 0, 234, 0, 235, 0, 236, 0, 237, 0, 230, 399 | 0, 231, 0, 228, 86, 156, 0, 228, 20, 156, 400 | 0, 228, 68, 69, 0, 228, 68, 243, 69, 0, 401 | 110, 68, 69, 0, 110, 68, 243, 69, 0, 228, 402 | 23, 0, 228, 24, 0, 228, 70, 197, 71, 0, 403 | 110, 0, 5, 0, 238, 0, 239, 0, 6, 0, 404 | 238, 6, 0, 68, 197, 69, 0, 0, 0, 68, 405 | 240, 173, 241, 69, 0, 197, 0, 199, 0, 243, 406 | 64, 199, 0, 245, 68, 238, 69, 63, 0, 245, 407 | 68, 238, 73, 246, 69, 63, 0, 245, 68, 238, 408 | 73, 246, 73, 246, 69, 63, 0, 245, 68, 238, 409 | 73, 246, 73, 246, 73, 248, 69, 63, 0, 62, 410 | 0, 62, 36, 0, 36, 62, 0, 0, 247, 0, 411 | 246, 64, 247, 0, 238, 68, 197, 69, 0, 0, 412 | 238, 0, 248, 64, 238, 0, 62, 68, 238, 69, 413 | 0, 21, 189, 0, 252, 0, 251, 64, 252, 0, 414 | 0, 199, 0, 66, 251, 67, 0, 156, 73, 199, 415 | 0, 156, 73, 66, 251, 67, 0, 86, 156, 65, 416 | 199, 0, 86, 156, 65, 66, 251, 67, 0, 253, 417 | 0, 254, 64, 253, 0 418 | }; 419 | 420 | #endif 421 | 422 | #if YYDEBUG != 0 423 | static const short yyrline[] = { 0, 424 | 169, 170, 174, 175, 179, 181, 183, 184, 190, 192, 425 | 198, 200, 205, 211, 212, 214, 216, 219, 220, 227, 426 | 228, 229, 232, 279, 280, 281, 282, 286, 290, 291, 427 | 295, 296, 297, 298, 305, 306, 308, 312, 315, 317, 428 | 319, 321, 323, 325, 327, 329, 336, 338, 343, 344, 429 | 346, 348, 353, 354, 358, 359, 363, 370, 372, 372, 430 | 373, 379, 383, 385, 390, 392, 394, 398, 403, 404, 431 | 409, 411, 418, 423, 424, 425, 426, 427, 428, 429, 432 | 433, 434, 435, 437, 442, 443, 445, 450, 451, 452, 433 | 453, 454, 455, 459, 463, 467, 469, 476, 477, 481, 434 | 489, 494, 502, 510, 511, 515, 516, 521, 523, 528, 435 | 532, 537, 538, 544, 545, 549, 557, 562, 570, 578, 436 | 583, 584, 590, 591, 595, 603, 608, 616, 624, 629, 437 | 630, 636, 637, 641, 642, 647, 648, 651, 654, 658, 438 | 660, 662, 664, 666, 668, 673, 675, 681, 682, 686, 439 | 691, 693, 698, 702, 703, 711, 714, 718, 740, 741, 440 | 743, 744, 751, 756, 757, 762, 765, 771, 779, 782, 441 | 783, 787, 789, 795, 796, 802, 805, 811, 813, 815, 442 | 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 443 | 832, 833, 837, 838, 844, 847, 849, 852, 853, 854, 444 | 855, 859, 865, 866, 870, 874, 880, 881, 882, 886, 445 | 890, 894, 895, 896, 897, 898, 899, 900, 901, 905, 446 | 911, 912, 913, 917, 921, 925, 931, 937, 940, 944, 447 | 948, 952, 956, 957, 963, 969, 970, 977, 978, 979, 448 | 980, 983, 984, 985, 986, 987, 988, 989, 990, 991, 449 | 992, 993, 999, 1000, 1002, 1009, 1010, 1017, 1018, 1025, 450 | 1026, 1033, 1034, 1041, 1042, 1049, 1050, 1054, 1055, 1061, 451 | 1062, 1066, 1067, 1068, 1069, 1075, 1076, 1080, 1081, 1087, 452 | 1088, 1092, 1093, 1099, 1100, 1104, 1105, 1106, 1112, 1113, 453 | 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1126, 454 | 1130, 1135, 1137, 1138, 1142, 1146, 1151, 1155, 1159, 1161, 455 | 1166, 1171, 1178, 1179, 1180, 1182, 1183, 1184, 1185, 1189, 456 | 1190, 1194, 1198, 1202, 1203, 1207, 1208, 1212, 1216, 1220, 457 | 1224, 1226, 1227, 1228, 1231, 1232, 1236, 1238, 1238, 1239, 458 | 1244, 1248, 1249, 1257, 1258, 1259, 1260, 1264, 1265, 1266, 459 | 1270, 1271, 1272, 1276, 1280, 1281, 1282, 1286, 1292, 1298, 460 | 1299, 1303, 1304, 1305, 1309, 1310, 1311, 1312, 1316, 1317 461 | }; 462 | #endif 463 | 464 | 465 | #if YYDEBUG != 0 || defined (YYERROR_VERBOSE) 466 | 467 | static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER", 468 | "TYPE_NAME","LITERAL","STRING_LITERAL","ELLIPSES","MUL_ASSIGN","DIV_ASSIGN", 469 | "MOD_ASSIGN","ADD_ASSIGN","SUB_ASSIGN","LEFT_ASSIGN","RIGHT_ASSIGN","AND_ASSIGN", 470 | "XOR_ASSIGN","OR_ASSIGN","EQ_OP","NE_OP","PTR_OP","AND_OP","OR_OP","DEC_OP", 471 | "INC_OP","LE_OP","GE_OP","LEFT_SHIFT","RIGHT_SHIFT","SIZEOF","TYPEDEF","EXTERN", 472 | "STATIC","AUTO","REGISTER","CONST","VOLATILE","VOID","INLINE","CHAR","SHORT", 473 | "INT","LONG","SIGNED","UNSIGNED","FLOAT","DOUBLE","STRUCT","UNION","ENUM","CASE", 474 | "DEFAULT","IF","ELSE","SWITCH","WHILE","DO","FOR","GOTO","CONTINUE","BREAK", 475 | "RETURN","ASM","';'","','","'='","'{'","'}'","'('","')'","'['","']'","'*'","':'", 476 | "'?'","'|'","'^'","'&'","'<'","'>'","'+'","'-'","'/'","'%'","'~'","'!'","'.'", 477 | "file","program","top_level_declaration","declaration_list","declaration","declaration_specifiers", 478 | "declaration_specifiers1","initialized_declarator_list","@1","initialized_declarator", 479 | "initialized_declarator1","initializer_part","initializer_list","initializer", 480 | "abstract_declarator","direct_abstract_declarator","declarator","pointer","direct_declarator", 481 | "simple_declarator","array_declarator","@2","@3","name","storage_class_specifier", 482 | "type_qualifier_list","type_qualifier","type_specifier","type_specifier1","floating_type_specifier", 483 | "integer_type_specifier","integer_type_specifier_part","typedef_name","void_type_specifier", 484 | "type_name","enumeration_type_specifier","enumeration_type_definition","@4", 485 | "@5","enumeration_definition_list","enumeration_definition_list1","enumeration_constant_definition", 486 | "enumeration_constant","enumeration_type_reference","enumeration_tag","structure_type_specifier", 487 | "structure_type_definition","@6","@7","structure_type_reference","structure_tag", 488 | "union_type_specifier","union_type_definition","@8","@9","union_type_reference", 489 | "union_tag","field_list","field_list1","field_list2","component_declaration", 490 | "@10","@11","@12","component_declarator_list","component_declarator","simple_component", 491 | "bit_field","width","component_name","function_definition","@13","function_specifier", 492 | "function_specifier1","function_declarator","function_declarator0","function_direct_declarator", 493 | "@14","function_declarator1","function_declarator2","identifier_list","parameter_type_list", 494 | "parameter_list","parameter_declaration","statement","statement_list","compound_statement", 495 | "@15","@16","compound_statement_body","inner_declaration_list","conditional_statement", 496 | "if_else_statement","if_statement","iterative_statement","do_statement","for_statement", 497 | "for_expressions","while_statement","labeled_statement","case_label","default_label", 498 | "named_label","switch_statement","break_statement","continue_statement","expression_statement", 499 | "goto_statement","null_statement","return_statement","expression","comma_expression", 500 | "assignment_expression","assignment_op","conditional_expression","logical_or_expression", 501 | "logical_and_expression","bitwise_or_expression","bitwise_xor_expression","bitwise_and_expression", 502 | "equality_expression","equality_op","relational_expression","relational_op", 503 | "shift_expression","shift_op","additive_expression","add_op","multiplicative_expression", 504 | "mult_op","unary_expression","address_expression","bitwise_negation_expression", 505 | "cast_expression","indirection_expression","logical_negation_expression","predecrement_expression", 506 | "preincrement_expression","sizeof_expression","unary_minus_expression","unary_plus_expression", 507 | "postfix_expression","component_selection_expression","direct_component_selection", 508 | "indirect_component_selection","function_call","function_call_direct","postdecrement_expression", 509 | "postincrement_expression","subscript_expression","primary_expression","string_literal", 510 | "parenthesized_expression","@17","@18","constant_expression","expression_list", 511 | "asm_statement","asm_type","asm_inout_list","asm_inout","asm_clobber_list","asm_label", 512 | "named_label_address","assignment_expression_list","assignment_expression_list_item", 513 | "named_assignment","named_assignment_list", NULL 514 | }; 515 | #endif 516 | 517 | static const short yyr1[] = { 0, 518 | 87, 87, 88, 88, 89, 89, 89, 89, 90, 90, 519 | 91, 91, 92, 93, 93, 93, 93, 93, 93, 94, 520 | 95, 94, 96, 97, 97, 97, 97, 98, 99, 99, 521 | 100, 100, 100, 100, 101, 101, 101, 102, 102, 102, 522 | 102, 102, 102, 102, 102, 102, 103, 103, 104, 104, 523 | 104, 104, 105, 105, 105, 105, 106, 107, 108, 109, 524 | 107, 110, 111, 111, 111, 111, 111, 111, 112, 112, 525 | 113, 113, 114, 115, 115, 115, 115, 115, 115, 115, 526 | 116, 116, 116, 116, 117, 117, 117, 118, 118, 118, 527 | 118, 118, 118, 119, 120, 121, 121, 122, 122, 124, 528 | 123, 125, 123, 126, 126, 127, 127, 128, 128, 129, 529 | 130, 131, 131, 132, 132, 134, 133, 135, 133, 136, 530 | 137, 137, 138, 138, 140, 139, 141, 139, 142, 143, 531 | 143, 144, 144, 145, 145, 146, 146, 146, 146, 148, 532 | 147, 149, 147, 150, 147, 151, 151, 152, 152, 153, 533 | 154, 154, 155, 156, 156, 158, 157, 159, 160, 160, 534 | 160, 160, 161, 162, 162, 164, 163, 165, 166, 166, 535 | 166, 167, 167, 168, 168, 169, 169, 170, 170, 170, 536 | 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 537 | 171, 171, 172, 172, 174, 175, 173, 176, 176, 176, 538 | 176, 177, 178, 178, 179, 180, 181, 181, 181, 182, 539 | 183, 184, 184, 184, 184, 184, 184, 184, 184, 185, 540 | 186, 186, 186, 187, 188, 189, 190, 191, 192, 193, 541 | 194, 195, 196, 196, 197, 198, 198, 199, 199, 199, 542 | 199, 200, 200, 200, 200, 200, 200, 200, 200, 200, 543 | 200, 200, 201, 201, 201, 202, 202, 203, 203, 204, 544 | 204, 205, 205, 206, 206, 207, 207, 208, 208, 209, 545 | 209, 210, 210, 210, 210, 211, 211, 212, 212, 213, 546 | 213, 214, 214, 215, 215, 216, 216, 216, 217, 217, 547 | 217, 217, 217, 217, 217, 217, 217, 217, 217, 218, 548 | 219, 220, 220, 220, 221, 222, 223, 224, 225, 225, 549 | 226, 227, 228, 228, 228, 228, 228, 228, 228, 229, 550 | 229, 230, 231, 232, 232, 233, 233, 234, 235, 236, 551 | 237, 237, 237, 237, 238, 238, 239, 240, 241, 239, 552 | 242, 243, 243, 244, 244, 244, 244, 245, 245, 245, 553 | 246, 246, 246, 247, 248, 248, 248, 249, 250, 251, 554 | 251, 252, 252, 252, 253, 253, 253, 253, 254, 254 555 | }; 556 | 557 | static const short yyr2[] = { 0, 558 | 0, 1, 1, 2, 1, 1, 1, 1, 1, 2, 559 | 3, 2, 1, 1, 2, 1, 2, 1, 2, 1, 560 | 0, 4, 1, 1, 2, 2, 3, 2, 1, 3, 561 | 1, 2, 3, 4, 1, 2, 1, 3, 2, 3, 562 | 3, 4, 2, 3, 3, 4, 1, 2, 1, 2, 563 | 2, 3, 1, 3, 1, 1, 1, 3, 0, 0, 564 | 6, 1, 1, 1, 1, 1, 1, 1, 1, 2, 565 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 566 | 1, 1, 2, 2, 1, 2, 2, 1, 1, 1, 567 | 1, 1, 1, 1, 1, 1, 2, 1, 1, 0, 568 | 5, 0, 6, 1, 2, 1, 3, 1, 3, 1, 569 | 2, 1, 1, 1, 1, 0, 5, 0, 6, 2, 570 | 1, 1, 1, 1, 0, 5, 0, 6, 2, 1, 571 | 1, 0, 1, 1, 2, 1, 2, 2, 1, 0, 572 | 4, 0, 5, 0, 5, 1, 3, 1, 1, 1, 573 | 2, 3, 1, 1, 1, 0, 3, 1, 1, 2, 574 | 2, 3, 1, 1, 2, 0, 5, 1, 0, 1, 575 | 1, 1, 3, 1, 3, 1, 3, 2, 1, 2, 576 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 577 | 1, 1, 1, 2, 0, 0, 5, 0, 1, 1, 578 | 2, 1, 1, 1, 7, 5, 1, 1, 1, 7, 579 | 5, 2, 3, 3, 3, 4, 4, 4, 5, 5, 580 | 2, 2, 2, 2, 1, 1, 5, 2, 2, 2, 581 | 3, 1, 2, 3, 1, 1, 3, 1, 1, 3, 582 | 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 583 | 1, 1, 1, 5, 4, 1, 3, 1, 3, 1, 584 | 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, 585 | 3, 1, 1, 1, 1, 1, 3, 1, 1, 1, 586 | 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 587 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 588 | 2, 4, 6, 6, 2, 2, 2, 2, 4, 2, 589 | 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 590 | 1, 3, 3, 3, 4, 3, 4, 2, 2, 4, 591 | 1, 1, 1, 1, 1, 2, 3, 0, 0, 5, 592 | 1, 1, 3, 5, 7, 9, 11, 1, 2, 2, 593 | 0, 1, 3, 4, 0, 1, 3, 4, 2, 1, 594 | 3, 0, 1, 3, 3, 5, 4, 6, 1, 3 595 | }; 596 | 597 | static const short yydefact[] = { 1, 598 | 57, 94, 67, 64, 66, 63, 65, 71, 72, 95, 599 | 68, 90, 91, 92, 93, 88, 89, 81, 82, 0, 600 | 0, 0, 348, 232, 0, 49, 2, 3, 5, 0, 601 | 13, 0, 168, 53, 55, 14, 18, 16, 73, 75, 602 | 76, 85, 78, 80, 74, 98, 99, 77, 114, 115, 603 | 79, 123, 124, 6, 156, 158, 159, 163, 164, 0, 604 | 8, 7, 0, 350, 84, 83, 121, 122, 116, 120, 605 | 130, 131, 125, 129, 112, 113, 100, 111, 349, 0, 606 | 0, 47, 56, 72, 51, 50, 69, 4, 12, 0, 607 | 20, 23, 24, 0, 160, 165, 59, 15, 19, 17, 608 | 93, 87, 86, 0, 161, 9, 0, 166, 0, 132, 609 | 118, 132, 127, 0, 102, 54, 48, 52, 70, 11, 610 | 21, 0, 0, 26, 25, 162, 58, 0, 195, 157, 611 | 10, 169, 335, 0, 136, 0, 140, 114, 123, 0, 612 | 133, 134, 139, 132, 0, 132, 110, 0, 104, 106, 613 | 108, 0, 0, 0, 62, 332, 0, 0, 0, 0, 614 | 0, 338, 0, 0, 0, 0, 0, 0, 28, 331, 615 | 31, 238, 253, 256, 258, 260, 262, 264, 266, 270, 616 | 276, 280, 284, 289, 290, 291, 292, 293, 294, 295, 617 | 296, 297, 298, 299, 313, 320, 321, 314, 315, 316, 618 | 317, 318, 319, 333, 334, 239, 27, 341, 235, 236, 619 | 60, 198, 172, 179, 0, 171, 170, 174, 176, 336, 620 | 0, 351, 142, 144, 0, 137, 138, 117, 135, 0, 621 | 126, 0, 101, 105, 0, 0, 22, 0, 226, 359, 622 | 307, 308, 338, 310, 32, 0, 29, 96, 0, 0, 623 | 0, 305, 300, 312, 311, 301, 306, 0, 0, 0, 624 | 0, 0, 0, 0, 268, 269, 0, 273, 275, 272, 625 | 274, 0, 278, 279, 0, 282, 283, 0, 286, 287, 626 | 288, 0, 243, 244, 245, 246, 247, 248, 249, 250, 627 | 251, 252, 242, 0, 0, 328, 329, 0, 0, 0, 628 | 0, 0, 62, 0, 225, 0, 0, 0, 0, 0, 629 | 0, 0, 0, 0, 202, 193, 200, 182, 196, 199, 630 | 183, 204, 203, 184, 207, 208, 209, 185, 0, 0, 631 | 0, 186, 187, 188, 189, 190, 191, 192, 0, 181, 632 | 0, 0, 180, 37, 178, 35, 167, 0, 0, 344, 633 | 0, 0, 352, 0, 0, 0, 150, 0, 146, 148, 634 | 149, 119, 128, 107, 109, 103, 358, 0, 0, 33, 635 | 0, 97, 35, 0, 337, 339, 326, 342, 0, 257, 636 | 284, 0, 0, 259, 261, 263, 265, 267, 271, 277, 637 | 281, 285, 362, 240, 154, 155, 323, 324, 0, 0, 638 | 322, 237, 61, 224, 0, 0, 0, 0, 0, 0, 639 | 0, 229, 228, 233, 0, 194, 0, 201, 221, 223, 640 | 222, 230, 43, 0, 0, 39, 0, 0, 0, 36, 641 | 173, 175, 177, 0, 0, 0, 351, 0, 0, 151, 642 | 153, 0, 141, 0, 309, 34, 30, 362, 302, 0, 643 | 0, 327, 255, 0, 362, 363, 0, 360, 325, 330, 644 | 0, 0, 0, 0, 0, 0, 0, 231, 234, 197, 645 | 38, 45, 41, 44, 0, 40, 0, 0, 353, 345, 646 | 0, 143, 145, 152, 147, 62, 0, 0, 0, 369, 647 | 0, 340, 343, 254, 0, 362, 241, 0, 0, 0, 648 | 0, 212, 0, 0, 0, 46, 42, 354, 0, 355, 649 | 0, 0, 303, 0, 304, 364, 361, 206, 227, 220, 650 | 0, 215, 214, 211, 213, 0, 346, 356, 0, 0, 651 | 362, 365, 370, 0, 0, 216, 217, 218, 0, 0, 652 | 362, 367, 0, 205, 210, 219, 357, 347, 0, 366, 653 | 368, 0, 0, 0 654 | }; 655 | 656 | static const short yydefgoto[] = { 552, 657 | 27, 28, 105, 106, 107, 31, 90, 153, 91, 92, 658 | 124, 246, 169, 424, 344, 357, 81, 82, 34, 35, 659 | 128, 302, 170, 36, 136, 37, 38, 39, 40, 41, 660 | 42, 43, 44, 249, 45, 46, 114, 152, 148, 149, 661 | 150, 151, 47, 78, 48, 49, 110, 144, 50, 70, 662 | 51, 52, 112, 146, 53, 74, 140, 141, 142, 143, 663 | 225, 354, 355, 358, 359, 360, 361, 440, 488, 54, 664 | 104, 55, 56, 57, 58, 83, 132, 60, 215, 216, 665 | 425, 218, 219, 316, 317, 318, 212, 417, 319, 320, 666 | 321, 322, 323, 324, 325, 326, 466, 327, 328, 329, 667 | 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 668 | 209, 210, 294, 172, 173, 174, 175, 176, 177, 178, 669 | 267, 179, 272, 180, 275, 181, 278, 182, 282, 183, 670 | 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 671 | 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 672 | 204, 205, 251, 450, 211, 379, 340, 63, 352, 353, 673 | 529, 125, 206, 457, 458, 490, 491 674 | }; 675 | 676 | static const short yypact[] = { 1250, 677 | -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -16,-32768, 678 | -32768,-32768,-32768,-32768, 21,-32768,-32768,-32768, 43, 61, 679 | 76, 78, 71,-32768, 60, 34, 1250,-32768,-32768, 36, 680 | -32768, 27, 49,-32768,-32768, 1517, 1517, 1517,-32768,-32768, 681 | 210, 178,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 682 | -32768,-32768,-32768,-32768,-32768,-32768, 1517,-32768, 175, 57, 683 | -32768,-32768, 89,-32768,-32768,-32768,-32768,-32768,-32768, 87, 684 | -32768,-32768,-32768, 102,-32768,-32768,-32768, 159,-32768, 103, 685 | 27, -2,-32768,-32768,-32768, 34,-32768,-32768,-32768, 183, 686 | -32768,-32768, 13, 27, 1517, 175, 158,-32768,-32768,-32768, 687 | -32768,-32768,-32768, 205, 1517,-32768, 36,-32768, 249, 1404, 688 | -32768, 1404,-32768, 258,-32768,-32768, -2,-32768,-32768,-32768, 689 | -32768, 211, 650,-32768, 233, 1517,-32768, 1143,-32768,-32768, 690 | -32768, 1451,-32768, 18,-32768, 1313, 178, 237, 239, 236, 691 | 1404,-32768,-32768, 1404, 238, 1404,-32768, 241, 242,-32768, 692 | 245, 258, 60, 249,-32768,-32768, 304, 1171, 1171, 1193, 693 | 618, 500, 1171, 1171, 1171, 1171, 1171, 1171,-32768, 243, 694 | -32768,-32768, 10, 291, 248, 244, 247, 223, 86, 240, 695 | 189, -11, 278,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 696 | -32768,-32768,-32768, 53,-32768,-32768,-32768,-32768,-32768,-32768, 697 | -32768,-32768,-32768, 307,-32768,-32768,-32768,-32768, 250,-32768, 698 | -32768, 430,-32768, 54, 246, 252,-32768, 253,-32768,-32768, 699 | 255, 249,-32768, 178, 24,-32768,-32768,-32768,-32768, 264, 700 | -32768, 265,-32768, 258, 1143, 266,-32768, 17,-32768,-32768, 701 | -32768,-32768, 500,-32768,-32768, 124,-32768, 138, 256, 267, 702 | 205,-32768,-32768,-32768,-32768,-32768,-32768, 723, 1171, 733, 703 | 1171, 1171, 1171, 1171,-32768,-32768, 1171,-32768,-32768,-32768, 704 | -32768, 1171,-32768,-32768, 1171,-32768,-32768, 1171,-32768,-32768, 705 | -32768, 1171,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 706 | -32768,-32768,-32768, 755, 270,-32768,-32768, 765, 1143, 270, 707 | 1143, 268, 262, 1143,-32768, 269, 273, 276, 550, 277, 708 | 343, 284, 285, 838, 1517,-32768, 550,-32768,-32768, 550, 709 | -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 279, 280, 710 | 281,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 288,-32768, 711 | 1297, 849,-32768, 70,-32768, 30,-32768, 353, 1471,-32768, 712 | 68, 85,-32768, 24, 24, 1143, 286, 212,-32768,-32768, 713 | -32768,-32768,-32768,-32768,-32768,-32768,-32768, 289, 640,-32768, 714 | 1343,-32768, 139, 1103,-32768,-32768,-32768,-32768, -9, 291, 715 | -32768, 1171, 287, 248, 244, 247, 223, 86, 240, 189, 716 | -11,-32768, 871,-32768,-32768,-32768,-32768,-32768, 106, 290, 717 | -32768,-32768,-32768,-32768, 1143, 1143, 1143, -16, 302, 939, 718 | 299,-32768,-32768,-32768, 305,-32768, 300, 550,-32768,-32768, 719 | -32768,-32768,-32768, 301, 309,-32768, 298, 1389, 961, 70, 720 | -32768,-32768,-32768, 1143, 249, 308, 249, 214, 220,-32768, 721 | -32768, 1143,-32768, 24, 1103,-32768,-32768, 360,-32768, 313, 722 | 1143,-32768,-32768, 1171, 871,-32768, 126,-32768,-32768,-32768, 723 | 316, 317, 318, 306, 971, 319, 310,-32768,-32768,-32768, 724 | -32768,-32768,-32768,-32768, 321,-32768, 322, 323,-32768,-32768, 725 | 151,-32768,-32768,-32768,-32768, 324, 270, 326, 163,-32768, 726 | 167,-32768,-32768,-32768, 169, 871,-32768, 550, 550, 550, 727 | 1143, 1143, 331, 550, 1007,-32768,-32768,-32768, 332, 249, 728 | 337, 1044,-32768, 16,-32768,-32768,-32768, 350,-32768,-32768, 729 | 327,-32768, 1143,-32768, 1143, 341,-32768, 307, 114, 1075, 730 | 871,-32768,-32768, 550, 342,-32768,-32768, 1143, 249, 344, 731 | 871,-32768, 193,-32768,-32768,-32768, 307,-32768, 195,-32768, 732 | -32768, 406, 408,-32768 733 | }; 734 | 735 | static const short yypgoto[] = {-32768, 736 | -32768, 384, -81, 4, 1, 227,-32768,-32768, 259,-32768, 737 | 292,-32768, -151, -189, -284, -19, 8, 9,-32768,-32768, 738 | -32768,-32768,-32768,-32768, -8, 75, 40,-32768,-32768,-32768, 739 | 373,-32768,-32768, 172,-32768,-32768,-32768,-32768, 271,-32768, 740 | 182,-32768,-32768,-32768,-32768, 59,-32768,-32768,-32768,-32768, 741 | -32768, 82,-32768,-32768,-32768,-32768, 55,-32768, 283,-32768, 742 | -32768,-32768,-32768, -58, -26,-32768,-32768, -23, -283,-32768, 743 | -32768,-32768,-32768, 391,-32768, 26,-32768,-32768,-32768,-32768, 744 | -127,-32768, 73, -302, 105, -91,-32768,-32768,-32768,-32768, 745 | -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 746 | -32768, 274,-32768,-32768,-32768,-32768,-32768, 83,-32768, -125, 747 | -32768, -121,-32768, -361,-32768, 168, 177, 180, 176, 179, 748 | -32768, 181,-32768, 184,-32768, 174,-32768, 216,-32768, -116, 749 | -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 750 | -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 751 | -109,-32768,-32768,-32768, -288, 149, 155,-32768, 15, 20, 752 | -32768,-32768,-32768, -426, -46, -57,-32768 753 | }; 754 | 755 | 756 | #define YYLAST 1566 757 | 758 | 759 | static const short yytable[] = { 134, 760 | 30, 171, 208, 29, 217, 80, 409, 32, 33, 247, 761 | 93, 397, 130, 126, 416, 404, 401, 86, 395, 396, 762 | 453, 489, 220, 220, 343, 59, 1, 30, 495, 1, 763 | 29, 259, 1, 85, 32, 33, 250, 94, 1, 171, 764 | 33, 241, 242, 244, 238, 64, 252, 253, 254, 255, 765 | 256, 257, 59, 427, 451, 59, 1, 96, 372, 452, 766 | 279, 430, 1, 67, 68, -168, 65, 97, 8, 84, 767 | 280, 281, 295, 220, 122, 296, 297, 123, 71, 72, 768 | 75, 76, 61, 260, 66, 367, 221, 93, 430, 117, 769 | 222, 25, 494, 118, 25, 26, 356, 341, 89, 342, 770 | 87, 487, 117, 25, 543, 26, 79, 26, 131, 61, 771 | 268, 269, 351, 365, 549, 416, 103, 250, 97, 96, 772 | 298, 341, 299, 342, 108, 26, 69, 25, 224, 131, 773 | 315, 26, 214, 93, 383, 434, 378, 428, 300, 429, 774 | 477, 73, 381, 77, 381, 381, 381, 381, 435, 137, 775 | 381, 137, 111, 436, 62, 381, 109, 437, 381, 376, 776 | 119, 381, 248, 270, 271, 392, 145, 113, 138, 451, 777 | 138, 116, 394, 400, 459, 223, 378, 539, 208, 402, 778 | 137, 62, 540, 137, 87, 137, 87, 369, 415, 496, 779 | 370, 139, 497, 139, 345, 518, 519, 520, 230, 138, 780 | 232, 524, 138, 511, 138, 371, 371, 342, 342, 26, 781 | 119, 87, 8, 84, 435, 87, 208, 447, 87, 509, 782 | 87, 346, 139, 510, 115, 139, 496, 139, 127, 513, 783 | 514, 544, 496, 515, 441, 516, -56, -56, -56, -56, 784 | 265, 266, -56, 248, -56, 120, 121, 171, 12, 13, 785 | 14, 101, 16, 17, 133, 373, 496, 449, 496, 550, 786 | 147, 551, 98, 99, 100, 381, 273, 274, 276, 277, 787 | 129, 456, 395, 396, 443, 444, 482, 444, 154, 461, 788 | 462, 463, 483, 444, 467, 283, 284, 285, 286, 287, 789 | 288, 289, 290, 291, 292, 438, 439, 123, 119, 226, 790 | 475, 227, 228, 208, 231, 234, 239, 233, 478, 235, 791 | 258, 261, 220, 301, 347, 348, 349, 350, 131, 263, 792 | 441, 80, 262, 264, 374, 351, 456, 351, 449, 493, 793 | 362, 363, 366, 456, -226, 375, 405, 381, 403, 503, 794 | 406, 214, 293, 407, 410, 411, 412, 413, 346, 214, 795 | 422, 419, 420, 421, 117, 431, 464, 445, 442, 454, 796 | 460, 468, 486, 396, 156, 133, 470, 469, 473, 471, 797 | 480, 214, 505, 501, 456, 521, 522, 472, 373, 526, 798 | 157, 492, 158, 159, 498, 499, 500, 504, 160, 506, 799 | 532, 508, 507, 523, 527, 535, -154, 536, 512, 537, 800 | 528, 530, 534, 538, 545, 553, 548, 554, 542, 456, 801 | 88, 237, 546, 102, 368, 364, 207, 485, 484, 456, 802 | 95, 433, 236, 229, 418, 455, 380, 162, 214, 547, 803 | 240, 163, 303, 2, 156, 133, 164, 384, 386, 165, 804 | 166, 385, 387, 167, 168, 487, 399, 388, 390, 517, 805 | 157, 481, 158, 159, 479, 389, 533, 0, 160, 3, 806 | 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 807 | 14, 15, 16, 17, 18, 19, 20, 21, 22, 304, 808 | 305, 306, 0, 307, 308, 309, 310, 311, 312, 313, 809 | 314, 23, 24, 391, 0, 129, 0, 162, 0, 0, 810 | 0, 163, 155, 2, 156, 133, 164, 0, 0, 165, 811 | 166, 0, 0, 167, 168, 0, 0, 0, 0, 0, 812 | 157, 0, 158, 159, 0, 0, 0, 0, 160, 3, 813 | 4, 5, 6, 7, 8, 84, 10, 11, 12, 13, 814 | 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 815 | 0, 0, 303, 0, 156, 133, 0, 0, 0, 0, 816 | 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 817 | 157, 163, 158, 159, 0, 0, 164, 0, 160, 165, 818 | 166, 0, 0, 167, 168, 408, 0, 0, 0, 0, 819 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, 820 | 305, 306, 0, 307, 308, 309, 310, 311, 312, 313, 821 | 314, 23, 24, 0, 0, 129, 0, 162, 0, 0, 822 | 155, 163, 156, 133, 0, 0, 164, 0, 0, 165, 823 | 166, 0, 0, 167, 168, 0, 0, 0, 157, 0, 824 | 158, 159, 155, 0, 156, 133, 160, 0, 0, 0, 825 | 0, 0, 155, 0, 156, 133, 0, 0, 0, 0, 826 | 157, 0, 158, 159, 0, 0, 0, 0, 160, 0, 827 | 157, 0, 158, 159, 0, 0, 0, 0, 160, 0, 828 | 0, 0, 0, 161, 245, 162, 0, 0, 0, 163, 829 | 0, 0, 0, 0, 164, 0, 0, 165, 166, 0, 830 | 0, 167, 168, 0, 0, 161, 446, 162, 0, 0, 831 | 0, 163, 0, 0, 0, 161, 164, 162, 0, 165, 832 | 166, 163, 0, 167, 168, 155, 164, 156, 133, 165, 833 | 166, 0, 0, 167, 168, 155, 0, 156, 133, 0, 834 | 0, 0, 0, 157, 0, 158, 159, 0, 0, 0, 835 | 0, 160, 0, 157, 0, 158, 159, 155, 0, 156, 836 | 133, 160, 0, 0, 0, 0, 0, 155, 0, 156, 837 | 133, 0, 0, 0, 0, 157, 0, 158, 159, 0, 838 | 0, 0, 0, 160, 0, 157, 0, 158, 159, 0, 839 | 162, 377, 0, 160, 163, 0, 0, 0, 0, 164, 840 | 162, 0, 165, 166, 163, 382, 167, 168, 0, 164, 841 | 0, 0, 165, 166, 0, 0, 167, 168, 0, 0, 842 | 393, 0, 162, 0, 0, 0, 163, 0, 0, 0, 843 | 0, 164, 162, 398, 165, 166, 163, 0, 167, 168, 844 | 155, 164, 156, 133, 165, 166, 0, 0, 167, 168, 845 | 0, 155, 0, 156, 133, 0, 0, 0, 157, 0, 846 | 158, 159, 0, 0, 0, 0, 160, 0, 0, 157, 847 | 0, 158, 159, 155, 0, 156, 133, 160, 0, 0, 848 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 849 | 0, 157, 0, 158, 159, 0, 0, 0, 0, 160, 850 | 414, 0, 0, 0, 0, 162, 0, 0, 0, 163, 851 | 0, 0, 0, 0, 164, 0, 162, 165, 166, 426, 852 | 163, 167, 168, 0, 0, 164, 0, 0, 165, 166, 853 | 0, 0, 167, 168, 0, 0, 455, 0, 162, 0, 854 | 0, 155, 163, 156, 133, 0, 0, 164, 0, 0, 855 | 165, 166, 0, 0, 167, 168, 0, 0, 0, 157, 856 | 0, 158, 159, 155, 0, 156, 133, 160, 0, 0, 857 | 0, 0, 0, 155, 0, 156, 133, 0, 0, 0, 858 | 0, 157, 0, 158, 159, 0, 0, 0, 0, 160, 859 | 0, 157, 0, 158, 159, 0, 0, 0, 0, 160, 860 | 0, 465, 0, 0, 0, 0, 162, 0, 0, 155, 861 | 163, 156, 133, 0, 0, 164, 0, 0, 165, 166, 862 | 0, 0, 167, 168, 0, 0, 0, 157, 162, 158, 863 | 159, 476, 163, 502, 0, 160, 0, 164, 162, 0, 864 | 165, 166, 163, 0, 167, 168, 155, 164, 156, 133, 865 | 165, 166, 0, 0, 167, 168, 0, 0, 0, 0, 866 | 0, 0, 0, 0, 157, 0, 158, 159, 0, 525, 867 | 0, 0, 160, 0, 162, 0, 0, 155, 163, 156, 868 | 133, 0, 0, 164, 0, 0, 165, 166, 0, 0, 869 | 167, 168, 0, 0, 0, 157, 0, 158, 159, 0, 870 | 0, 0, 0, 160, 0, 155, 0, 156, 133, 531, 871 | 0, 162, 0, 0, 0, 163, 0, 0, 0, 0, 872 | 164, 0, 0, 165, 166, 158, 159, 167, 168, 0, 873 | 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 874 | 541, 0, 162, 0, 0, 155, 163, 156, 133, 0, 875 | 0, 164, 0, 0, 165, 166, 0, 0, 167, 168, 876 | 0, 0, 0, 157, 0, 158, 159, 0, 448, 0, 877 | 162, 160, 0, 155, 163, 156, 133, 0, 0, 164, 878 | 0, 0, 165, 166, 0, 0, 167, 168, 0, 0, 879 | 0, 0, 0, 158, 159, 155, 0, 156, 133, 160, 880 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 881 | 162, 0, 0, 0, 163, 158, 159, 0, 0, 164, 882 | 0, 160, 165, 166, 0, 0, 167, 168, 0, 0, 883 | 0, 0, 0, 0, 0, 0, 0, 0, 162, 0, 884 | 0, 0, 163, 0, 0, 0, 0, 164, 0, 0, 885 | 165, 166, 1, 2, 167, 168, 0, 0, 0, 0, 886 | 243, 0, 0, 0, 163, 0, 0, 0, 0, 164, 887 | 0, 0, 165, 166, 0, 0, 167, 168, 0, 3, 888 | 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 889 | 14, 15, 16, 17, 18, 19, 20, 21, 22, 1, 890 | 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 891 | 0, 23, 24, 0, 0, 0, 2, 25, 0, 0, 892 | 0, 26, 0, 0, 0, 0, 3, 4, 5, 6, 893 | 7, 8, 84, 10, 11, 12, 13, 14, 15, 16, 894 | 17, 18, 19, 20, 21, 22, 2, 8, 84, 10, 895 | 0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 896 | 21, 22, 0, 0, 341, 423, 342, 0, 26, 0, 897 | 0, 0, 3, 4, 5, 6, 7, 8, 84, 10, 898 | 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 899 | 21, 22, 2, 0, 0, 0, 0, 0, 0, 0, 900 | 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 901 | 371, 423, 342, 0, 26, 0, 0, 0, 3, 4, 902 | 5, 6, 7, 8, 84, 10, 11, 12, 13, 14, 903 | 15, 16, 17, 18, 19, 20, 21, 22, 8, 84, 904 | 10, 0, 12, 13, 14, 15, 16, 17, 18, 19, 905 | 20, 21, 22, 213, 2, 0, 0, 474, 0, 0, 906 | 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, 907 | 0, 0, 0, 0, 2, 0, 0, 432, 0, 0, 908 | 3, 4, 5, 6, 7, 8, 84, 10, 11, 12, 909 | 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 910 | 3, 4, 5, 6, 7, 8, 84, 10, 11, 12, 911 | 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 912 | 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 913 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 914 | 0, 0, 0, 0, 0, 0, 3, 4, 5, 6, 915 | 7, 8, 84, 10, 11, 12, 13, 14, 15, 16, 916 | 17, 18, 19, 20, 21, 22 917 | }; 918 | 919 | static const short yycheck[] = { 109, 920 | 0, 123, 128, 0, 132, 25, 309, 0, 0, 161, 921 | 30, 295, 104, 95, 317, 304, 300, 26, 3, 4, 922 | 382, 448, 6, 6, 214, 0, 3, 27, 455, 3, 923 | 27, 22, 3, 26, 27, 27, 162, 30, 3, 161, 924 | 32, 158, 159, 160, 154, 62, 163, 164, 165, 166, 925 | 167, 168, 27, 342, 64, 30, 3, 32, 248, 69, 926 | 72, 346, 3, 3, 4, 68, 46, 70, 35, 36, 927 | 82, 83, 20, 6, 62, 23, 24, 65, 3, 4, 928 | 3, 4, 0, 74, 42, 69, 69, 107, 373, 81, 929 | 73, 68, 454, 86, 68, 72, 73, 68, 63, 70, 930 | 26, 86, 94, 68, 531, 72, 36, 72, 105, 27, 931 | 25, 26, 222, 235, 541, 418, 42, 243, 70, 94, 932 | 68, 68, 70, 70, 68, 72, 66, 68, 137, 126, 933 | 212, 72, 132, 153, 260, 68, 258, 68, 86, 70, 934 | 429, 66, 259, 66, 261, 262, 263, 264, 64, 110, 935 | 267, 112, 66, 69, 0, 272, 68, 73, 275, 251, 936 | 86, 278, 162, 78, 79, 282, 112, 66, 110, 64, 937 | 112, 69, 294, 299, 69, 136, 298, 64, 304, 301, 938 | 141, 27, 69, 144, 110, 146, 112, 64, 314, 64, 939 | 67, 110, 67, 112, 214, 498, 499, 500, 144, 141, 940 | 146, 504, 144, 487, 146, 68, 68, 70, 70, 72, 941 | 136, 137, 35, 36, 64, 141, 342, 369, 144, 69, 942 | 146, 214, 141, 73, 66, 144, 64, 146, 71, 67, 943 | 64, 534, 64, 67, 356, 67, 62, 63, 64, 65, 944 | 18, 19, 68, 243, 70, 63, 64, 369, 39, 40, 945 | 41, 42, 43, 44, 6, 248, 64, 374, 64, 67, 946 | 3, 67, 36, 37, 38, 382, 27, 28, 80, 81, 947 | 66, 393, 3, 4, 63, 64, 63, 64, 68, 405, 948 | 406, 407, 63, 64, 410, 8, 9, 10, 11, 12, 949 | 13, 14, 15, 16, 17, 354, 355, 65, 224, 63, 950 | 428, 63, 67, 429, 67, 64, 3, 67, 434, 65, 951 | 68, 21, 6, 64, 69, 64, 64, 63, 315, 76, 952 | 442, 341, 75, 77, 69, 435, 448, 437, 445, 451, 953 | 67, 67, 67, 455, 73, 69, 68, 454, 71, 465, 954 | 68, 341, 65, 68, 68, 3, 63, 63, 341, 349, 955 | 63, 73, 73, 73, 346, 3, 55, 69, 73, 73, 956 | 71, 63, 3, 4, 5, 6, 67, 63, 71, 69, 957 | 63, 371, 63, 68, 496, 501, 502, 69, 371, 505, 958 | 21, 69, 23, 24, 69, 69, 69, 69, 29, 69, 959 | 512, 69, 71, 63, 63, 69, 73, 523, 73, 525, 960 | 510, 65, 53, 63, 63, 0, 63, 0, 530, 531, 961 | 27, 153, 538, 41, 243, 234, 125, 444, 442, 541, 962 | 30, 349, 152, 141, 320, 66, 259, 68, 428, 539, 963 | 157, 72, 3, 4, 5, 6, 77, 261, 263, 80, 964 | 81, 262, 264, 84, 85, 86, 298, 267, 275, 496, 965 | 21, 437, 23, 24, 435, 272, 514, -1, 29, 30, 966 | 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 967 | 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 968 | 51, 52, -1, 54, 55, 56, 57, 58, 59, 60, 969 | 61, 62, 63, 278, -1, 66, -1, 68, -1, -1, 970 | -1, 72, 3, 4, 5, 6, 77, -1, -1, 80, 971 | 81, -1, -1, 84, 85, -1, -1, -1, -1, -1, 972 | 21, -1, 23, 24, -1, -1, -1, -1, 29, 30, 973 | 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 974 | 41, 42, 43, 44, 45, 46, 47, 48, 49, -1, 975 | -1, -1, 3, -1, 5, 6, -1, -1, -1, -1, 976 | -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 977 | 21, 72, 23, 24, -1, -1, 77, -1, 29, 80, 978 | 81, -1, -1, 84, 85, 36, -1, -1, -1, -1, 979 | -1, -1, -1, -1, -1, -1, -1, -1, -1, 50, 980 | 51, 52, -1, 54, 55, 56, 57, 58, 59, 60, 981 | 61, 62, 63, -1, -1, 66, -1, 68, -1, -1, 982 | 3, 72, 5, 6, -1, -1, 77, -1, -1, 80, 983 | 81, -1, -1, 84, 85, -1, -1, -1, 21, -1, 984 | 23, 24, 3, -1, 5, 6, 29, -1, -1, -1, 985 | -1, -1, 3, -1, 5, 6, -1, -1, -1, -1, 986 | 21, -1, 23, 24, -1, -1, -1, -1, 29, -1, 987 | 21, -1, 23, 24, -1, -1, -1, -1, 29, -1, 988 | -1, -1, -1, 66, 67, 68, -1, -1, -1, 72, 989 | -1, -1, -1, -1, 77, -1, -1, 80, 81, -1, 990 | -1, 84, 85, -1, -1, 66, 67, 68, -1, -1, 991 | -1, 72, -1, -1, -1, 66, 77, 68, -1, 80, 992 | 81, 72, -1, 84, 85, 3, 77, 5, 6, 80, 993 | 81, -1, -1, 84, 85, 3, -1, 5, 6, -1, 994 | -1, -1, -1, 21, -1, 23, 24, -1, -1, -1, 995 | -1, 29, -1, 21, -1, 23, 24, 3, -1, 5, 996 | 6, 29, -1, -1, -1, -1, -1, 3, -1, 5, 997 | 6, -1, -1, -1, -1, 21, -1, 23, 24, -1, 998 | -1, -1, -1, 29, -1, 21, -1, 23, 24, -1, 999 | 68, 69, -1, 29, 72, -1, -1, -1, -1, 77, 1000 | 68, -1, 80, 81, 72, 73, 84, 85, -1, 77, 1001 | -1, -1, 80, 81, -1, -1, 84, 85, -1, -1, 1002 | 66, -1, 68, -1, -1, -1, 72, -1, -1, -1, 1003 | -1, 77, 68, 69, 80, 81, 72, -1, 84, 85, 1004 | 3, 77, 5, 6, 80, 81, -1, -1, 84, 85, 1005 | -1, 3, -1, 5, 6, -1, -1, -1, 21, -1, 1006 | 23, 24, -1, -1, -1, -1, 29, -1, -1, 21, 1007 | -1, 23, 24, 3, -1, 5, 6, 29, -1, -1, 1008 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1009 | -1, 21, -1, 23, 24, -1, -1, -1, -1, 29, 1010 | 63, -1, -1, -1, -1, 68, -1, -1, -1, 72, 1011 | -1, -1, -1, -1, 77, -1, 68, 80, 81, 71, 1012 | 72, 84, 85, -1, -1, 77, -1, -1, 80, 81, 1013 | -1, -1, 84, 85, -1, -1, 66, -1, 68, -1, 1014 | -1, 3, 72, 5, 6, -1, -1, 77, -1, -1, 1015 | 80, 81, -1, -1, 84, 85, -1, -1, -1, 21, 1016 | -1, 23, 24, 3, -1, 5, 6, 29, -1, -1, 1017 | -1, -1, -1, 3, -1, 5, 6, -1, -1, -1, 1018 | -1, 21, -1, 23, 24, -1, -1, -1, -1, 29, 1019 | -1, 21, -1, 23, 24, -1, -1, -1, -1, 29, 1020 | -1, 63, -1, -1, -1, -1, 68, -1, -1, 3, 1021 | 72, 5, 6, -1, -1, 77, -1, -1, 80, 81, 1022 | -1, -1, 84, 85, -1, -1, -1, 21, 68, 23, 1023 | 24, 71, 72, 63, -1, 29, -1, 77, 68, -1, 1024 | 80, 81, 72, -1, 84, 85, 3, 77, 5, 6, 1025 | 80, 81, -1, -1, 84, 85, -1, -1, -1, -1, 1026 | -1, -1, -1, -1, 21, -1, 23, 24, -1, 63, 1027 | -1, -1, 29, -1, 68, -1, -1, 3, 72, 5, 1028 | 6, -1, -1, 77, -1, -1, 80, 81, -1, -1, 1029 | 84, 85, -1, -1, -1, 21, -1, 23, 24, -1, 1030 | -1, -1, -1, 29, -1, 3, -1, 5, 6, 66, 1031 | -1, 68, -1, -1, -1, 72, -1, -1, -1, -1, 1032 | 77, -1, -1, 80, 81, 23, 24, 84, 85, -1, 1033 | -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, 1034 | 66, -1, 68, -1, -1, 3, 72, 5, 6, -1, 1035 | -1, 77, -1, -1, 80, 81, -1, -1, 84, 85, 1036 | -1, -1, -1, 21, -1, 23, 24, -1, 66, -1, 1037 | 68, 29, -1, 3, 72, 5, 6, -1, -1, 77, 1038 | -1, -1, 80, 81, -1, -1, 84, 85, -1, -1, 1039 | -1, -1, -1, 23, 24, 3, -1, 5, 6, 29, 1040 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1041 | 68, -1, -1, -1, 72, 23, 24, -1, -1, 77, 1042 | -1, 29, 80, 81, -1, -1, 84, 85, -1, -1, 1043 | -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, 1044 | -1, -1, 72, -1, -1, -1, -1, 77, -1, -1, 1045 | 80, 81, 3, 4, 84, 85, -1, -1, -1, -1, 1046 | 68, -1, -1, -1, 72, -1, -1, -1, -1, 77, 1047 | -1, -1, 80, 81, -1, -1, 84, 85, -1, 30, 1048 | 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 1049 | 41, 42, 43, 44, 45, 46, 47, 48, 49, 3, 1050 | 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1051 | -1, 62, 63, -1, -1, -1, 4, 68, -1, -1, 1052 | -1, 72, -1, -1, -1, -1, 30, 31, 32, 33, 1053 | 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 1054 | 44, 45, 46, 47, 48, 49, 4, 35, 36, 37, 1055 | -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 1056 | 48, 49, -1, -1, 68, 69, 70, -1, 72, -1, 1057 | -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, 1058 | 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 1059 | 48, 49, 4, -1, -1, -1, -1, -1, -1, -1, 1060 | -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, 1061 | 68, 69, 70, -1, 72, -1, -1, -1, 30, 31, 1062 | 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 1063 | 42, 43, 44, 45, 46, 47, 48, 49, 35, 36, 1064 | 37, -1, 39, 40, 41, 42, 43, 44, 45, 46, 1065 | 47, 48, 49, 3, 4, -1, -1, 69, -1, -1, 1066 | -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, 1067 | -1, -1, -1, -1, 4, -1, -1, 7, -1, -1, 1068 | 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 1069 | 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 1070 | 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 1071 | 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 1072 | 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1073 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1074 | -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 1075 | 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 1076 | 44, 45, 46, 47, 48, 49 1077 | }; 1078 | /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ 1079 | 1080 | 1081 | /* Skeleton output parser for bison, 1082 | Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. 1083 | 1084 | This program is free software; you can redistribute it and/or modify 1085 | it under the terms of the GNU General Public License as published by 1086 | the Free Software Foundation; either version 2, or (at your option) 1087 | any later version. 1088 | 1089 | This program is distributed in the hope that it will be useful, 1090 | but WITHOUT ANY WARRANTY; without even the implied warranty of 1091 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1092 | GNU General Public License for more details. 1093 | 1094 | You should have received a copy of the GNU General Public License 1095 | along with this program; if not, write to the Free Software 1096 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ 1097 | 1098 | /* As a special exception, when this file is copied by Bison into a 1099 | Bison output file, you may use that output file without restriction. 1100 | This special exception was added by the Free Software Foundation 1101 | in version 1.24 of Bison. */ 1102 | 1103 | #ifndef alloca 1104 | #ifdef __GNUC__ 1105 | #define alloca __builtin_alloca 1106 | #else /* not GNU C. */ 1107 | #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) 1108 | #include <alloca.h> 1109 | #else /* not sparc */ 1110 | #if defined (MSDOS) && !defined (__TURBOC__) 1111 | #include <malloc.h> 1112 | #else /* not MSDOS, or __TURBOC__ */ 1113 | #if defined(_AIX) 1114 | #include <malloc.h> 1115 | #pragma alloca 1116 | #else /* not MSDOS, __TURBOC__, or _AIX */ 1117 | #ifdef __hpux 1118 | #ifdef __cplusplus 1119 | extern "C" { 1120 | void *alloca (unsigned int); 1121 | }; 1122 | #else /* not __cplusplus */ 1123 | void *alloca (); 1124 | #endif /* not __cplusplus */ 1125 | #endif /* __hpux */ 1126 | #endif /* not _AIX */ 1127 | #endif /* not MSDOS, or __TURBOC__ */ 1128 | #endif /* not sparc. */ 1129 | #endif /* not GNU C. */ 1130 | #endif /* alloca not defined. */ 1131 | 1132 | /* This is the parser code that is written into each bison parser 1133 | when the %semantic_parser declaration is not specified in the grammar. 1134 | It was written by Richard Stallman by simplifying the hairy parser 1135 | used when %semantic_parser is specified. */ 1136 | 1137 | /* Note: there must be only one dollar sign in this file. 1138 | It is replaced by the list of actions, each action 1139 | as one case of the switch. */ 1140 | 1141 | #define yyerrok (yyerrstatus = 0) 1142 | #define yyclearin (yychar = YYEMPTY) 1143 | #define YYEMPTY -2 1144 | #define YYEOF 0 1145 | #define YYACCEPT return(0) 1146 | #define YYABORT return(1) 1147 | #define YYERROR goto yyerrlab1 1148 | /* Like YYERROR except do call yyerror. 1149 | This remains here temporarily to ease the 1150 | transition to the new meaning of YYERROR, for GCC. 1151 | Once GCC version 2 has supplanted version 1, this can go. */ 1152 | #define YYFAIL goto yyerrlab 1153 | #define YYRECOVERING() (!!yyerrstatus) 1154 | #define YYBACKUP(token, value) \ 1155 | do \ 1156 | if (yychar == YYEMPTY && yylen == 1) \ 1157 | { yychar = (token), yylval = (value); \ 1158 | yychar1 = YYTRANSLATE (yychar); \ 1159 | YYPOPSTACK; \ 1160 | goto yybackup; \ 1161 | } \ 1162 | else \ 1163 | { yyerror ("syntax error: cannot back up"); YYERROR; } \ 1164 | while (0) 1165 | 1166 | #define YYTERROR 1 1167 | #define YYERRCODE 256 1168 | 1169 | #ifndef YYPURE 1170 | #define YYLEX yylex() 1171 | #endif 1172 | 1173 | #ifdef YYPURE 1174 | #ifdef YYLSP_NEEDED 1175 | #ifdef YYLEX_PARAM 1176 | #define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) 1177 | #else 1178 | #define YYLEX yylex(&yylval, &yylloc) 1179 | #endif 1180 | #else /* not YYLSP_NEEDED */ 1181 | #ifdef YYLEX_PARAM 1182 | #define YYLEX yylex(&yylval, YYLEX_PARAM) 1183 | #else 1184 | #define YYLEX yylex(&yylval) 1185 | #endif 1186 | #endif /* not YYLSP_NEEDED */ 1187 | #endif 1188 | 1189 | /* If nonreentrant, generate the variables here */ 1190 | 1191 | #ifndef YYPURE 1192 | 1193 | int yychar; /* the lookahead symbol */ 1194 | YYSTYPE yylval; /* the semantic value of the */ 1195 | /* lookahead symbol */ 1196 | 1197 | #ifdef YYLSP_NEEDED 1198 | YYLTYPE yylloc; /* location data for the lookahead */ 1199 | /* symbol */ 1200 | #endif 1201 | 1202 | int yynerrs; /* number of parse errors so far */ 1203 | #endif /* not YYPURE */ 1204 | 1205 | #if YYDEBUG != 0 1206 | int yydebug; /* nonzero means print parse trace */ 1207 | /* Since this is uninitialized, it does not stop multiple parsers 1208 | from coexisting. */ 1209 | #endif 1210 | 1211 | /* YYINITDEPTH indicates the initial size of the parser's stacks */ 1212 | 1213 | #ifndef YYINITDEPTH 1214 | #define YYINITDEPTH 200 1215 | #endif 1216 | 1217 | /* YYMAXDEPTH is the maximum size the stacks can grow to 1218 | (effective only if the built-in stack extension method is used). */ 1219 | 1220 | #if YYMAXDEPTH == 0 1221 | #undef YYMAXDEPTH 1222 | #endif 1223 | 1224 | #ifndef YYMAXDEPTH 1225 | #define YYMAXDEPTH 10000 1226 | #endif 1227 | 1228 | /* Prevent warning if -Wstrict-prototypes. */ 1229 | #ifdef __GNUC__ 1230 | int yyparse (void); 1231 | #endif 1232 | 1233 | #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ 1234 | #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) 1235 | #else /* not GNU C or C++ */ 1236 | #ifndef __cplusplus 1237 | 1238 | /* This is the most reliable way to avoid incompatibilities 1239 | in available built-in functions on various systems. */ 1240 | static void 1241 | __yy_memcpy (to, from, count) 1242 | char *to; 1243 | char *from; 1244 | int count; 1245 | { 1246 | register char *f = from; 1247 | register char *t = to; 1248 | register int i = count; 1249 | 1250 | while (i-- > 0) 1251 | *t++ = *f++; 1252 | } 1253 | 1254 | #else /* __cplusplus */ 1255 | 1256 | /* This is the most reliable way to avoid incompatibilities 1257 | in available built-in functions on various systems. */ 1258 | static void 1259 | __yy_memcpy (char *to, char *from, int count) 1260 | { 1261 | register char *f = from; 1262 | register char *t = to; 1263 | register int i = count; 1264 | 1265 | while (i-- > 0) 1266 | *t++ = *f++; 1267 | } 1268 | 1269 | #endif 1270 | #endif 1271 | 1272 | 1273 | 1274 | /* The user can define YYPARSE_PARAM as the name of an argument to be passed 1275 | into yyparse. The argument should have type void *. 1276 | It should actually point to an object. 1277 | Grammar actions can access the variable by casting it 1278 | to the proper pointer type. */ 1279 | 1280 | #ifdef YYPARSE_PARAM 1281 | #ifdef __cplusplus 1282 | #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM 1283 | #define YYPARSE_PARAM_DECL 1284 | #else /* not __cplusplus */ 1285 | #define YYPARSE_PARAM_ARG YYPARSE_PARAM 1286 | #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; 1287 | #endif /* not __cplusplus */ 1288 | #else /* not YYPARSE_PARAM */ 1289 | #define YYPARSE_PARAM_ARG 1290 | #define YYPARSE_PARAM_DECL 1291 | #endif /* not YYPARSE_PARAM */ 1292 | 1293 | int 1294 | yyparse(YYPARSE_PARAM_ARG) 1295 | YYPARSE_PARAM_DECL 1296 | { 1297 | register int yystate; 1298 | register int yyn; 1299 | register short *yyssp; 1300 | register YYSTYPE *yyvsp; 1301 | int yyerrstatus; /* number of tokens to shift before error messages enabled */ 1302 | int yychar1 = 0; /* lookahead token as an internal (translated) token number */ 1303 | 1304 | short yyssa[YYINITDEPTH]; /* the state stack */ 1305 | YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ 1306 | 1307 | short *yyss = yyssa; /* refer to the stacks thru separate pointers */ 1308 | YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ 1309 | 1310 | #ifdef YYLSP_NEEDED 1311 | YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ 1312 | YYLTYPE *yyls = yylsa; 1313 | YYLTYPE *yylsp; 1314 | 1315 | #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) 1316 | #else 1317 | #define YYPOPSTACK (yyvsp--, yyssp--) 1318 | #endif 1319 | 1320 | int yystacksize = YYINITDEPTH; 1321 | 1322 | #ifdef YYPURE 1323 | int yychar; 1324 | YYSTYPE yylval; 1325 | int yynerrs; 1326 | #ifdef YYLSP_NEEDED 1327 | YYLTYPE yylloc; 1328 | #endif 1329 | #endif 1330 | 1331 | YYSTYPE yyval; /* the variable used to return */ 1332 | /* semantic values from the action */ 1333 | /* routines */ 1334 | 1335 | int yylen; 1336 | 1337 | #if YYDEBUG != 0 1338 | if (yydebug) 1339 | fprintf(stderr, "Starting parse\n"); 1340 | #endif 1341 | 1342 | yystate = 0; 1343 | yyerrstatus = 0; 1344 | yynerrs = 0; 1345 | yychar = YYEMPTY; /* Cause a token to be read. */ 1346 | 1347 | /* Initialize stack pointers. 1348 | Waste one element of value and location stack 1349 | so that they stay on the same level as the state stack. 1350 | The wasted elements are never initialized. */ 1351 | 1352 | yyssp = yyss - 1; 1353 | yyvsp = yyvs; 1354 | #ifdef YYLSP_NEEDED 1355 | yylsp = yyls; 1356 | #endif 1357 | 1358 | /* Push a new state, which is found in yystate . */ 1359 | /* In all cases, when you get here, the value and location stacks 1360 | have just been pushed. so pushing a state here evens the stacks. */ 1361 | yynewstate: 1362 | 1363 | *++yyssp = yystate; 1364 | 1365 | if (yyssp >= yyss + yystacksize - 1) 1366 | { 1367 | /* Give user a chance to reallocate the stack */ 1368 | /* Use copies of these so that the &'s don't force the real ones into memory. */ 1369 | YYSTYPE *yyvs1 = yyvs; 1370 | short *yyss1 = yyss; 1371 | #ifdef YYLSP_NEEDED 1372 | YYLTYPE *yyls1 = yyls; 1373 | #endif 1374 | 1375 | /* Get the current used size of the three stacks, in elements. */ 1376 | int size = yyssp - yyss + 1; 1377 | 1378 | #ifdef yyoverflow 1379 | /* Each stack pointer address is followed by the size of 1380 | the data in use in that stack, in bytes. */ 1381 | #ifdef YYLSP_NEEDED 1382 | /* This used to be a conditional around just the two extra args, 1383 | but that might be undefined if yyoverflow is a macro. */ 1384 | yyoverflow("parser stack overflow", 1385 | &yyss1, size * sizeof (*yyssp), 1386 | &yyvs1, size * sizeof (*yyvsp), 1387 | &yyls1, size * sizeof (*yylsp), 1388 | &yystacksize); 1389 | #else 1390 | yyoverflow("parser stack overflow", 1391 | &yyss1, size * sizeof (*yyssp), 1392 | &yyvs1, size * sizeof (*yyvsp), 1393 | &yystacksize); 1394 | #endif 1395 | 1396 | yyss = yyss1; yyvs = yyvs1; 1397 | #ifdef YYLSP_NEEDED 1398 | yyls = yyls1; 1399 | #endif 1400 | #else /* no yyoverflow */ 1401 | /* Extend the stack our own way. */ 1402 | if (yystacksize >= YYMAXDEPTH) 1403 | { 1404 | yyerror("parser stack overflow"); 1405 | return 2; 1406 | } 1407 | yystacksize *= 2; 1408 | if (yystacksize > YYMAXDEPTH) 1409 | yystacksize = YYMAXDEPTH; 1410 | yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); 1411 | __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp)); 1412 | yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); 1413 | __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp)); 1414 | #ifdef YYLSP_NEEDED 1415 | yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); 1416 | __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp)); 1417 | #endif 1418 | #endif /* no yyoverflow */ 1419 | 1420 | yyssp = yyss + size - 1; 1421 | yyvsp = yyvs + size - 1; 1422 | #ifdef YYLSP_NEEDED 1423 | yylsp = yyls + size - 1; 1424 | #endif 1425 | 1426 | #if YYDEBUG != 0 1427 | if (yydebug) 1428 | fprintf(stderr, "Stack size increased to %d\n", yystacksize); 1429 | #endif 1430 | 1431 | if (yyssp >= yyss + yystacksize - 1) 1432 | YYABORT; 1433 | } 1434 | 1435 | #if YYDEBUG != 0 1436 | if (yydebug) 1437 | fprintf(stderr, "Entering state %d\n", yystate); 1438 | #endif 1439 | 1440 | goto yybackup; 1441 | yybackup: 1442 | 1443 | /* Do appropriate processing given the current state. */ 1444 | /* Read a lookahead token if we need one and don't already have one. */ 1445 | /* yyresume: */ 1446 | 1447 | /* First try to decide what to do without reference to lookahead token. */ 1448 | 1449 | yyn = yypact[yystate]; 1450 | if (yyn == YYFLAG) 1451 | goto yydefault; 1452 | 1453 | /* Not known => get a lookahead token if don't already have one. */ 1454 | 1455 | /* yychar is either YYEMPTY or YYEOF 1456 | or a valid token in external form. */ 1457 | 1458 | if (yychar == YYEMPTY) 1459 | { 1460 | #if YYDEBUG != 0 1461 | if (yydebug) 1462 | fprintf(stderr, "Reading a token: "); 1463 | #endif 1464 | yychar = YYLEX; 1465 | } 1466 | 1467 | /* Convert token to internal form (in yychar1) for indexing tables with */ 1468 | 1469 | if (yychar <= 0) /* This means end of input. */ 1470 | { 1471 | yychar1 = 0; 1472 | yychar = YYEOF; /* Don't call YYLEX any more */ 1473 | 1474 | #if YYDEBUG != 0 1475 | if (yydebug) 1476 | fprintf(stderr, "Now at end of input.\n"); 1477 | #endif 1478 | } 1479 | else 1480 | { 1481 | yychar1 = YYTRANSLATE(yychar); 1482 | 1483 | #if YYDEBUG != 0 1484 | if (yydebug) 1485 | { 1486 | fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); 1487 | /* Give the individual parser a way to print the precise meaning 1488 | of a token, for further debugging info. */ 1489 | #ifdef YYPRINT 1490 | YYPRINT (stderr, yychar, yylval); 1491 | #endif 1492 | fprintf (stderr, ")\n"); 1493 | } 1494 | #endif 1495 | } 1496 | 1497 | yyn += yychar1; 1498 | if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) 1499 | goto yydefault; 1500 | 1501 | yyn = yytable[yyn]; 1502 | 1503 | /* yyn is what to do for this token type in this state. 1504 | Negative => reduce, -yyn is rule number. 1505 | Positive => shift, yyn is new state. 1506 | New state is final state => don't bother to shift, 1507 | just return success. 1508 | 0, or most negative number => error. */ 1509 | 1510 | if (yyn < 0) 1511 | { 1512 | if (yyn == YYFLAG) 1513 | goto yyerrlab; 1514 | yyn = -yyn; 1515 | goto yyreduce; 1516 | } 1517 | else if (yyn == 0) 1518 | goto yyerrlab; 1519 | 1520 | if (yyn == YYFINAL) 1521 | YYACCEPT; 1522 | 1523 | /* Shift the lookahead token. */ 1524 | 1525 | #if YYDEBUG != 0 1526 | if (yydebug) 1527 | fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); 1528 | #endif 1529 | 1530 | /* Discard the token being shifted unless it is eof. */ 1531 | if (yychar != YYEOF) 1532 | yychar = YYEMPTY; 1533 | 1534 | *++yyvsp = yylval; 1535 | #ifdef YYLSP_NEEDED 1536 | *++yylsp = yylloc; 1537 | #endif 1538 | 1539 | /* count tokens shifted since error; after three, turn off error status. */ 1540 | if (yyerrstatus) yyerrstatus--; 1541 | 1542 | yystate = yyn; 1543 | goto yynewstate; 1544 | 1545 | /* Do the default action for the current state. */ 1546 | yydefault: 1547 | 1548 | yyn = yydefact[yystate]; 1549 | if (yyn == 0) 1550 | goto yyerrlab; 1551 | 1552 | /* Do a reduction. yyn is the number of a rule to reduce with. */ 1553 | yyreduce: 1554 | yylen = yyr2[yyn]; 1555 | if (yylen > 0) 1556 | yyval = yyvsp[1-yylen]; /* implement default value of the action */ 1557 | 1558 | #if YYDEBUG != 0 1559 | if (yydebug) 1560 | { 1561 | int i; 1562 | 1563 | fprintf (stderr, "Reducing via rule %d (line %d), ", 1564 | yyn, yyrline[yyn]); 1565 | 1566 | /* Print the symbols being reduced, and their result. */ 1567 | for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) 1568 | fprintf (stderr, "%s ", yytname[yyrhs[i]]); 1569 | fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); 1570 | } 1571 | #endif 1572 | 1573 | 1574 | switch (yyn) { 1575 | 1576 | case 5: 1577 | { scope=0; reset(); common_comment=NULL; in_typedef=0; GetCurrentComment(); ; 1578 | break;} 1579 | case 6: 1580 | { scope=0; reset(); common_comment=NULL; in_typedef=0; GetCurrentComment(); ; 1581 | break;} 1582 | case 9: 1583 | { scope=0; reset(); common_comment=NULL; in_typedef=0; ; 1584 | break;} 1585 | case 10: 1586 | { scope=0; reset(); common_comment=NULL; in_typedef=0; 1587 | yyval=yyvsp[0]; ; 1588 | break;} 1589 | case 11: 1590 | { in_type_spec=0; ; 1591 | break;} 1592 | case 12: 1593 | { in_type_spec=0; ; 1594 | break;} 1595 | case 13: 1596 | { if(!in_typedef && !in_function && !common_comment) 1597 | {common_comment=CopyString(GetCurrentComment()); SetCurrentComment(common_comment);} ; 1598 | break;} 1599 | case 15: 1600 | { if(yyvsp[-1]) yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); else yyval=yyvsp[0]; ; 1601 | break;} 1602 | case 16: 1603 | { if(!current->type) current->type=yyvsp[0]; ; 1604 | break;} 1605 | case 17: 1606 | { if(!current->type) current->type=yyvsp[-1]; 1607 | yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ; 1608 | break;} 1609 | case 19: 1610 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ; 1611 | break;} 1612 | case 21: 1613 | { in_type_spec=1; ; 1614 | break;} 1615 | case 23: 1616 | { 1617 | if((in_function==0 || in_function==3) && !in_funcdef && !in_structunion) 1618 | { 1619 | char* specific_comment=GetCurrentComment(); 1620 | if(!common_comment) SetCurrentComment(specific_comment); else 1621 | if(!specific_comment) SetCurrentComment(common_comment); else 1622 | if(strcmp(common_comment,specific_comment)) SetCurrentComment(ConcatStrings(3,common_comment," ",specific_comment)); else 1623 | SetCurrentComment(common_comment); 1624 | } 1625 | 1626 | if(in_typedef) 1627 | { 1628 | char* vname=strstr(yyvsp[0],current->name); 1629 | SeenTypedefName(current->name,vname[strlen(current->name)]=='('?-1:1); 1630 | if(!in_header) 1631 | SeenTypedef(current->name,ConcatStrings(3,current->qual,current->type,yyvsp[0])); 1632 | if(in_function==3) 1633 | DownScope(); 1634 | } 1635 | else 1636 | if(in_function==2) 1637 | SeenFunctionArg(current->name,ConcatStrings(3,current->qual,current->type,yyvsp[0])); 1638 | else 1639 | { 1640 | char* vname=strstr(yyvsp[0],current->name); 1641 | if(vname[strlen(current->name)]!='(' && IsATypeName(current->type)!='f') 1642 | { 1643 | if((in_funcbody==0 || scope&EXTERN_F) && !in_structunion && !(in_header==GLOBAL && scope&EXTERN_H)) 1644 | SeenVariableDefinition(current->name,ConcatStrings(3,current->qual,current->type,yyvsp[0]),SCOPE); 1645 | else 1646 | if(in_funcbody) 1647 | SeenScopeVariable(current->name); 1648 | } 1649 | else 1650 | { 1651 | SeenFunctionProto(current->name,in_funcbody); 1652 | if(in_function==3) 1653 | DownScope(); 1654 | } 1655 | } 1656 | 1657 | if(in_function==3) in_function=0; 1658 | ; 1659 | break;} 1660 | case 36: 1661 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 1662 | break;} 1663 | case 38: 1664 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); 1665 | { int i=0; while(yyvsp[-1][i] && yyvsp[-1][i]=='*') i++; if(!yyvsp[-1][i]) in_type_spec=0; } ; 1666 | break;} 1667 | case 39: 1668 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 1669 | break;} 1670 | case 40: 1671 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 1672 | break;} 1673 | case 41: 1674 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 1675 | break;} 1676 | case 42: 1677 | { yyval=ConcatStrings(4,yyvsp[-3],yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 1678 | break;} 1679 | case 43: 1680 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 1681 | break;} 1682 | case 44: 1683 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 1684 | break;} 1685 | case 45: 1686 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 1687 | break;} 1688 | case 46: 1689 | { yyval=ConcatStrings(4,yyvsp[-3],yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 1690 | break;} 1691 | case 47: 1692 | { in_type_spec=0; ; 1693 | break;} 1694 | case 48: 1695 | { in_type_spec=0; yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 1696 | break;} 1697 | case 50: 1698 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ; 1699 | break;} 1700 | case 51: 1701 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 1702 | break;} 1703 | case 52: 1704 | { yyval=ConcatStrings(4,yyvsp[-2]," ",yyvsp[-1],yyvsp[0]); ; 1705 | break;} 1706 | case 54: 1707 | { if(yyvsp[-1][0]=='*' && yyvsp[-1][1]==' ') { yyvsp[-1]=&yyvsp[-1][1]; yyvsp[-1][0]='*'; } 1708 | yyval=ConcatStrings(4," ",yyvsp[-2],yyvsp[-1],yyvsp[0]); 1709 | ; 1710 | break;} 1711 | case 57: 1712 | { yyval=ConcatStrings(2," ",yyvsp[0]); current->name=yyvsp[0]; 1713 | if(!current->type) current->type="int"; 1714 | if(in_funcdef==1 && in_function!=3 && !in_structunion) SeenScopeVariable(yyvsp[0]); ; 1715 | break;} 1716 | case 58: 1717 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 1718 | break;} 1719 | case 59: 1720 | { in_type_spec=0; ; 1721 | break;} 1722 | case 60: 1723 | { in_type_spec=1; ; 1724 | break;} 1725 | case 61: 1726 | { yyval=ConcatStrings(4,yyvsp[-5],yyvsp[-4],yyvsp[-2],yyvsp[0]); ; 1727 | break;} 1728 | case 63: 1729 | { yyval=NULL; ; 1730 | break;} 1731 | case 64: 1732 | { yyval=NULL; 1733 | if(in_funcbody) scope|=EXTERN_F; 1734 | else if(in_header) scope|=EXTERN_H; 1735 | else scope|=EXTERNAL; ; 1736 | break;} 1737 | case 65: 1738 | { yyval=NULL; ; 1739 | break;} 1740 | case 66: 1741 | { yyval=NULL; scope |= LOCAL; ; 1742 | break;} 1743 | case 67: 1744 | { yyval=NULL; 1745 | in_typedef=1; if(!in_header) SeenTypedef(NULL,NULL); 1746 | common_comment=CopyString(GetCurrentComment()); ; 1747 | break;} 1748 | case 68: 1749 | { yyval=NULL; scope |= INLINED; ; 1750 | break;} 1751 | case 70: 1752 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ; 1753 | break;} 1754 | case 71: 1755 | { if(!current->type) current->qual=ConcatStrings(3,current->qual,yyvsp[0]," "); ; 1756 | break;} 1757 | case 72: 1758 | { if(!current->type) current->qual=ConcatStrings(3,current->qual,yyvsp[0]," "); ; 1759 | break;} 1760 | case 73: 1761 | { in_type_spec=1; ; 1762 | break;} 1763 | case 83: 1764 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ; 1765 | break;} 1766 | case 84: 1767 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ; 1768 | break;} 1769 | case 86: 1770 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ; 1771 | break;} 1772 | case 87: 1773 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ; 1774 | break;} 1775 | case 96: 1776 | { in_type_spec=0; ; 1777 | break;} 1778 | case 97: 1779 | { in_type_spec=0; yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 1780 | break;} 1781 | case 100: 1782 | { push(); 1783 | if(!in_header) 1784 | { 1785 | if(in_structunion) SeenStructUnionComp(yyvsp[-1],in_structunion); 1786 | else SeenStructUnionStart(yyvsp[-1]); 1787 | } 1788 | in_structunion++; ; 1789 | break;} 1790 | case 101: 1791 | { pop(); in_structunion--; 1792 | if(!in_structunion && !current->type) current->type=ConcatStrings(2,yyvsp[-4]," {...}"); 1793 | if(!in_header && !in_structunion && in_typedef) SeenStructUnionEnd(); 1794 | yyval=ConcatStrings(5,yyvsp[-4]," ",yyvsp[-3],yyvsp[-1],yyvsp[0]); ; 1795 | break;} 1796 | case 102: 1797 | { push(); 1798 | if(!in_header) 1799 | { 1800 | if(in_structunion) SeenStructUnionComp(ConcatStrings(3,yyvsp[-2]," ",yyvsp[-1]),in_structunion); 1801 | else SeenStructUnionStart(ConcatStrings(3,yyvsp[-2]," ",yyvsp[-1])); 1802 | } 1803 | in_structunion++; ; 1804 | break;} 1805 | case 103: 1806 | { pop(); in_structunion--; 1807 | if(!in_structunion && !current->type) current->type=ConcatStrings(3,yyvsp[-5]," ",yyvsp[-4]); 1808 | if(!in_header && !in_structunion) SeenStructUnionEnd(); 1809 | yyval=ConcatStrings(7,yyvsp[-5]," ",yyvsp[-4]," ",yyvsp[-3],yyvsp[-1],yyvsp[0]);; 1810 | break;} 1811 | case 107: 1812 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 1813 | break;} 1814 | case 108: 1815 | { if(!in_header) SeenStructUnionComp(yyvsp[0],in_structunion); ; 1816 | break;} 1817 | case 109: 1818 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); if(!in_header) SeenStructUnionComp(yyvsp[-2],in_structunion); ; 1819 | break;} 1820 | case 111: 1821 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ; 1822 | break;} 1823 | case 116: 1824 | { push(); 1825 | if(!in_header) 1826 | { 1827 | if(in_structunion) SeenStructUnionComp(yyvsp[-1],in_structunion); 1828 | else SeenStructUnionStart(yyvsp[-1]); 1829 | } 1830 | in_structunion++; ; 1831 | break;} 1832 | case 117: 1833 | { pop(); in_structunion--; 1834 | if(!in_structunion && !current->type) current->type=ConcatStrings(2,yyvsp[-4]," {...}"); 1835 | if(!in_header && !in_structunion && in_typedef) SeenStructUnionEnd(); 1836 | yyval=ConcatStrings(5,yyvsp[-4]," ",yyvsp[-3],yyvsp[-1],yyvsp[0]); ; 1837 | break;} 1838 | case 118: 1839 | { push(); 1840 | if(!in_header) 1841 | { 1842 | if(in_structunion) SeenStructUnionComp(ConcatStrings(3,yyvsp[-2]," ",yyvsp[-1]),in_structunion); 1843 | else SeenStructUnionStart(ConcatStrings(3,yyvsp[-2]," ",yyvsp[-1])); 1844 | } 1845 | in_structunion++; ; 1846 | break;} 1847 | case 119: 1848 | { pop(); in_structunion--; 1849 | if(!in_structunion && !current->type) current->type=ConcatStrings(3,yyvsp[-5]," ",yyvsp[-4]); 1850 | if(!in_header && !in_structunion) SeenStructUnionEnd(); 1851 | yyval=ConcatStrings(7,yyvsp[-5]," ",yyvsp[-4]," ",yyvsp[-3],yyvsp[-1],yyvsp[0]);; 1852 | break;} 1853 | case 120: 1854 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ; 1855 | break;} 1856 | case 125: 1857 | { push(); 1858 | if(!in_header) 1859 | { 1860 | if(in_structunion) SeenStructUnionComp(yyvsp[-1],in_structunion); 1861 | else SeenStructUnionStart(yyvsp[-1]); 1862 | } 1863 | in_structunion++; ; 1864 | break;} 1865 | case 126: 1866 | { pop(); in_structunion--; 1867 | if(!in_structunion && !current->type) current->type=ConcatStrings(2,yyvsp[-4]," {...}"); 1868 | if(!in_header && !in_structunion && in_typedef) SeenStructUnionEnd(); 1869 | yyval=ConcatStrings(5,yyvsp[-4]," ",yyvsp[-3],yyvsp[-1],yyvsp[0]); ; 1870 | break;} 1871 | case 127: 1872 | { push(); 1873 | if(!in_header) 1874 | { 1875 | if(in_structunion) SeenStructUnionComp(ConcatStrings(3,yyvsp[-2]," ",yyvsp[-1]),in_structunion); 1876 | else SeenStructUnionStart(ConcatStrings(3,yyvsp[-2]," ",yyvsp[-1])); 1877 | } 1878 | in_structunion++; ; 1879 | break;} 1880 | case 128: 1881 | { pop(); in_structunion--; 1882 | if(!in_structunion && !current->type) current->type=ConcatStrings(3,yyvsp[-5]," ",yyvsp[-4]); 1883 | if(!in_header && !in_structunion) SeenStructUnionEnd(); 1884 | yyval=ConcatStrings(7,yyvsp[-5]," ",yyvsp[-4]," ",yyvsp[-3],yyvsp[-1],yyvsp[0]);; 1885 | break;} 1886 | case 129: 1887 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ; 1888 | break;} 1889 | case 135: 1890 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 1891 | break;} 1892 | case 137: 1893 | { yyval = ConcatStrings(3, yyvsp[-1], " ", yyvsp[0]); 1894 | if(!in_header) SeenStructUnionComp(yyvsp[-1],in_structunion); ; 1895 | break;} 1896 | case 138: 1897 | { yyval = ConcatStrings(3, yyvsp[-1], " ", yyvsp[0]); 1898 | if(!in_header) SeenStructUnionComp(yyvsp[-1],in_structunion); ; 1899 | break;} 1900 | case 140: 1901 | { comp_type=yyvsp[0]; ; 1902 | break;} 1903 | case 141: 1904 | { yyval=ConcatStrings(3,yyvsp[-3],yyvsp[-1],yyvsp[0]); reset(); in_type_spec=0; ; 1905 | break;} 1906 | case 142: 1907 | { comp_type=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ; 1908 | break;} 1909 | case 143: 1910 | { yyval=ConcatStrings(4,yyvsp[-4],yyvsp[-3],yyvsp[-1],yyvsp[0]); reset(); in_type_spec=0; ; 1911 | break;} 1912 | case 144: 1913 | { comp_type=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ; 1914 | break;} 1915 | case 145: 1916 | { yyval=ConcatStrings(4,yyvsp[-4],yyvsp[-3],yyvsp[-1],yyvsp[0]); reset(); in_type_spec=0; ; 1917 | break;} 1918 | case 146: 1919 | { if(!in_header) SeenStructUnionComp(ConcatStrings(2,comp_type,yyvsp[0]),in_structunion); ; 1920 | break;} 1921 | case 147: 1922 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); 1923 | if(!in_header) SeenStructUnionComp(ConcatStrings(2,comp_type,yyvsp[0]),in_structunion); ; 1924 | break;} 1925 | case 150: 1926 | { if(in_function==2) { DownScope(); pop(); in_function=0; } ; 1927 | break;} 1928 | case 151: 1929 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 1930 | break;} 1931 | case 152: 1932 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 1933 | break;} 1934 | case 156: 1935 | { pop(); in_funcbody=1; in_function=0; ; 1936 | break;} 1937 | case 157: 1938 | { in_funcbody=in_function=0; DownScope(); SeenFunctionDefinition(NULL); ; 1939 | break;} 1940 | case 158: 1941 | { char *func_type,*fname=strstr(yyvsp[0],(current-1)->name),*parenth=strstr(yyvsp[0],"("); 1942 | if(parenth>fname) 1943 | {parenth[0]=0;func_type=ConcatStrings(3,(current-1)->qual,(current-1)->type,yyvsp[0]);} 1944 | else 1945 | { 1946 | int open=1; 1947 | char *argbeg=strstr(&parenth[1],"("),*argend; 1948 | argbeg[1]=0; 1949 | for(argend=argbeg+2;*argend;argend++) 1950 | { 1951 | if(*argend=='(') open++; 1952 | if(*argend==')') open--; 1953 | if(!open) break; 1954 | } 1955 | func_type=ConcatStrings(4,(current-1)->qual,(current-1)->type,yyvsp[0],argend); 1956 | } 1957 | SeenFunctionDefinition(func_type); 1958 | ; 1959 | break;} 1960 | case 160: 1961 | { yyval=ConcatStrings(3,current->qual,current->type,yyvsp[0]); ; 1962 | break;} 1963 | case 162: 1964 | { yyval=ConcatStrings(3,current->qual,current->type,yyvsp[-1]); ; 1965 | break;} 1966 | case 163: 1967 | { push(); in_function=2; ; 1968 | break;} 1969 | case 165: 1970 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 1971 | break;} 1972 | case 166: 1973 | { push(); if(in_function==0) UpScope(); 1974 | if(in_function==0 && !in_funcdef) in_function=1; if(in_function!=3) in_funcdef++; ; 1975 | break;} 1976 | case 167: 1977 | { pop(); if(in_function!=3) in_funcdef--; if(in_funcdef==0) in_function=3; 1978 | yyval=ConcatStrings(4,yyvsp[-4],yyvsp[-3],yyvsp[-1],yyvsp[0]); ; 1979 | break;} 1980 | case 168: 1981 | { 1982 | if(!in_funcdef && !in_function && !in_funcbody) SeenFunctionDeclaration(current->name,SCOPE); 1983 | in_type_spec=0; 1984 | ; 1985 | break;} 1986 | case 169: 1987 | { if(in_function==1 && in_funcdef==1) SeenFunctionArg("void","void"); 1988 | if(in_structunion) yyval=NULL; else yyval="void"; ; 1989 | break;} 1990 | case 172: 1991 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0) { SeenFunctionArg(yyvsp[0],NULL); SeenScopeVariable(yyvsp[0]); } ; 1992 | break;} 1993 | case 173: 1994 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0) { SeenFunctionArg(yyvsp[0],NULL); SeenScopeVariable(yyvsp[0]); } 1995 | yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 1996 | break;} 1997 | case 175: 1998 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0) SeenFunctionArg(yyvsp[0],yyvsp[0]); 1999 | yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2000 | break;} 2001 | case 176: 2002 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0) SeenFunctionArg(strcmp("void",yyvsp[0])?current->name:"void",yyvsp[0]); 2003 | in_type_spec=0; ; 2004 | break;} 2005 | case 177: 2006 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0) SeenFunctionArg(current->name,yyvsp[0]); 2007 | in_type_spec=0; yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2008 | break;} 2009 | case 178: 2010 | { in_type_spec=0; yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 2011 | break;} 2012 | case 179: 2013 | { in_type_spec=0; ; 2014 | break;} 2015 | case 180: 2016 | { in_type_spec=0; yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 2017 | break;} 2018 | case 195: 2019 | { UpScope(); reset(); ; 2020 | break;} 2021 | case 196: 2022 | { DownScope(); ; 2023 | break;} 2024 | case 237: 2025 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2026 | break;} 2027 | case 254: 2028 | { yyval=ConcatStrings(5,yyvsp[-4],yyvsp[-3],yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2029 | break;} 2030 | case 255: 2031 | { yyval=ConcatStrings(4,yyvsp[-3],yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2032 | break;} 2033 | case 257: 2034 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2035 | break;} 2036 | case 259: 2037 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2038 | break;} 2039 | case 261: 2040 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2041 | break;} 2042 | case 263: 2043 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2044 | break;} 2045 | case 265: 2046 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2047 | break;} 2048 | case 267: 2049 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2050 | break;} 2051 | case 271: 2052 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2053 | break;} 2054 | case 277: 2055 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2056 | break;} 2057 | case 281: 2058 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2059 | break;} 2060 | case 285: 2061 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2062 | break;} 2063 | case 301: 2064 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 2065 | break;} 2066 | case 302: 2067 | { yyval=ConcatStrings(4,yyvsp[-3],yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2068 | break;} 2069 | case 306: 2070 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 2071 | break;} 2072 | case 309: 2073 | { yyval=ConcatStrings(4,yyvsp[-3],yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2074 | break;} 2075 | case 310: 2076 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 2077 | break;} 2078 | case 311: 2079 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 2080 | break;} 2081 | case 312: 2082 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ; 2083 | break;} 2084 | case 315: 2085 | { if(!IsAScopeVariable(yyvsp[0])) SeenFunctionCall(yyvsp[0]); ; 2086 | break;} 2087 | case 331: 2088 | { CheckFunctionVariableRef(yyvsp[0],in_funcbody); ; 2089 | break;} 2090 | case 337: 2091 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ; 2092 | break;} 2093 | case 338: 2094 | { push(); ; 2095 | break;} 2096 | case 339: 2097 | { pop(); ; 2098 | break;} 2099 | } 2100 | /* the action file gets copied in in place of this dollarsign */ 2101 | 2102 | 2103 | yyvsp -= yylen; 2104 | yyssp -= yylen; 2105 | #ifdef YYLSP_NEEDED 2106 | yylsp -= yylen; 2107 | #endif 2108 | 2109 | #if YYDEBUG != 0 2110 | if (yydebug) 2111 | { 2112 | short *ssp1 = yyss - 1; 2113 | fprintf (stderr, "state stack now"); 2114 | while (ssp1 != yyssp) 2115 | fprintf (stderr, " %d", *++ssp1); 2116 | fprintf (stderr, "\n"); 2117 | } 2118 | #endif 2119 | 2120 | *++yyvsp = yyval; 2121 | 2122 | #ifdef YYLSP_NEEDED 2123 | yylsp++; 2124 | if (yylen == 0) 2125 | { 2126 | yylsp->first_line = yylloc.first_line; 2127 | yylsp->first_column = yylloc.first_column; 2128 | yylsp->last_line = (yylsp-1)->last_line; 2129 | yylsp->last_column = (yylsp-1)->last_column; 2130 | yylsp->text = 0; 2131 | } 2132 | else 2133 | { 2134 | yylsp->last_line = (yylsp+yylen-1)->last_line; 2135 | yylsp->last_column = (yylsp+yylen-1)->last_column; 2136 | } 2137 | #endif 2138 | 2139 | /* Now "shift" the result of the reduction. 2140 | Determine what state that goes to, 2141 | based on the state we popped back to 2142 | and the rule number reduced by. */ 2143 | 2144 | yyn = yyr1[yyn]; 2145 | 2146 | yystate = yypgoto[yyn - YYNTBASE] + *yyssp; 2147 | if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) 2148 | yystate = yytable[yystate]; 2149 | else 2150 | yystate = yydefgoto[yyn - YYNTBASE]; 2151 | 2152 | goto yynewstate; 2153 | 2154 | yyerrlab: /* here on detecting error */ 2155 | 2156 | if (! yyerrstatus) 2157 | /* If not already recovering from an error, report this error. */ 2158 | { 2159 | ++yynerrs; 2160 | 2161 | #ifdef YYERROR_VERBOSE 2162 | yyn = yypact[yystate]; 2163 | 2164 | if (yyn > YYFLAG && yyn < YYLAST) 2165 | { 2166 | int size = 0; 2167 | char *msg; 2168 | int x, count; 2169 | 2170 | count = 0; 2171 | /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ 2172 | for (x = (yyn < 0 ? -yyn : 0); 2173 | x < (sizeof(yytname) / sizeof(char *)); x++) 2174 | if (yycheck[x + yyn] == x) 2175 | size += strlen(yytname[x]) + 15, count++; 2176 | msg = (char *) malloc(size + 15); 2177 | if (msg != 0) 2178 | { 2179 | strcpy(msg, "parse error"); 2180 | 2181 | if (count < 5) 2182 | { 2183 | count = 0; 2184 | for (x = (yyn < 0 ? -yyn : 0); 2185 | x < (sizeof(yytname) / sizeof(char *)); x++) 2186 | if (yycheck[x + yyn] == x) 2187 | { 2188 | strcat(msg, count == 0 ? ", expecting `" : " or `"); 2189 | strcat(msg, yytname[x]); 2190 | strcat(msg, "'"); 2191 | count++; 2192 | } 2193 | } 2194 | yyerror(msg); 2195 | free(msg); 2196 | } 2197 | else 2198 | yyerror ("parse error; also virtual memory exceeded"); 2199 | } 2200 | else 2201 | #endif /* YYERROR_VERBOSE */ 2202 | yyerror("parse error"); 2203 | } 2204 | 2205 | goto yyerrlab1; 2206 | yyerrlab1: /* here on error raised explicitly by an action */ 2207 | 2208 | if (yyerrstatus == 3) 2209 | { 2210 | /* if just tried and failed to reuse lookahead token after an error, discard it. */ 2211 | 2212 | /* return failure if at end of input */ 2213 | if (yychar == YYEOF) 2214 | YYABORT; 2215 | 2216 | #if YYDEBUG != 0 2217 | if (yydebug) 2218 | fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); 2219 | #endif 2220 | 2221 | yychar = YYEMPTY; 2222 | } 2223 | 2224 | /* Else will try to reuse lookahead token 2225 | after shifting the error token. */ 2226 | 2227 | yyerrstatus = 3; /* Each real token shifted decrements this */ 2228 | 2229 | goto yyerrhandle; 2230 | 2231 | yyerrdefault: /* current state does not do anything special for the error token. */ 2232 | 2233 | #if 0 2234 | /* This is wrong; only states that explicitly want error tokens 2235 | should shift them. */ 2236 | yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ 2237 | if (yyn) goto yydefault; 2238 | #endif 2239 | 2240 | yyerrpop: /* pop the current state because it cannot handle the error token */ 2241 | 2242 | if (yyssp == yyss) YYABORT; 2243 | yyvsp--; 2244 | yystate = *--yyssp; 2245 | #ifdef YYLSP_NEEDED 2246 | yylsp--; 2247 | #endif 2248 | 2249 | #if YYDEBUG != 0 2250 | if (yydebug) 2251 | { 2252 | short *ssp1 = yyss - 1; 2253 | fprintf (stderr, "Error: state stack now"); 2254 | while (ssp1 != yyssp) 2255 | fprintf (stderr, " %d", *++ssp1); 2256 | fprintf (stderr, "\n"); 2257 | } 2258 | #endif 2259 | 2260 | yyerrhandle: 2261 | 2262 | yyn = yypact[yystate]; 2263 | if (yyn == YYFLAG) 2264 | goto yyerrdefault; 2265 | 2266 | yyn += YYTERROR; 2267 | if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) 2268 | goto yyerrdefault; 2269 | 2270 | yyn = yytable[yyn]; 2271 | if (yyn < 0) 2272 | { 2273 | if (yyn == YYFLAG) 2274 | goto yyerrpop; 2275 | yyn = -yyn; 2276 | goto yyreduce; 2277 | } 2278 | else if (yyn == 0) 2279 | goto yyerrpop; 2280 | 2281 | if (yyn == YYFINAL) 2282 | YYACCEPT; 2283 | 2284 | #if YYDEBUG != 0 2285 | if (yydebug) 2286 | fprintf(stderr, "Shifting error token, "); 2287 | #endif 2288 | 2289 | *++yyvsp = yylval; 2290 | #ifdef YYLSP_NEEDED 2291 | *++yylsp = yylloc; 2292 | #endif 2293 | 2294 | yystate = yyn; 2295 | goto yynewstate; 2296 | } 2297 | 2298 | 2299 | #if YYDEBUG 2300 | 2301 | static int last_yylex[11]; 2302 | static char *last_yylval[11]; 2303 | static int count=0,modcount=0; 2304 | 2305 | #endif /* YYDEBUG */ 2306 | 2307 | 2308 | /*++++++++++++++++++++++++++++++++++++++ 2309 | Stop parsing the current file, due to an error. 2310 | 2311 | char *s The error message to print out. 2312 | ++++++++++++++++++++++++++++++++++++++*/ 2313 | 2314 | static void yyerror( char *s ) 2315 | { 2316 | #if YYDEBUG 2317 | int i; 2318 | #endif 2319 | 2320 | fflush(stdout); 2321 | fprintf(stderr,"%s:%d: cxref: %s\n\n",parse_file,parse_line,s); 2322 | 2323 | #if YYDEBUG 2324 | 2325 | fprintf(stderr,"The previous 10, current and next 10 symbols are:\n"); 2326 | 2327 | for(i=count>10?count-11:0,modcount=i%11;i<count-1;i++,modcount=i%11) 2328 | #ifdef YYBISON 2329 | fprintf(stderr,"%3d | %3d : %16s : %s\n",i+1-count,last_yylex[modcount],last_yylex[modcount]>255?yytname[last_yylex[modcount]-255]:"",last_yylval[modcount]); 2330 | #else 2331 | fprintf(stderr,"%3d | %3d : %s\n",i+1-count,last_yylex[modcount],last_yylval[modcount]); 2332 | #endif 2333 | 2334 | #ifdef YYBISON 2335 | fprintf(stderr," 0 | %3d : %16s : %s\n",yychar,yychar>255?yytname[yychar-255]:"",yylval); 2336 | #else 2337 | fprintf(stderr," 0 | %3d : %s\n",yychar,yylval); 2338 | #endif 2339 | 2340 | for(i=0;i<10;i++) 2341 | { 2342 | yychar=yylex(); 2343 | if(!yychar) 2344 | {fprintf(stderr,"END OF FILE\n");break;} 2345 | #ifdef YYBISON 2346 | fprintf(stderr,"%3d | %3d : %16s : %s\n",i+1,yychar,yychar>255?yytname[yychar-255]:"",yylval); 2347 | #else 2348 | fprintf(stderr,"%3d | %3d : %s\n",i+1,yychar,yylval); 2349 | #endif 2350 | } 2351 | 2352 | fprintf(stderr,"\n"); 2353 | 2354 | #endif /* YYDEBUG */ 2355 | 2356 | /* Finish off the input. */ 2357 | 2358 | #undef yylex 2359 | 2360 | if(yychar) 2361 | while((yychar=yylex())); 2362 | } 2363 | 2364 | 2365 | /*++++++++++++++++++++++++++++++++++++++ 2366 | Call the lexer, the feedback from the parser to the lexer is applied here. 2367 | 2368 | int cxref_yylex Returns the value from the lexer, modified due to parser feedback. 2369 | ++++++++++++++++++++++++++++++++++++++*/ 2370 | 2371 | static int cxref_yylex(void) 2372 | { 2373 | static int last_yyl=0; 2374 | int yyl=yylex(); 2375 | 2376 | if(yyl==TYPE_NAME) 2377 | if(in_type_spec || (in_structunion && last_yyl=='}') || last_yyl==TYPE_NAME || 2378 | last_yyl==CHAR || last_yyl==SHORT || last_yyl==INT || last_yyl==LONG || 2379 | last_yyl==SIGNED || last_yyl==UNSIGNED || 2380 | last_yyl==FLOAT || last_yyl==DOUBLE) 2381 | yyl=IDENTIFIER; 2382 | 2383 | last_yyl=yyl; 2384 | 2385 | #if YYDEBUG 2386 | 2387 | last_yylex [modcount]=yyl; 2388 | last_yylval[modcount]=yylval; 2389 | 2390 | if(yyl) 2391 | { 2392 | count++; 2393 | modcount=count%11; 2394 | } 2395 | else 2396 | { 2397 | count=0; 2398 | modcount=0; 2399 | } 2400 | 2401 | #if YYDEBUG == 2 2402 | 2403 | if(yyl) 2404 | #ifdef YYBISON 2405 | printf("#parse.y# %6d | %16s:%4d | %3d : %16s : %s\n",count,parse_file,parse_line,yyl,yyl>255?yytname[yyl-255]:"",yylval); 2406 | #else 2407 | printf("#parse.y# %6d | %16s:%4d | %3d : %s\n",count,parse_file,parse_line,yyl,yylval); 2408 | #endif /* YYBISON */ 2409 | else 2410 | printf("#parse.y# %6d | %16s:%4d | END OF FILE\n",count,parse_file,parse_line); 2411 | 2412 | fflush(stdout); 2413 | 2414 | #endif /* YYDEBUG==2 */ 2415 | 2416 | #endif /* YYDEBUG */ 2417 | 2418 | return(yyl); 2419 | }