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