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