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