Home | History | Annotate | Line # | Download | only in btyacc
grammar.tab.c revision 1.7
      1 /*	$NetBSD: grammar.tab.c,v 1.7 2026/01/18 16:41:30 christos Exp $	*/
      2 
      3 /* original parser id follows */
      4 /* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
      5 /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
      6 
      7 #define YYBYACC 1
      8 #define YYMAJOR 2
      9 #define YYMINOR 0
     10 #define YYCHECK "yyyymmdd"
     11 
     12 #define YYEMPTY        (-1)
     13 #define yyclearin      (yychar = YYEMPTY)
     14 #define yyerrok        (yyerrflag = 0)
     15 #define YYRECOVERING() (yyerrflag != 0)
     16 #define YYENOMEM       (-2)
     17 #define YYEOF          0
     18 #undef YYBTYACC
     19 #define YYBTYACC 0
     20 #define YYDEBUGSTR YYPREFIX "debug"
     21 
     22 #ifndef yyparse
     23 #define yyparse    grammar_parse
     24 #endif /* yyparse */
     25 
     26 #ifndef yylex
     27 #define yylex      grammar_lex
     28 #endif /* yylex */
     29 
     30 #ifndef yyerror
     31 #define yyerror    grammar_error
     32 #endif /* yyerror */
     33 
     34 #ifndef yychar
     35 #define yychar     grammar_char
     36 #endif /* yychar */
     37 
     38 #ifndef yyval
     39 #define yyval      grammar_val
     40 #endif /* yyval */
     41 
     42 #ifndef yylval
     43 #define yylval     grammar_lval
     44 #endif /* yylval */
     45 
     46 #ifndef yydebug
     47 #define yydebug    grammar_debug
     48 #endif /* yydebug */
     49 
     50 #ifndef yynerrs
     51 #define yynerrs    grammar_nerrs
     52 #endif /* yynerrs */
     53 
     54 #ifndef yyerrflag
     55 #define yyerrflag  grammar_errflag
     56 #endif /* yyerrflag */
     57 
     58 #ifndef yylhs
     59 #define yylhs      grammar_lhs
     60 #endif /* yylhs */
     61 
     62 #ifndef yylen
     63 #define yylen      grammar_len
     64 #endif /* yylen */
     65 
     66 #ifndef yydefred
     67 #define yydefred   grammar_defred
     68 #endif /* yydefred */
     69 
     70 #ifndef yystos
     71 #define yystos     grammar_stos
     72 #endif /* yystos */
     73 
     74 #ifndef yydgoto
     75 #define yydgoto    grammar_dgoto
     76 #endif /* yydgoto */
     77 
     78 #ifndef yysindex
     79 #define yysindex   grammar_sindex
     80 #endif /* yysindex */
     81 
     82 #ifndef yyrindex
     83 #define yyrindex   grammar_rindex
     84 #endif /* yyrindex */
     85 
     86 #ifndef yygindex
     87 #define yygindex   grammar_gindex
     88 #endif /* yygindex */
     89 
     90 #ifndef yytable
     91 #define yytable    grammar_table
     92 #endif /* yytable */
     93 
     94 #ifndef yycheck
     95 #define yycheck    grammar_check
     96 #endif /* yycheck */
     97 
     98 #ifndef yyname
     99 #define yyname     grammar_name
    100 #endif /* yyname */
    101 
    102 #ifndef yyrule
    103 #define yyrule     grammar_rule
    104 #endif /* yyrule */
    105 
    106 #if YYBTYACC
    107 
    108 #ifndef yycindex
    109 #define yycindex   grammar_cindex
    110 #endif /* yycindex */
    111 
    112 #ifndef yyctable
    113 #define yyctable   grammar_ctable
    114 #endif /* yyctable */
    115 
    116 #endif /* YYBTYACC */
    117 
    118 #define YYPREFIX "grammar_"
    119 
    120 #define YYPURE 0
    121 
    122 #line 9 "grammar.y"
    123 #ifdef YYBISON
    124 #include <stdlib.h>
    125 #define YYSTYPE_IS_DECLARED
    126 #define yyerror yaccError
    127 #endif
    128 
    129 #if defined(YYBISON) || !defined(YYBYACC)
    130 static void yyerror(const char *s);
    131 #endif
    132 #line 81 "grammar.y"
    133 #include <stdio.h>
    134 #include <ctype.h>
    135 #include <string.h>
    136 
    137 #define OPT_LINTLIBRARY 1
    138 
    139 #ifndef TRUE
    140 #define	TRUE	(1)
    141 #endif
    142 
    143 #ifndef FALSE
    144 #define	FALSE	(0)
    145 #endif
    146 
    147 /* #include "cproto.h" */
    148 #define MAX_TEXT_SIZE 1024
    149 #define TEXT_LEN (MAX_TEXT_SIZE / 2 - 3)
    150 
    151 /* Prototype styles */
    152 #if OPT_LINTLIBRARY
    153 #define PROTO_ANSI_LLIB		-2	/* form ANSI lint-library source */
    154 #define PROTO_LINTLIBRARY	-1	/* form lint-library source */
    155 #endif
    156 #define PROTO_NONE		0	/* do not output any prototypes */
    157 #define PROTO_TRADITIONAL	1	/* comment out parameters */
    158 #define PROTO_ABSTRACT		2	/* comment out parameter names */
    159 #define PROTO_ANSI		3	/* ANSI C prototype */
    160 
    161 typedef int PrototypeStyle;
    162 
    163 typedef char boolean;
    164 
    165 extern boolean types_out;
    166 extern PrototypeStyle proto_style;
    167 
    168 #define ansiLintLibrary() (proto_style == PROTO_ANSI_LLIB)
    169 #define knrLintLibrary()  (proto_style == PROTO_LINTLIBRARY)
    170 #define lintLibrary()     (knrLintLibrary() || ansiLintLibrary())
    171 
    172 #if OPT_LINTLIBRARY
    173 #define FUNC_UNKNOWN		-1	/* unspecified */
    174 #else
    175 #define FUNC_UNKNOWN		0	/* unspecified (same as FUNC_NONE) */
    176 #endif
    177 #define FUNC_NONE		0	/* not a function definition */
    178 #define FUNC_TRADITIONAL	1	/* traditional style */
    179 #define FUNC_ANSI		2	/* ANSI style */
    180 #define FUNC_BOTH		3	/* both styles */
    181 
    182 typedef int FuncDefStyle;
    183 
    184 /* Source file text */
    185 typedef struct text {
    186     char text[MAX_TEXT_SIZE];	/* source text */
    187     long begin; 		/* offset in temporary file */
    188 } Text;
    189 
    190 /* Declaration specifier flags */
    191 #define DS_NONE 	0	/* default */
    192 #define DS_EXTERN	1	/* contains "extern" specifier */
    193 #define DS_STATIC	2	/* contains "static" specifier */
    194 #define DS_CHAR 	4	/* contains "char" type specifier */
    195 #define DS_SHORT	8	/* contains "short" type specifier */
    196 #define DS_FLOAT	16	/* contains "float" type specifier */
    197 #define DS_INLINE	32	/* contains "inline" specifier */
    198 #define DS_JUNK 	64	/* we're not interested in this declaration */
    199 
    200 /* This structure stores information about a declaration specifier. */
    201 typedef struct decl_spec {
    202     unsigned short flags;	/* flags defined above */
    203     char *text; 		/* source text */
    204     long begin; 		/* offset in temporary file */
    205 } DeclSpec;
    206 
    207 /* This is a list of function parameters. */
    208 typedef struct _ParameterList {
    209     struct parameter *first;	/* pointer to first parameter in list */
    210     struct parameter *last;	/* pointer to last parameter in list */
    211     long begin_comment; 	/* begin offset of comment */
    212     long end_comment;		/* end offset of comment */
    213     char *comment;		/* comment at start of parameter list */
    214 } ParameterList;
    215 
    216 /* This structure stores information about a declarator. */
    217 typedef struct _Declarator {
    218     char *name; 			/* name of variable or function */
    219     char *text; 			/* source text */
    220     long begin; 			/* offset in temporary file */
    221     long begin_comment; 		/* begin offset of comment */
    222     long end_comment;			/* end offset of comment */
    223     FuncDefStyle func_def;		/* style of function definition */
    224     ParameterList params;		/* function parameters */
    225     boolean pointer;			/* TRUE if it declares a pointer */
    226     struct _Declarator *head;		/* head function declarator */
    227     struct _Declarator *func_stack;	/* stack of function declarators */
    228     struct _Declarator *next;		/* next declarator in list */
    229 } Declarator;
    230 
    231 /* This structure stores information about a function parameter. */
    232 typedef struct parameter {
    233     struct parameter *next;	/* next parameter in list */
    234     DeclSpec decl_spec;
    235     Declarator *declarator;
    236     char *comment;		/* comment following the parameter */
    237 } Parameter;
    238 
    239 /* This is a list of declarators. */
    240 typedef struct declarator_list {
    241     Declarator *first;		/* pointer to first declarator in list */
    242     Declarator *last;		/* pointer to last declarator in list */
    243 } DeclaratorList;
    244 
    245 /* #include "symbol.h" */
    246 typedef struct symbol {
    247     struct symbol *next;	/* next symbol in list */
    248     char *name; 		/* name of symbol */
    249     char *value;		/* value of symbol (for defines) */
    250     short flags;		/* symbol attributes */
    251 } Symbol;
    252 
    253 /* parser stack entry type */
    254 typedef union {
    255     Text text;
    256     DeclSpec decl_spec;
    257     Parameter *parameter;
    258     ParameterList param_list;
    259     Declarator *declarator;
    260     DeclaratorList decl_list;
    261 } YYSTYPE;
    262 
    263 /* The hash table length should be a prime number. */
    264 #define SYM_MAX_HASH 251
    265 
    266 typedef struct symbol_table {
    267     Symbol *bucket[SYM_MAX_HASH];	/* hash buckets */
    268 } SymbolTable;
    269 
    270 extern SymbolTable *new_symbol_table	/* Create symbol table */
    271 	(void);
    272 extern void free_symbol_table		/* Destroy symbol table */
    273 	(SymbolTable *s);
    274 extern Symbol *find_symbol		/* Lookup symbol name */
    275 	(SymbolTable *s, const char *n);
    276 extern Symbol *new_symbol		/* Define new symbol */
    277 	(SymbolTable *s, const char *n, const char *v, int f);
    278 
    279 /* #include "semantic.h" */
    280 extern void new_decl_spec (DeclSpec *, const char *, long, int);
    281 extern void free_decl_spec (DeclSpec *);
    282 extern void join_decl_specs (DeclSpec *, DeclSpec *, DeclSpec *);
    283 extern void check_untagged (DeclSpec *);
    284 extern Declarator *new_declarator (const char *, const char *, long);
    285 extern void free_declarator (Declarator *);
    286 extern void new_decl_list (DeclaratorList *, Declarator *);
    287 extern void free_decl_list (DeclaratorList *);
    288 extern void add_decl_list (DeclaratorList *, DeclaratorList *, Declarator *);
    289 extern Parameter *new_parameter (DeclSpec *, Declarator *);
    290 extern void free_parameter (Parameter *);
    291 extern void new_param_list (ParameterList *, Parameter *);
    292 extern void free_param_list (ParameterList *);
    293 extern void add_param_list (ParameterList *, ParameterList *, Parameter *);
    294 extern void new_ident_list (ParameterList *);
    295 extern void add_ident_list (ParameterList *, ParameterList *, const char *);
    296 extern void set_param_types (ParameterList *, DeclSpec *, DeclaratorList *);
    297 extern void gen_declarations (DeclSpec *, DeclaratorList *);
    298 extern void gen_prototype (DeclSpec *, Declarator *);
    299 extern void gen_func_declarator (Declarator *);
    300 extern void gen_func_definition (DeclSpec *, Declarator *);
    301 
    302 extern void init_parser     (void);
    303 extern void process_file    (FILE *infile, char *name);
    304 extern char *cur_text       (void);
    305 extern char *cur_file_name  (void);
    306 extern char *implied_typedef (void);
    307 extern void include_file    (char *name, int convert);
    308 extern char *supply_parm    (int count);
    309 extern char *xstrdup        (const char *);
    310 extern int already_declared (char *name);
    311 extern int is_actual_func   (Declarator *d);
    312 extern int lint_ellipsis    (Parameter *p);
    313 extern int want_typedef     (void);
    314 extern void begin_tracking  (void);
    315 extern void begin_typedef   (void);
    316 extern void copy_typedef    (char *s);
    317 extern void ellipsis_varargs (Declarator *d);
    318 extern void end_typedef     (void);
    319 extern void flush_varargs   (void);
    320 extern void fmt_library     (int code);
    321 extern void imply_typedef   (const char *s);
    322 extern void indent          (FILE *outf);
    323 extern void put_blankline   (FILE *outf);
    324 extern void put_body        (FILE *outf, DeclSpec *decl_spec, Declarator *declarator);
    325 extern void put_char        (FILE *outf, int c);
    326 extern void put_error       (void);
    327 extern void put_newline     (FILE *outf);
    328 extern void put_padded      (FILE *outf, const char *s);
    329 extern void put_string      (FILE *outf, const char *s);
    330 extern void track_in        (void);
    331 
    332 extern boolean file_comments;
    333 extern FuncDefStyle func_style;
    334 extern char base_file[];
    335 
    336 extern	int	yylex (void);
    337 
    338 /* declaration specifier attributes for the typedef statement currently being
    339  * scanned
    340  */
    341 static int cur_decl_spec_flags;
    342 
    343 /* pointer to parameter list for the current function definition */
    344 static ParameterList *func_params;
    345 
    346 /* A parser semantic action sets this pointer to the current declarator in
    347  * a function parameter declaration in order to catch any comments following
    348  * the parameter declaration on the same line.  If the lexer scans a comment
    349  * and <cur_declarator> is not NULL, then the comment is attached to the
    350  * declarator.  To ignore subsequent comments, the lexer sets this to NULL
    351  * after scanning a comment or end of line.
    352  */
    353 static Declarator *cur_declarator;
    354 
    355 /* temporary string buffer */
    356 static char buf[MAX_TEXT_SIZE];
    357 
    358 /* table of typedef names */
    359 static SymbolTable *typedef_names;
    360 
    361 /* table of define names */
    362 static SymbolTable *define_names;
    363 
    364 /* table of type qualifiers */
    365 static SymbolTable *type_qualifiers;
    366 
    367 /* information about the current input file */
    368 typedef struct {
    369     char *base_name;		/* base input file name */
    370     char *file_name;		/* current file name */
    371     FILE *file; 		/* input file */
    372     unsigned line_num;		/* current line number in input file */
    373     FILE *tmp_file;		/* temporary file */
    374     long begin_comment; 	/* tmp file offset after last written ) or ; */
    375     long end_comment;		/* tmp file offset after last comment */
    376     boolean convert;		/* if TRUE, convert function definitions */
    377     boolean changed;		/* TRUE if conversion done in this file */
    378 } IncludeStack;
    379 
    380 static IncludeStack *cur_file;	/* current input file */
    381 
    382 /* #include "yyerror.c" */
    383 
    384 static int haveAnsiParam (void);
    385 
    386 
    387 /* Flags to enable us to find if a procedure returns a value.
    388  */
    389 static int return_val;	/* nonzero on BRACES iff return-expression found */
    390 
    391 static const char *
    392 dft_decl_spec (void)
    393 {
    394     return (lintLibrary() && !return_val) ? "void" : "int";
    395 }
    396 
    397 static int
    398 haveAnsiParam (void)
    399 {
    400     Parameter *p;
    401     if (func_params != NULL) {
    402 	for (p = func_params->first; p != NULL; p = p->next) {
    403 	    if (p->declarator->func_def == FUNC_ANSI) {
    404 		return TRUE;
    405 	    }
    406 	}
    407     }
    408     return FALSE;
    409 }
    410 #line 409 "grammar.tab.c"
    411 
    412 /* compatibility with bison */
    413 #ifdef YYPARSE_PARAM
    414 /* compatibility with FreeBSD */
    415 # ifdef YYPARSE_PARAM_TYPE
    416 #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
    417 # else
    418 #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
    419 # endif
    420 #else
    421 # define YYPARSE_DECL() yyparse(void)
    422 #endif
    423 
    424 /* Parameters sent to lex. */
    425 #ifdef YYLEX_PARAM
    426 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
    427 # define YYLEX yylex(YYLEX_PARAM)
    428 #else
    429 # define YYLEX_DECL() yylex(void)
    430 # define YYLEX yylex()
    431 #endif
    432 
    433 /* Parameters sent to yyerror. */
    434 #ifndef YYERROR_DECL
    435 #define YYERROR_DECL() yyerror(const char *s)
    436 #endif
    437 #ifndef YYERROR_CALL
    438 #define YYERROR_CALL(msg) yyerror(msg)
    439 #endif
    440 
    441 extern int YYPARSE_DECL();
    442 
    443 #define T_IDENTIFIER 257
    444 #define T_TYPEDEF_NAME 258
    445 #define T_DEFINE_NAME 259
    446 #define T_AUTO 260
    447 #define T_EXTERN 261
    448 #define T_REGISTER 262
    449 #define T_STATIC 263
    450 #define T_TYPEDEF 264
    451 #define T_INLINE 265
    452 #define T_EXTENSION 266
    453 #define T_CHAR 267
    454 #define T_DOUBLE 268
    455 #define T_FLOAT 269
    456 #define T_INT 270
    457 #define T_VOID 271
    458 #define T_LONG 272
    459 #define T_SHORT 273
    460 #define T_SIGNED 274
    461 #define T_UNSIGNED 275
    462 #define T_ENUM 276
    463 #define T_STRUCT 277
    464 #define T_UNION 278
    465 #define T_Bool 279
    466 #define T_Complex 280
    467 #define T_Imaginary 281
    468 #define T_TYPE_QUALIFIER 282
    469 #define T_BRACKETS 283
    470 #define T_LBRACE 284
    471 #define T_MATCHRBRACE 285
    472 #define T_ELLIPSIS 286
    473 #define T_INITIALIZER 287
    474 #define T_STRING_LITERAL 288
    475 #define T_ASM 289
    476 #define T_ASMARG 290
    477 #define T_VA_DCL 291
    478 #define YYERRCODE 256
    479 typedef int YYINT;
    480 static const YYINT grammar_lhs[] = {                     -1,
    481     0,    0,   26,   26,   27,   27,   27,   27,   27,   27,
    482    27,   31,   30,   30,   28,   28,   34,   28,   32,   32,
    483    33,   33,   35,   35,   37,   38,   29,   39,   29,   36,
    484    36,   36,   40,   40,    1,    1,    2,    2,    2,    3,
    485     3,    3,    3,    3,    3,    4,    4,    4,    4,    4,
    486     4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
    487     5,    5,    6,    6,    6,   19,   19,    8,    8,    9,
    488    41,    9,    7,    7,    7,   25,   23,   23,   10,   10,
    489    11,   11,   11,   11,   11,   20,   20,   21,   21,   22,
    490    22,   14,   14,   15,   15,   16,   16,   16,   17,   17,
    491    18,   18,   24,   24,   12,   12,   12,   13,   13,   13,
    492    13,   13,   13,   13,
    493 };
    494 static const YYINT grammar_len[] = {                      2,
    495     0,    1,    1,    2,    1,    1,    1,    1,    3,    2,
    496     2,    2,    3,    3,    2,    3,    0,    5,    2,    1,
    497     0,    1,    1,    3,    0,    0,    7,    0,    5,    0,
    498     1,    1,    1,    2,    1,    2,    1,    1,    1,    1,
    499     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    500     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    501     1,    1,    3,    2,    2,    1,    1,    1,    3,    1,
    502     0,    4,    3,    2,    2,    1,    1,    1,    2,    1,
    503     1,    3,    2,    4,    4,    2,    3,    0,    1,    1,
    504     2,    1,    3,    1,    3,    2,    2,    1,    0,    1,
    505     1,    3,    1,    2,    1,    2,    1,    3,    2,    1,
    506     4,    3,    3,    2,
    507 };
    508 static const YYINT grammar_defred[] = {                   0,
    509     0,    0,    0,    0,   77,    0,   62,   40,    0,   42,
    510    43,   20,   44,    0,   46,   47,   48,   49,   54,   50,
    511    51,   52,   53,   76,   66,   67,   55,   56,   57,   61,
    512     0,    7,    0,    0,   35,   37,   38,   39,   59,   60,
    513    28,    0,    0,    0,  103,   81,    0,    0,    3,    5,
    514     6,    8,    0,   10,   11,   78,    0,   90,    0,    0,
    515   104,    0,   19,    0,   41,   45,   15,   36,    0,   68,
    516     0,    0,    0,   83,    0,    0,   64,    0,    0,   74,
    517     4,   58,    0,   82,   87,   91,    0,   14,   13,    9,
    518    16,    0,   71,    0,   31,   33,    0,    0,    0,    0,
    519     0,   94,    0,    0,  101,   12,   63,   73,    0,    0,
    520    69,    0,    0,    0,   34,    0,  110,   96,   97,    0,
    521     0,   84,    0,   85,    0,   23,    0,    0,   72,   26,
    522    29,  114,    0,    0,    0,  109,    0,   93,   95,  102,
    523    18,    0,    0,  108,  113,  112,    0,   24,   27,  111,
    524 };
    525 #if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
    526 static const YYINT grammar_stos[] = {                     0,
    527   256,   40,   42,   38,  257,  258,  259,  260,  261,  262,
    528   263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
    529   273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
    530   289,   59,  293,  294,  295,  296,  297,  298,  299,  300,
    531   303,  304,  312,  313,  316,  317,  318,  319,  320,  321,
    532   322,  323,  325,  285,   59,  258,  303,  298,  314,  315,
    533   316,  288,  264,  290,  261,  266,   59,  295,  301,  302,
    534   303,  332,   40,  283,  284,  316,  324,  304,  316,  324,
    535   320,  258,  294,   41,  313,  298,  294,  321,  324,   59,
    536    59,   44,   61,  330,  291,  321,  329,  333,  294,  307,
    537   308,  309,  310,  311,  316,  285,  324,  324,  327,  303,
    538   302,  334,  329,  284,  321,   40,  283,  303,  305,  306,
    539   313,   41,   44,   41,   44,  303,  326,  328,  287,  284,
    540   285,   41,  305,  307,   40,  283,  306,  286,  309,  316,
    541    59,   44,  331,   41,   41,   41,  307,  303,  285,   41,
    542 };
    543 #endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
    544 static const YYINT grammar_dgoto[] = {                   33,
    545    87,   35,   36,   37,   38,   39,   40,   69,   70,   41,
    546    42,  119,  120,  100,  101,  102,  103,  104,   43,   44,
    547    59,   60,   45,   46,   47,   48,   49,   50,   51,   52,
    548    77,   53,  127,  109,  128,   97,   94,  143,   72,   98,
    549   112,
    550 };
    551 static const YYINT grammar_sindex[] = {                  -2,
    552    -3,   27, -239, -177,    0,    0,    0,    0, -274,    0,
    553     0,    0,    0, -246,    0,    0,    0,    0,    0,    0,
    554     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    555  -266,    0,    0,  455,    0,    0,    0,    0,    0,    0,
    556     0,  -35, -245,  128,    0,    0, -245,   -2,    0,    0,
    557     0,    0,  642,    0,    0,    0,  -15,    0,  -12, -239,
    558     0,  590,    0,  -27,    0,    0,    0,    0,  -10,    0,
    559   -11,  534,  -72,    0, -237, -232,    0,  -35, -232,    0,
    560     0,    0,  642,    0,    0,    0,  455,    0,    0,    0,
    561     0,   27,    0,  534,    0,    0, -222,  617,  209,   34,
    562    39,    0,   44,   42,    0,    0,    0,    0,   27,  -11,
    563     0, -200, -196, -195,    0,  174,    0,    0,    0,  -33,
    564   243,    0,  561,    0, -177,    0,   33,   49,    0,    0,
    565     0,    0,   53,   55,  417,    0,  -33,    0,    0,    0,
    566     0,   27, -188,    0,    0,    0,   57,    0,    0,    0,
    567 };
    568 static const YYINT grammar_rindex[] = {                  99,
    569     0,    0,  275,    0,    0,  -38,    0,    0,  481,    0,
    570     0,    0,    0,  509,    0,    0,    0,    0,    0,    0,
    571     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    572     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    573     0,   30,    0,    0,    0,    0,    0,  101,    0,    0,
    574     0,    0,    0,    0,    0,    0,    0,    0,  343,  309,
    575     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    576    98, -182,   62,    0,    0,  133,    0,   64,  379,    0,
    577     0,    0,   -5,    0,    0,    0,    0,    0,    0,    0,
    578     0,    0,    0, -182,    0,    0,    0, -180,  -19,    0,
    579    65,    0,    0,   68,    0,    0,    0,    0,   51,    9,
    580     0,    0,    0,    0,    0,    0,    0,    0,    0,  -13,
    581    19,    0,    0,    0,    0,    0,    0,   52,    0,    0,
    582     0,    0,    0,    0,    0,    0,   35,    0,    0,    0,
    583     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    584 };
    585 #if YYBTYACC
    586 static const YYINT grammar_cindex[] = {                   0,
    587     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    588     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    589     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    590     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    591     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    592     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    593     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    594     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    595     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    596     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    597     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    598     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    599     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    600     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    601     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    602 };
    603 #endif
    604 static const YYINT grammar_gindex[] = {                   0,
    605    11,  -17,    0,    0,   13,    0,    0,    0,   20,    8,
    606   -43,   -1,   -8,  -89,    0,   -9,    0,    0,    0,  -44,
    607     0,    0,    4,    0,    0,    0,   70,  -53,    0,    0,
    608   -18,    0,    0,    0,    0,   22,    0,    0,    0,    0,
    609     0,
    610 };
    611 #define YYTABLESIZE 924
    612 static const YYINT grammar_table[] = {                   58,
    613    78,   58,   58,   58,   73,   58,  135,   61,   88,   57,
    614    34,    5,   56,   62,   85,   58,   68,   63,   96,    7,
    615    58,   98,   78,   64,   98,   84,  134,  107,   80,    3,
    616   107,   90,   17,   92,   17,    4,   17,    2,   75,    3,
    617    96,   71,   30,   89,  115,  147,   76,  106,   91,   93,
    618    79,   75,   70,   17,  121,   55,   32,  107,   34,  105,
    619   108,  114,  105,   83,    4,   68,    2,   70,    3,   68,
    620    80,  121,   86,   80,  122,  106,  105,   78,  106,    5,
    621    56,   68,  123,   99,  124,  125,  129,  130,   80,  131,
    622    80,  141,  142,  144,  110,  145,  149,  150,    1,  110,
    623     2,   30,   99,   32,   79,   92,  118,   79,  100,   21,
    624    22,  111,  137,  139,  133,  113,  126,   81,    0,    0,
    625     0,    0,   79,   57,   79,    0,   99,    0,  140,    0,
    626     0,    0,    0,   99,    0,    0,    0,    0,    0,    0,
    627     0,   70,    0,    0,    0,   99,    0,    0,    0,  148,
    628     0,    0,    0,    0,    0,    0,   70,    0,    0,    0,
    629     0,    0,    0,    0,    0,    4,    0,    2,    0,    0,
    630    65,    0,   65,   65,   65,    0,   65,    0,    0,    0,
    631     0,    0,    0,    0,    5,    6,    7,    8,   65,   10,
    632    11,   65,   13,   66,   15,   16,   17,   18,   19,   20,
    633    21,   22,   23,   24,   25,   26,   27,   28,   29,   30,
    634     0,    4,    0,  116,  132,    3,    0,    0,   58,   58,
    635    58,   58,   58,   58,   58,   78,   58,   58,   58,   58,
    636    58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
    637    58,   58,   58,   58,   58,   78,    4,   74,  116,  136,
    638     3,   17,   78,    1,    5,    6,    7,    8,    9,   10,
    639    11,   12,   13,   14,   15,   16,   17,   18,   19,   20,
    640    21,   22,   23,   24,   25,   26,   27,   28,   29,   30,
    641     4,   54,  116,    5,   56,    0,   31,   80,   80,   80,
    642    80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
    643    80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
    644    80,   80,   88,   80,   88,   88,   88,    0,   88,    0,
    645    80,   79,   79,   79,   79,   79,   79,   79,   79,   79,
    646    79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
    647    79,   79,   79,   79,   79,   79,   89,   79,   89,   89,
    648    89,    0,   89,    0,   79,   25,   25,   25,   25,   25,
    649    25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
    650    25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
    651    86,   25,   86,   86,    5,   56,   86,    0,   25,   65,
    652    65,   65,   65,   65,   65,   65,    0,   65,   65,   65,
    653    65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
    654    65,   65,   65,   65,   65,   65,   75,    0,   75,   75,
    655    75,    0,   75,    0,    0,    0,    0,    0,    0,    0,
    656     5,    6,    7,    8,   65,   10,   11,   75,   13,   66,
    657    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
    658    25,   26,   27,   28,   29,   30,  117,  146,    0,    0,
    659     0,    0,    0,    0,    0,    5,    6,    7,    8,   65,
    660    10,   11,    0,   13,   66,   15,   16,   17,   18,   19,
    661    20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
    662    30,  117,    4,    0,    2,    0,    3,    0,    0,    5,
    663    56,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    664     0,    0,    0,   67,    0,    0,    0,    0,   41,    0,
    665    41,    0,   41,    0,    0,  117,    0,    0,    0,    0,
    666     0,   88,   88,    0,    0,    0,    0,    0,    0,   41,
    667     0,    0,    0,    0,    0,    0,   45,    0,   45,    0,
    668    45,    0,    0,    0,    0,    0,    0,   88,    0,    0,
    669     0,    0,    0,    0,    0,   89,   89,   45,    0,    0,
    670     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    671     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    672     0,   89,    0,    0,    0,    0,    0,    0,    0,   86,
    673    86,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    674     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    675     0,    0,    0,    0,    0,   86,    0,    0,    0,    0,
    676     0,    0,    0,    0,    0,   75,   75,   75,   75,   75,
    677    75,   75,    0,   75,   75,   75,   75,   75,   75,   75,
    678    75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
    679    75,   75,    0,    0,    0,    0,    0,    0,    0,    0,
    680     0,    0,    0,    0,   82,    7,    8,   65,   10,   11,
    681     0,   13,   66,   15,   16,   17,   18,   19,   20,   21,
    682    22,   23,   24,   25,   26,   27,   28,   29,   30,    0,
    683     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    684     0,    5,    6,    7,    8,   65,   10,   11,    0,   13,
    685    66,   15,   16,   17,   18,   19,   20,   21,   22,   23,
    686    24,   25,   26,   27,   28,   29,   30,   41,   41,   41,
    687    41,   41,   41,   41,    0,   41,   41,   41,   41,   41,
    688    41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
    689    41,   41,   41,    0,    0,   45,   45,   45,   45,   45,
    690    45,   45,    0,   45,   45,   45,   45,   45,   45,   45,
    691    45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
    692    45,   82,    7,    8,   65,   10,   11,   12,   13,   14,
    693    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
    694    25,   26,   27,   28,   29,   30,    0,    0,   82,    7,
    695     8,   65,   10,   11,   95,   13,   66,   15,   16,   17,
    696    18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
    697    28,   29,   30,    0,    0,    0,  138,   82,    7,    8,
    698    65,   10,   11,   12,   13,   14,   15,   16,   17,   18,
    699    19,   20,   21,   22,   23,   24,   25,   26,   27,   28,
    700    29,   30,    0,   75,   82,    7,    8,   65,   10,   11,
    701    12,   13,   14,   15,   16,   17,   18,   19,   20,   21,
    702    22,   23,   24,   25,   26,   27,   28,   29,   30,   82,
    703     7,    8,   65,   10,   11,    0,   13,   66,   15,   16,
    704    17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
    705    27,   28,   29,   30,
    706 };
    707 static const YYINT grammar_check[] = {                   38,
    708    44,   40,   41,   42,   40,   44,   40,    4,   62,    2,
    709     0,  257,  258,  288,   59,    3,   34,  264,   72,  259,
    710    59,   41,   61,  290,   44,   41,  116,   41,   47,   42,
    711    44,   59,   38,   44,   40,   38,   42,   40,  284,   42,
    712    94,   34,  282,   62,   98,  135,   43,  285,   59,   61,
    713    47,  284,   44,   59,   99,   59,   59,   76,   48,   41,
    714    79,  284,   44,   53,   38,   83,   40,   59,   42,   87,
    715    41,  116,   60,   44,   41,   41,   73,  121,   44,  257,
    716   258,   99,   44,   73,   41,   44,  287,  284,   59,  285,
    717    61,   59,   44,   41,   87,   41,  285,   41,    0,   92,
    718     0,  284,   41,  284,   41,   41,   99,   44,   41,   59,
    719    59,   92,  121,  123,  116,   94,  109,   48,   -1,   -1,
    720    -1,   -1,   59,  116,   61,   -1,  116,   -1,  125,   -1,
    721    -1,   -1,   -1,  123,   -1,   -1,   -1,   -1,   -1,   -1,
    722    -1,   44,   -1,   -1,   -1,  135,   -1,   -1,   -1,  142,
    723    -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,
    724    -1,   -1,   -1,   -1,   -1,   38,   -1,   40,   -1,   -1,
    725    38,   -1,   40,   41,   42,   -1,   44,   -1,   -1,   -1,
    726    -1,   -1,   -1,   -1,  257,  258,  259,  260,  261,  262,
    727   263,   59,  265,  266,  267,  268,  269,  270,  271,  272,
    728   273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
    729    -1,   38,   -1,   40,   41,   42,   -1,   -1,  257,  258,
    730   259,  260,  261,  262,  263,  264,  265,  266,  267,  268,
    731   269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
    732   279,  280,  281,  282,  283,  284,   38,  283,   40,  283,
    733    42,  257,  291,  256,  257,  258,  259,  260,  261,  262,
    734   263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
    735   273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
    736    38,  285,   40,  257,  258,   -1,  289,  258,  259,  260,
    737   261,  262,  263,  264,  265,  266,  267,  268,  269,  270,
    738   271,  272,  273,  274,  275,  276,  277,  278,  279,  280,
    739   281,  282,   38,  284,   40,   41,   42,   -1,   44,   -1,
    740   291,  258,  259,  260,  261,  262,  263,  264,  265,  266,
    741   267,  268,  269,  270,  271,  272,  273,  274,  275,  276,
    742   277,  278,  279,  280,  281,  282,   38,  284,   40,   41,
    743    42,   -1,   44,   -1,  291,  258,  259,  260,  261,  262,
    744   263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
    745   273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
    746    38,  284,   40,   41,  257,  258,   44,   -1,  291,  257,
    747   258,  259,  260,  261,  262,  263,   -1,  265,  266,  267,
    748   268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
    749   278,  279,  280,  281,  282,  283,   38,   -1,   40,   41,
    750    42,   -1,   44,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    751   257,  258,  259,  260,  261,  262,  263,   59,  265,  266,
    752   267,  268,  269,  270,  271,  272,  273,  274,  275,  276,
    753   277,  278,  279,  280,  281,  282,  283,   41,   -1,   -1,
    754    -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,  261,
    755   262,  263,   -1,  265,  266,  267,  268,  269,  270,  271,
    756   272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
    757   282,  283,   38,   -1,   40,   -1,   42,   -1,   -1,  257,
    758   258,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    759    -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,   38,   -1,
    760    40,   -1,   42,   -1,   -1,  283,   -1,   -1,   -1,   -1,
    761    -1,  257,  258,   -1,   -1,   -1,   -1,   -1,   -1,   59,
    762    -1,   -1,   -1,   -1,   -1,   -1,   38,   -1,   40,   -1,
    763    42,   -1,   -1,   -1,   -1,   -1,   -1,  283,   -1,   -1,
    764    -1,   -1,   -1,   -1,   -1,  257,  258,   59,   -1,   -1,
    765    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    766    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    767    -1,  283,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,
    768   258,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    769    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    770    -1,   -1,   -1,   -1,   -1,  283,   -1,   -1,   -1,   -1,
    771    -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,  261,
    772   262,  263,   -1,  265,  266,  267,  268,  269,  270,  271,
    773   272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
    774   282,  283,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    775    -1,   -1,   -1,   -1,  258,  259,  260,  261,  262,  263,
    776    -1,  265,  266,  267,  268,  269,  270,  271,  272,  273,
    777   274,  275,  276,  277,  278,  279,  280,  281,  282,   -1,
    778    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    779    -1,  257,  258,  259,  260,  261,  262,  263,   -1,  265,
    780   266,  267,  268,  269,  270,  271,  272,  273,  274,  275,
    781   276,  277,  278,  279,  280,  281,  282,  257,  258,  259,
    782   260,  261,  262,  263,   -1,  265,  266,  267,  268,  269,
    783   270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
    784   280,  281,  282,   -1,   -1,  257,  258,  259,  260,  261,
    785   262,  263,   -1,  265,  266,  267,  268,  269,  270,  271,
    786   272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
    787   282,  258,  259,  260,  261,  262,  263,  264,  265,  266,
    788   267,  268,  269,  270,  271,  272,  273,  274,  275,  276,
    789   277,  278,  279,  280,  281,  282,   -1,   -1,  258,  259,
    790   260,  261,  262,  263,  291,  265,  266,  267,  268,  269,
    791   270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
    792   280,  281,  282,   -1,   -1,   -1,  286,  258,  259,  260,
    793   261,  262,  263,  264,  265,  266,  267,  268,  269,  270,
    794   271,  272,  273,  274,  275,  276,  277,  278,  279,  280,
    795   281,  282,   -1,  284,  258,  259,  260,  261,  262,  263,
    796   264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
    797   274,  275,  276,  277,  278,  279,  280,  281,  282,  258,
    798   259,  260,  261,  262,  263,   -1,  265,  266,  267,  268,
    799   269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
    800   279,  280,  281,  282,
    801 };
    802 #if YYBTYACC
    803 static const YYINT grammar_ctable[] = {                  -1,
    804    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    805    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    806    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    807    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    808    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    809    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    810    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    811    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    812    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    813    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    814    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    815    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    816    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    817    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    818    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    819    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    820    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    821    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    822    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    823    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    824    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    825    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    826    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    827    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    828    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    829    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    830    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    831    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    832    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    833    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    834    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    835    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    836    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    837    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    838    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    839    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    840    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    841    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    842    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    843    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    844    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    845    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    846    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    847    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    848    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    849    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    850    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    851    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    852    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    853    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    854    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    855    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    856    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    857    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    858    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    859    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    860    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    861    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    862    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    863    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    864    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    865    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    866    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    867    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    868    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    869    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    870    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    871    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    872    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    873    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    874    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    875    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    876    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    877    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    878    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    879    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    880    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    881    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    882    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    883    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    884    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    885    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    886    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    887    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    888    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    889    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    890    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    891    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    892    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    893    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    894    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    895    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    896    -1,   -1,   -1,
    897 };
    898 #endif
    899 #define YYFINAL 33
    900 #ifndef YYDEBUG
    901 #define YYDEBUG 0
    902 #endif
    903 #define YYMAXTOKEN 291
    904 #define YYUNDFTOKEN 335
    905 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
    906 #if YYDEBUG
    907 #ifndef NULL
    908 #define NULL (void*)0
    909 #endif
    910 static const char *const grammar_name[] = {
    911 
    912 "$end",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    913 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    914 NULL,NULL,NULL,NULL,NULL,NULL,NULL,"'&'",NULL,"'('","')'","'*'",NULL,"','",NULL,
    915 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"';'",NULL,
    916 "'='",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    917 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    918 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    919 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    920 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    921 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    922 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    923 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    924 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    925 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    926 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    927 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
    928 NULL,NULL,NULL,NULL,"error","T_IDENTIFIER","T_TYPEDEF_NAME","T_DEFINE_NAME",
    929 "T_AUTO","T_EXTERN","T_REGISTER","T_STATIC","T_TYPEDEF","T_INLINE",
    930 "T_EXTENSION","T_CHAR","T_DOUBLE","T_FLOAT","T_INT","T_VOID","T_LONG","T_SHORT",
    931 "T_SIGNED","T_UNSIGNED","T_ENUM","T_STRUCT","T_UNION","T_Bool","T_Complex",
    932 "T_Imaginary","T_TYPE_QUALIFIER","T_BRACKETS","T_LBRACE","T_MATCHRBRACE",
    933 "T_ELLIPSIS","T_INITIALIZER","T_STRING_LITERAL","T_ASM","T_ASMARG","T_VA_DCL",
    934 "$accept","program","decl_specifiers","decl_specifier","storage_class",
    935 "type_specifier","type_qualifier","struct_or_union_specifier","enum_specifier",
    936 "init_declarator_list","init_declarator","declarator","direct_declarator",
    937 "abs_declarator","direct_abs_declarator","parameter_type_list","parameter_list",
    938 "parameter_declaration","opt_identifier_list","identifier_list",
    939 "struct_or_union","pointer","opt_type_qualifiers","type_qualifier_list",
    940 "any_id","identifier_or_ref","enumeration","translation_unit",
    941 "external_declaration","declaration","function_definition",
    942 "linkage_specification","braces","any_typedef","opt_declarator_list","$$1",
    943 "declarator_list","opt_declaration_list","$$2","$$3","$$4","declaration_list",
    944 "$$5","illegal-symbol",
    945 };
    946 static const char *const grammar_rule[] = {
    947 "$accept : program",
    948 "program :",
    949 "program : translation_unit",
    950 "translation_unit : external_declaration",
    951 "translation_unit : translation_unit external_declaration",
    952 "external_declaration : declaration",
    953 "external_declaration : function_definition",
    954 "external_declaration : ';'",
    955 "external_declaration : linkage_specification",
    956 "external_declaration : T_ASM T_ASMARG ';'",
    957 "external_declaration : error T_MATCHRBRACE",
    958 "external_declaration : error ';'",
    959 "braces : T_LBRACE T_MATCHRBRACE",
    960 "linkage_specification : T_EXTERN T_STRING_LITERAL braces",
    961 "linkage_specification : T_EXTERN T_STRING_LITERAL declaration",
    962 "declaration : decl_specifiers ';'",
    963 "declaration : decl_specifiers init_declarator_list ';'",
    964 "$$1 :",
    965 "declaration : any_typedef decl_specifiers $$1 opt_declarator_list ';'",
    966 "any_typedef : T_EXTENSION T_TYPEDEF",
    967 "any_typedef : T_TYPEDEF",
    968 "opt_declarator_list :",
    969 "opt_declarator_list : declarator_list",
    970 "declarator_list : declarator",
    971 "declarator_list : declarator_list ',' declarator",
    972 "$$2 :",
    973 "$$3 :",
    974 "function_definition : decl_specifiers declarator $$2 opt_declaration_list T_LBRACE $$3 T_MATCHRBRACE",
    975 "$$4 :",
    976 "function_definition : declarator $$4 opt_declaration_list T_LBRACE T_MATCHRBRACE",
    977 "opt_declaration_list :",
    978 "opt_declaration_list : T_VA_DCL",
    979 "opt_declaration_list : declaration_list",
    980 "declaration_list : declaration",
    981 "declaration_list : declaration_list declaration",
    982 "decl_specifiers : decl_specifier",
    983 "decl_specifiers : decl_specifiers decl_specifier",
    984 "decl_specifier : storage_class",
    985 "decl_specifier : type_specifier",
    986 "decl_specifier : type_qualifier",
    987 "storage_class : T_AUTO",
    988 "storage_class : T_EXTERN",
    989 "storage_class : T_REGISTER",
    990 "storage_class : T_STATIC",
    991 "storage_class : T_INLINE",
    992 "storage_class : T_EXTENSION",
    993 "type_specifier : T_CHAR",
    994 "type_specifier : T_DOUBLE",
    995 "type_specifier : T_FLOAT",
    996 "type_specifier : T_INT",
    997 "type_specifier : T_LONG",
    998 "type_specifier : T_SHORT",
    999 "type_specifier : T_SIGNED",
   1000 "type_specifier : T_UNSIGNED",
   1001 "type_specifier : T_VOID",
   1002 "type_specifier : T_Bool",
   1003 "type_specifier : T_Complex",
   1004 "type_specifier : T_Imaginary",
   1005 "type_specifier : T_TYPEDEF_NAME",
   1006 "type_specifier : struct_or_union_specifier",
   1007 "type_specifier : enum_specifier",
   1008 "type_qualifier : T_TYPE_QUALIFIER",
   1009 "type_qualifier : T_DEFINE_NAME",
   1010 "struct_or_union_specifier : struct_or_union any_id braces",
   1011 "struct_or_union_specifier : struct_or_union braces",
   1012 "struct_or_union_specifier : struct_or_union any_id",
   1013 "struct_or_union : T_STRUCT",
   1014 "struct_or_union : T_UNION",
   1015 "init_declarator_list : init_declarator",
   1016 "init_declarator_list : init_declarator_list ',' init_declarator",
   1017 "init_declarator : declarator",
   1018 "$$5 :",
   1019 "init_declarator : declarator '=' $$5 T_INITIALIZER",
   1020 "enum_specifier : enumeration any_id braces",
   1021 "enum_specifier : enumeration braces",
   1022 "enum_specifier : enumeration any_id",
   1023 "enumeration : T_ENUM",
   1024 "any_id : T_IDENTIFIER",
   1025 "any_id : T_TYPEDEF_NAME",
   1026 "declarator : pointer direct_declarator",
   1027 "declarator : direct_declarator",
   1028 "direct_declarator : identifier_or_ref",
   1029 "direct_declarator : '(' declarator ')'",
   1030 "direct_declarator : direct_declarator T_BRACKETS",
   1031 "direct_declarator : direct_declarator '(' parameter_type_list ')'",
   1032 "direct_declarator : direct_declarator '(' opt_identifier_list ')'",
   1033 "pointer : '*' opt_type_qualifiers",
   1034 "pointer : '*' opt_type_qualifiers pointer",
   1035 "opt_type_qualifiers :",
   1036 "opt_type_qualifiers : type_qualifier_list",
   1037 "type_qualifier_list : type_qualifier",
   1038 "type_qualifier_list : type_qualifier_list type_qualifier",
   1039 "parameter_type_list : parameter_list",
   1040 "parameter_type_list : parameter_list ',' T_ELLIPSIS",
   1041 "parameter_list : parameter_declaration",
   1042 "parameter_list : parameter_list ',' parameter_declaration",
   1043 "parameter_declaration : decl_specifiers declarator",
   1044 "parameter_declaration : decl_specifiers abs_declarator",
   1045 "parameter_declaration : decl_specifiers",
   1046 "opt_identifier_list :",
   1047 "opt_identifier_list : identifier_list",
   1048 "identifier_list : any_id",
   1049 "identifier_list : identifier_list ',' any_id",
   1050 "identifier_or_ref : any_id",
   1051 "identifier_or_ref : '&' any_id",
   1052 "abs_declarator : pointer",
   1053 "abs_declarator : pointer direct_abs_declarator",
   1054 "abs_declarator : direct_abs_declarator",
   1055 "direct_abs_declarator : '(' abs_declarator ')'",
   1056 "direct_abs_declarator : direct_abs_declarator T_BRACKETS",
   1057 "direct_abs_declarator : T_BRACKETS",
   1058 "direct_abs_declarator : direct_abs_declarator '(' parameter_type_list ')'",
   1059 "direct_abs_declarator : direct_abs_declarator '(' ')'",
   1060 "direct_abs_declarator : '(' parameter_type_list ')'",
   1061 "direct_abs_declarator : '(' ')'",
   1062 
   1063 };
   1064 #endif
   1065 
   1066 #if YYDEBUG
   1067 int      yydebug;
   1068 #endif
   1069 
   1070 int      yyerrflag;
   1071 int      yychar;
   1072 YYSTYPE  yyval;
   1073 YYSTYPE  yylval;
   1074 int      yynerrs;
   1075 
   1076 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1077 YYLTYPE  yyloc; /* position returned by actions */
   1078 YYLTYPE  yylloc; /* position from the lexer */
   1079 #endif
   1080 
   1081 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1082 #ifndef YYLLOC_DEFAULT
   1083 #define YYLLOC_DEFAULT(loc, rhs, n) \
   1084 do \
   1085 { \
   1086     if (n == 0) \
   1087     { \
   1088         (loc).first_line   = YYRHSLOC(rhs, 0).last_line; \
   1089         (loc).first_column = YYRHSLOC(rhs, 0).last_column; \
   1090         (loc).last_line    = YYRHSLOC(rhs, 0).last_line; \
   1091         (loc).last_column  = YYRHSLOC(rhs, 0).last_column; \
   1092     } \
   1093     else \
   1094     { \
   1095         (loc).first_line   = YYRHSLOC(rhs, 1).first_line; \
   1096         (loc).first_column = YYRHSLOC(rhs, 1).first_column; \
   1097         (loc).last_line    = YYRHSLOC(rhs, n).last_line; \
   1098         (loc).last_column  = YYRHSLOC(rhs, n).last_column; \
   1099     } \
   1100 } while (0)
   1101 #endif /* YYLLOC_DEFAULT */
   1102 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1103 #if YYBTYACC
   1104 
   1105 #ifndef YYLVQUEUEGROWTH
   1106 #define YYLVQUEUEGROWTH 32
   1107 #endif
   1108 #endif /* YYBTYACC */
   1109 
   1110 /* define the initial stack-sizes */
   1111 #ifdef YYSTACKSIZE
   1112 #undef YYMAXDEPTH
   1113 #define YYMAXDEPTH  YYSTACKSIZE
   1114 #else
   1115 #ifdef YYMAXDEPTH
   1116 #define YYSTACKSIZE YYMAXDEPTH
   1117 #else
   1118 #define YYSTACKSIZE 10000
   1119 #define YYMAXDEPTH  10000
   1120 #endif
   1121 #endif
   1122 
   1123 #ifndef YYINITSTACKSIZE
   1124 #define YYINITSTACKSIZE 200
   1125 #endif
   1126 
   1127 typedef struct {
   1128     unsigned stacksize;
   1129     YYINT    *s_base;
   1130     YYINT    *s_mark;
   1131     YYINT    *s_last;
   1132     YYSTYPE  *l_base;
   1133     YYSTYPE  *l_mark;
   1134 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1135     YYLTYPE  *p_base;
   1136     YYLTYPE  *p_mark;
   1137 #endif
   1138 } YYSTACKDATA;
   1139 #if YYBTYACC
   1140 
   1141 struct YYParseState_s
   1142 {
   1143     struct YYParseState_s *save;    /* Previously saved parser state */
   1144     YYSTACKDATA            yystack; /* saved parser stack */
   1145     int                    state;   /* saved parser state */
   1146     int                    errflag; /* saved error recovery status */
   1147     int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
   1148     YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
   1149 };
   1150 typedef struct YYParseState_s YYParseState;
   1151 #endif /* YYBTYACC */
   1152 /* variables for the parser stack */
   1153 static YYSTACKDATA yystack;
   1154 #if YYBTYACC
   1155 
   1156 /* Current parser state */
   1157 static YYParseState *yyps = NULL;
   1158 
   1159 /* yypath != NULL: do the full parse, starting at *yypath parser state. */
   1160 static YYParseState *yypath = NULL;
   1161 
   1162 /* Base of the lexical value queue */
   1163 static YYSTYPE *yylvals = NULL;
   1164 
   1165 /* Current position at lexical value queue */
   1166 static YYSTYPE *yylvp = NULL;
   1167 
   1168 /* End position of lexical value queue */
   1169 static YYSTYPE *yylve = NULL;
   1170 
   1171 /* The last allocated position at the lexical value queue */
   1172 static YYSTYPE *yylvlim = NULL;
   1173 
   1174 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1175 /* Base of the lexical position queue */
   1176 static YYLTYPE *yylpsns = NULL;
   1177 
   1178 /* Current position at lexical position queue */
   1179 static YYLTYPE *yylpp = NULL;
   1180 
   1181 /* End position of lexical position queue */
   1182 static YYLTYPE *yylpe = NULL;
   1183 
   1184 /* The last allocated position at the lexical position queue */
   1185 static YYLTYPE *yylplim = NULL;
   1186 #endif
   1187 
   1188 /* Current position at lexical token queue */
   1189 static YYINT  *yylexp = NULL;
   1190 
   1191 static YYINT  *yylexemes = NULL;
   1192 #endif /* YYBTYACC */
   1193 #line 1015 "grammar.y"
   1194 
   1195 /* lex.yy.c */
   1196 #define BEGIN yy_start = 1 + 2 *
   1197 
   1198 #define CPP1 1
   1199 #define INIT1 2
   1200 #define INIT2 3
   1201 #define CURLY 4
   1202 #define LEXYACC 5
   1203 #define ASM 6
   1204 #define CPP_INLINE 7
   1205 
   1206 extern char *yytext;
   1207 extern FILE *yyin, *yyout;
   1208 
   1209 static int curly;			/* number of curly brace nesting levels */
   1210 static int ly_count;			/* number of occurrences of %% */
   1211 static int inc_depth;			/* include nesting level */
   1212 static SymbolTable *included_files;	/* files already included */
   1213 static int yy_start = 0;		/* start state number */
   1214 
   1215 #define grammar_error(s) yaccError(s)
   1216 
   1217 static void
   1218 yaccError (const char *msg)
   1219 {
   1220     func_params = NULL;
   1221     put_error();		/* tell what line we're on, and what file */
   1222     fprintf(stderr, "%s at token '%s'\n", msg, yytext);
   1223 }
   1224 
   1225 /* Initialize the table of type qualifier keywords recognized by the lexical
   1226  * analyzer.
   1227  */
   1228 void
   1229 init_parser (void)
   1230 {
   1231     static const char *keywords[] = {
   1232 	"const",
   1233 	"restrict",
   1234 	"volatile",
   1235 	"interrupt",
   1236 #ifdef vms
   1237 	"noshare",
   1238 	"readonly",
   1239 #endif
   1240 #if defined(MSDOS) || defined(OS2)
   1241 	"__cdecl",
   1242 	"__export",
   1243 	"__far",
   1244 	"__fastcall",
   1245 	"__fortran",
   1246 	"__huge",
   1247 	"__inline",
   1248 	"__interrupt",
   1249 	"__loadds",
   1250 	"__near",
   1251 	"__pascal",
   1252 	"__saveregs",
   1253 	"__segment",
   1254 	"__stdcall",
   1255 	"__syscall",
   1256 	"_cdecl",
   1257 	"_cs",
   1258 	"_ds",
   1259 	"_es",
   1260 	"_export",
   1261 	"_far",
   1262 	"_fastcall",
   1263 	"_fortran",
   1264 	"_huge",
   1265 	"_interrupt",
   1266 	"_loadds",
   1267 	"_near",
   1268 	"_pascal",
   1269 	"_saveregs",
   1270 	"_seg",
   1271 	"_segment",
   1272 	"_ss",
   1273 	"cdecl",
   1274 	"far",
   1275 	"huge",
   1276 	"near",
   1277 	"pascal",
   1278 #ifdef OS2
   1279 	"__far16",
   1280 #endif
   1281 #endif
   1282 #ifdef __GNUC__
   1283 	/* gcc aliases */
   1284 	"__builtin_va_arg",
   1285 	"__builtin_va_list",
   1286 	"__const",
   1287 	"__const__",
   1288 	"__inline",
   1289 	"__inline__",
   1290 	"__restrict",
   1291 	"__restrict__",
   1292 	"__volatile",
   1293 	"__volatile__",
   1294 #endif
   1295     };
   1296     unsigned i;
   1297 
   1298     /* Initialize type qualifier table. */
   1299     type_qualifiers = new_symbol_table();
   1300     for (i = 0; i < sizeof(keywords)/sizeof(keywords[0]); ++i) {
   1301 	new_symbol(type_qualifiers, keywords[i], NULL, DS_NONE);
   1302     }
   1303 }
   1304 
   1305 /* Process the C source file.  Write function prototypes to the standard
   1306  * output.  Convert function definitions and write the converted source
   1307  * code to a temporary file.
   1308  */
   1309 void
   1310 process_file (FILE *infile, char *name)
   1311 {
   1312     char *s;
   1313 
   1314     if (strlen(name) > 2) {
   1315 	s = name + strlen(name) - 2;
   1316 	if (*s == '.') {
   1317 	    ++s;
   1318 	    if (*s == 'l' || *s == 'y')
   1319 		BEGIN LEXYACC;
   1320 #if defined(MSDOS) || defined(OS2)
   1321 	    if (*s == 'L' || *s == 'Y')
   1322 		BEGIN LEXYACC;
   1323 #endif
   1324 	}
   1325     }
   1326 
   1327     included_files = new_symbol_table();
   1328     typedef_names = new_symbol_table();
   1329     define_names = new_symbol_table();
   1330     inc_depth = -1;
   1331     curly = 0;
   1332     ly_count = 0;
   1333     func_params = NULL;
   1334     yyin = infile;
   1335     include_file(strcpy(base_file, name), func_style != FUNC_NONE);
   1336     if (file_comments) {
   1337 #if OPT_LINTLIBRARY
   1338     	if (lintLibrary()) {
   1339 	    put_blankline(stdout);
   1340 	    begin_tracking();
   1341 	}
   1342 #endif
   1343 	put_string(stdout, "/* ");
   1344 	put_string(stdout, cur_file_name());
   1345 	put_string(stdout, " */\n");
   1346     }
   1347     yyparse();
   1348     free_symbol_table(define_names);
   1349     free_symbol_table(typedef_names);
   1350     free_symbol_table(included_files);
   1351 }
   1352 
   1353 #ifdef NO_LEAKS
   1354 void
   1355 free_parser(void)
   1356 {
   1357     free_symbol_table (type_qualifiers);
   1358 #ifdef FLEX_SCANNER
   1359     if (yy_current_buffer != 0)
   1360 	yy_delete_buffer(yy_current_buffer);
   1361 #endif
   1362 }
   1363 #endif
   1364 #line 1363 "grammar.tab.c"
   1365 
   1366 /* For use in generated program */
   1367 #define yydepth (int)(yystack.s_mark - yystack.s_base)
   1368 #if YYBTYACC
   1369 #define yytrial (yyps->save)
   1370 #endif /* YYBTYACC */
   1371 
   1372 #if YYDEBUG
   1373 #include <stdio.h>	/* needed for printf */
   1374 #endif
   1375 
   1376 #include <stdlib.h>	/* needed for malloc, etc */
   1377 #include <string.h>	/* needed for memset */
   1378 
   1379 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
   1380 static int yygrowstack(YYSTACKDATA *data)
   1381 {
   1382     int i;
   1383     unsigned newsize;
   1384     YYINT *newss;
   1385     YYSTYPE *newvs;
   1386 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1387     YYLTYPE *newps;
   1388 #endif
   1389 
   1390     if ((newsize = data->stacksize) == 0)
   1391         newsize = YYINITSTACKSIZE;
   1392     else if (newsize >= YYMAXDEPTH)
   1393         return YYENOMEM;
   1394     else if ((newsize *= 2) > YYMAXDEPTH)
   1395         newsize = YYMAXDEPTH;
   1396 
   1397     i = (int) (data->s_mark - data->s_base);
   1398     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
   1399     if (newss == NULL)
   1400         return YYENOMEM;
   1401 
   1402     data->s_base = newss;
   1403     data->s_mark = newss + i;
   1404 
   1405     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
   1406     if (newvs == NULL)
   1407         return YYENOMEM;
   1408 
   1409     data->l_base = newvs;
   1410     data->l_mark = newvs + i;
   1411 
   1412 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1413     newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
   1414     if (newps == NULL)
   1415         return YYENOMEM;
   1416 
   1417     data->p_base = newps;
   1418     data->p_mark = newps + i;
   1419 #endif
   1420 
   1421     data->stacksize = newsize;
   1422     data->s_last = data->s_base + newsize - 1;
   1423 
   1424 #if YYDEBUG
   1425     if (yydebug)
   1426         fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
   1427 #endif
   1428     return 0;
   1429 }
   1430 
   1431 #if YYPURE || defined(YY_NO_LEAKS)
   1432 static void yyfreestack(YYSTACKDATA *data)
   1433 {
   1434     free(data->s_base);
   1435     free(data->l_base);
   1436 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1437     free(data->p_base);
   1438 #endif
   1439     memset(data, 0, sizeof(*data));
   1440 }
   1441 #else
   1442 #define yyfreestack(data) /* nothing */
   1443 #endif /* YYPURE || defined(YY_NO_LEAKS) */
   1444 #if YYBTYACC
   1445 
   1446 static YYParseState *
   1447 yyNewState(unsigned size)
   1448 {
   1449     YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
   1450     if (p == NULL) return NULL;
   1451 
   1452     p->yystack.stacksize = size;
   1453     if (size == 0)
   1454     {
   1455         p->yystack.s_base = NULL;
   1456         p->yystack.l_base = NULL;
   1457 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1458         p->yystack.p_base = NULL;
   1459 #endif
   1460         return p;
   1461     }
   1462     p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
   1463     if (p->yystack.s_base == NULL) return NULL;
   1464     p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
   1465     if (p->yystack.l_base == NULL) return NULL;
   1466     memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
   1467 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1468     p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
   1469     if (p->yystack.p_base == NULL) return NULL;
   1470     memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
   1471 #endif
   1472 
   1473     return p;
   1474 }
   1475 
   1476 static void
   1477 yyFreeState(YYParseState *p)
   1478 {
   1479     yyfreestack(&p->yystack);
   1480     free(p);
   1481 }
   1482 #endif /* YYBTYACC */
   1483 
   1484 #define YYABORT  goto yyabort
   1485 #define YYREJECT goto yyabort
   1486 #define YYACCEPT goto yyaccept
   1487 #define YYERROR  goto yyerrlab
   1488 #if YYBTYACC
   1489 #define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
   1490 #define YYVALID_NESTED do { if (yyps->save && \
   1491                                 yyps->save->save == 0) goto yyvalid; } while(0)
   1492 #endif /* YYBTYACC */
   1493 
   1494 int
   1495 YYPARSE_DECL()
   1496 {
   1497     int yym, yyn, yystate, yyresult;
   1498 #if YYBTYACC
   1499     int yynewerrflag;
   1500     YYParseState *yyerrctx = NULL;
   1501 #endif /* YYBTYACC */
   1502 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1503     YYLTYPE  yyerror_loc_range[3]; /* position of error start/end (0 unused) */
   1504 #endif
   1505 #if YYDEBUG
   1506     const char *yys;
   1507 
   1508     if ((yys = getenv("YYDEBUG")) != NULL)
   1509     {
   1510         yyn = *yys;
   1511         if (yyn >= '0' && yyn <= '9')
   1512             yydebug = yyn - '0';
   1513     }
   1514     if (yydebug)
   1515         fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
   1516 #endif
   1517 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1518     memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
   1519 #endif
   1520 
   1521 #if YYBTYACC
   1522     yyps = yyNewState(0); if (yyps == NULL) goto yyenomem;
   1523     yyps->save = NULL;
   1524 #endif /* YYBTYACC */
   1525     yym = 0;
   1526     /* yyn is set below */
   1527     yynerrs = 0;
   1528     yyerrflag = 0;
   1529     yychar = YYEMPTY;
   1530     yystate = 0;
   1531 
   1532 #if YYPURE
   1533     memset(&yystack, 0, sizeof(yystack));
   1534 #endif
   1535 
   1536     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1537     yystack.s_mark = yystack.s_base;
   1538     yystack.l_mark = yystack.l_base;
   1539 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1540     yystack.p_mark = yystack.p_base;
   1541 #endif
   1542     yystate = 0;
   1543     *yystack.s_mark = 0;
   1544 
   1545 yyloop:
   1546     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
   1547     if (yychar < 0)
   1548     {
   1549 #if YYBTYACC
   1550         do {
   1551         if (yylvp < yylve)
   1552         {
   1553             /* we're currently re-reading tokens */
   1554             yylval = *yylvp++;
   1555 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1556             yylloc = *yylpp++;
   1557 #endif
   1558             yychar = *yylexp++;
   1559             break;
   1560         }
   1561         if (yyps->save)
   1562         {
   1563             /* in trial mode; save scanner results for future parse attempts */
   1564             if (yylvp == yylvlim)
   1565             {   /* Enlarge lexical value queue */
   1566                 size_t p = (size_t) (yylvp - yylvals);
   1567                 size_t s = (size_t) (yylvlim - yylvals);
   1568 
   1569                 s += YYLVQUEUEGROWTH;
   1570                 if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
   1571                 if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
   1572 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1573                 if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
   1574 #endif
   1575                 yylvp   = yylve = yylvals + p;
   1576                 yylvlim = yylvals + s;
   1577 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1578                 yylpp   = yylpe = yylpsns + p;
   1579                 yylplim = yylpsns + s;
   1580 #endif
   1581                 yylexp  = yylexemes + p;
   1582             }
   1583             *yylexp = (YYINT) YYLEX;
   1584             *yylvp++ = yylval;
   1585             yylve++;
   1586 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1587             *yylpp++ = yylloc;
   1588             yylpe++;
   1589 #endif
   1590             yychar = *yylexp++;
   1591             break;
   1592         }
   1593         /* normal operation, no conflict encountered */
   1594 #endif /* YYBTYACC */
   1595         yychar = YYLEX;
   1596 #if YYBTYACC
   1597         } while (0);
   1598 #endif /* YYBTYACC */
   1599         if (yychar < 0) yychar = YYEOF;
   1600 #if YYDEBUG
   1601         if (yydebug)
   1602         {
   1603             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   1604             fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
   1605                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
   1606 #ifdef YYSTYPE_TOSTRING
   1607 #if YYBTYACC
   1608             if (!yytrial)
   1609 #endif /* YYBTYACC */
   1610                 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
   1611 #endif
   1612             fputc('\n', stderr);
   1613         }
   1614 #endif
   1615     }
   1616 #if YYBTYACC
   1617 
   1618     /* Do we have a conflict? */
   1619     if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
   1620         yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
   1621     {
   1622         YYINT ctry;
   1623 
   1624         if (yypath)
   1625         {
   1626             YYParseState *save;
   1627 #if YYDEBUG
   1628             if (yydebug)
   1629                 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
   1630                                 YYDEBUGSTR, yydepth, yystate);
   1631 #endif
   1632             /* Switch to the next conflict context */
   1633             save = yypath;
   1634             yypath = save->save;
   1635             save->save = NULL;
   1636             ctry = save->ctry;
   1637             if (save->state != yystate) YYABORT;
   1638             yyFreeState(save);
   1639 
   1640         }
   1641         else
   1642         {
   1643 
   1644             /* Unresolved conflict - start/continue trial parse */
   1645             YYParseState *save;
   1646 #if YYDEBUG
   1647             if (yydebug)
   1648             {
   1649                 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
   1650                 if (yyps->save)
   1651                     fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
   1652                 else
   1653                     fputs("Starting trial parse.\n", stderr);
   1654             }
   1655 #endif
   1656             save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
   1657             if (save == NULL) goto yyenomem;
   1658             save->save            = yyps->save;
   1659             save->state           = yystate;
   1660             save->errflag         = yyerrflag;
   1661             save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
   1662             memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1663             save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
   1664             memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1665 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1666             save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
   1667             memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1668 #endif
   1669             ctry                  = yytable[yyn];
   1670             if (yyctable[ctry] == -1)
   1671             {
   1672 #if YYDEBUG
   1673                 if (yydebug && yychar >= YYEOF)
   1674                     fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
   1675 #endif
   1676                 ctry++;
   1677             }
   1678             save->ctry = ctry;
   1679             if (yyps->save == NULL)
   1680             {
   1681                 /* If this is a first conflict in the stack, start saving lexemes */
   1682                 if (!yylexemes)
   1683                 {
   1684                     yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
   1685                     if (yylexemes == NULL) goto yyenomem;
   1686                     yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
   1687                     if (yylvals == NULL) goto yyenomem;
   1688                     yylvlim   = yylvals + YYLVQUEUEGROWTH;
   1689 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1690                     yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
   1691                     if (yylpsns == NULL) goto yyenomem;
   1692                     yylplim   = yylpsns + YYLVQUEUEGROWTH;
   1693 #endif
   1694                 }
   1695                 if (yylvp == yylve)
   1696                 {
   1697                     yylvp  = yylve = yylvals;
   1698 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1699                     yylpp  = yylpe = yylpsns;
   1700 #endif
   1701                     yylexp = yylexemes;
   1702                     if (yychar >= YYEOF)
   1703                     {
   1704                         *yylve++ = yylval;
   1705 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1706                         *yylpe++ = yylloc;
   1707 #endif
   1708                         *yylexp  = (YYINT) yychar;
   1709                         yychar   = YYEMPTY;
   1710                     }
   1711                 }
   1712             }
   1713             if (yychar >= YYEOF)
   1714             {
   1715                 yylvp--;
   1716 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1717                 yylpp--;
   1718 #endif
   1719                 yylexp--;
   1720                 yychar = YYEMPTY;
   1721             }
   1722             save->lexeme = (int) (yylvp - yylvals);
   1723             yyps->save   = save;
   1724         }
   1725         if (yytable[yyn] == ctry)
   1726         {
   1727 #if YYDEBUG
   1728             if (yydebug)
   1729                 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
   1730                                 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
   1731 #endif
   1732             if (yychar < 0)
   1733             {
   1734                 yylvp++;
   1735 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1736                 yylpp++;
   1737 #endif
   1738                 yylexp++;
   1739             }
   1740             if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
   1741                 goto yyoverflow;
   1742             yystate = yyctable[ctry];
   1743             *++yystack.s_mark = (YYINT) yystate;
   1744             *++yystack.l_mark = yylval;
   1745 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1746             *++yystack.p_mark = yylloc;
   1747 #endif
   1748             yychar  = YYEMPTY;
   1749             if (yyerrflag > 0) --yyerrflag;
   1750             goto yyloop;
   1751         }
   1752         else
   1753         {
   1754             yyn = yyctable[ctry];
   1755             goto yyreduce;
   1756         }
   1757     } /* End of code dealing with conflicts */
   1758 #endif /* YYBTYACC */
   1759     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
   1760             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
   1761     {
   1762 #if YYDEBUG
   1763         if (yydebug)
   1764             fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
   1765                             YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
   1766 #endif
   1767         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1768         yystate = yytable[yyn];
   1769         *++yystack.s_mark = yytable[yyn];
   1770         *++yystack.l_mark = yylval;
   1771 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1772         *++yystack.p_mark = yylloc;
   1773 #endif
   1774         yychar = YYEMPTY;
   1775         if (yyerrflag > 0)  --yyerrflag;
   1776         goto yyloop;
   1777     }
   1778     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
   1779             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
   1780     {
   1781         yyn = yytable[yyn];
   1782         goto yyreduce;
   1783     }
   1784     if (yyerrflag != 0) goto yyinrecovery;
   1785 #if YYBTYACC
   1786 
   1787     yynewerrflag = 1;
   1788     goto yyerrhandler;
   1789     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
   1790 
   1791 yyerrlab:
   1792     /* explicit YYERROR from an action -- pop the rhs of the rule reduced
   1793      * before looking for error recovery */
   1794     yystack.s_mark -= yym;
   1795     yystate = *yystack.s_mark;
   1796     yystack.l_mark -= yym;
   1797 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1798     yystack.p_mark -= yym;
   1799 #endif
   1800 
   1801     yynewerrflag = 0;
   1802 yyerrhandler:
   1803     while (yyps->save)
   1804     {
   1805         int ctry;
   1806         YYParseState *save = yyps->save;
   1807 #if YYDEBUG
   1808         if (yydebug)
   1809             fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
   1810                             YYDEBUGSTR, yydepth, yystate, yyps->save->state,
   1811                     (int)(yylvp - yylvals - yyps->save->lexeme));
   1812 #endif
   1813         /* Memorize most forward-looking error state in case it's really an error. */
   1814         if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
   1815         {
   1816             /* Free old saved error context state */
   1817             if (yyerrctx) yyFreeState(yyerrctx);
   1818             /* Create and fill out new saved error context state */
   1819             yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
   1820             if (yyerrctx == NULL) goto yyenomem;
   1821             yyerrctx->save           = yyps->save;
   1822             yyerrctx->state          = yystate;
   1823             yyerrctx->errflag        = yyerrflag;
   1824             yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
   1825             memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1826             yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
   1827             memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1828 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1829             yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
   1830             memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1831 #endif
   1832             yyerrctx->lexeme         = (int) (yylvp - yylvals);
   1833         }
   1834         yylvp          = yylvals   + save->lexeme;
   1835 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1836         yylpp          = yylpsns   + save->lexeme;
   1837 #endif
   1838         yylexp         = yylexemes + save->lexeme;
   1839         yychar         = YYEMPTY;
   1840         yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
   1841         memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1842         yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
   1843         memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1844 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1845         yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
   1846         memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1847 #endif
   1848         ctry           = ++save->ctry;
   1849         yystate        = save->state;
   1850         /* We tried shift, try reduce now */
   1851         if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
   1852         yyps->save     = save->save;
   1853         save->save     = NULL;
   1854         yyFreeState(save);
   1855 
   1856         /* Nothing left on the stack -- error */
   1857         if (!yyps->save)
   1858         {
   1859 #if YYDEBUG
   1860             if (yydebug)
   1861                 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
   1862                                 YYPREFIX, yydepth);
   1863 #endif
   1864             /* Restore state as it was in the most forward-advanced error */
   1865             yylvp          = yylvals   + yyerrctx->lexeme;
   1866 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1867             yylpp          = yylpsns   + yyerrctx->lexeme;
   1868 #endif
   1869             yylexp         = yylexemes + yyerrctx->lexeme;
   1870             yychar         = yylexp[-1];
   1871             yylval         = yylvp[-1];
   1872 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1873             yylloc         = yylpp[-1];
   1874 #endif
   1875             yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
   1876             memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1877             yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
   1878             memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1879 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1880             yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
   1881             memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1882 #endif
   1883             yystate        = yyerrctx->state;
   1884             yyFreeState(yyerrctx);
   1885             yyerrctx       = NULL;
   1886         }
   1887         yynewerrflag = 1;
   1888     }
   1889     if (yynewerrflag == 0) goto yyinrecovery;
   1890 #endif /* YYBTYACC */
   1891 
   1892     YYERROR_CALL("syntax error");
   1893 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1894     yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */
   1895 #endif
   1896 
   1897 #if !YYBTYACC
   1898     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
   1899 yyerrlab:
   1900 #endif
   1901     ++yynerrs;
   1902 
   1903 yyinrecovery:
   1904     if (yyerrflag < 3)
   1905     {
   1906         yyerrflag = 3;
   1907         for (;;)
   1908         {
   1909             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
   1910                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
   1911             {
   1912 #if YYDEBUG
   1913                 if (yydebug)
   1914                     fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
   1915                                     YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
   1916 #endif
   1917                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1918                 yystate = yytable[yyn];
   1919                 *++yystack.s_mark = yytable[yyn];
   1920                 *++yystack.l_mark = yylval;
   1921 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1922                 /* lookahead position is error end position */
   1923                 yyerror_loc_range[2] = yylloc;
   1924                 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
   1925                 *++yystack.p_mark = yyloc;
   1926 #endif
   1927                 goto yyloop;
   1928             }
   1929             else
   1930             {
   1931 #if YYDEBUG
   1932                 if (yydebug)
   1933                     fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
   1934                                     YYDEBUGSTR, yydepth, *yystack.s_mark);
   1935 #endif
   1936                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
   1937 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1938                 /* the current TOS position is the error start position */
   1939                 yyerror_loc_range[1] = *yystack.p_mark;
   1940 #endif
   1941 #if defined(YYDESTRUCT_CALL)
   1942 #if YYBTYACC
   1943                 if (!yytrial)
   1944 #endif /* YYBTYACC */
   1945 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1946                     YYDESTRUCT_CALL("error: discarding state",
   1947                                     yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
   1948 #else
   1949                     YYDESTRUCT_CALL("error: discarding state",
   1950                                     yystos[*yystack.s_mark], yystack.l_mark);
   1951 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1952 #endif /* defined(YYDESTRUCT_CALL) */
   1953                 --yystack.s_mark;
   1954                 --yystack.l_mark;
   1955 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1956                 --yystack.p_mark;
   1957 #endif
   1958             }
   1959         }
   1960     }
   1961     else
   1962     {
   1963         if (yychar == YYEOF) goto yyabort;
   1964 #if YYDEBUG
   1965         if (yydebug)
   1966         {
   1967             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   1968             fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
   1969                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
   1970         }
   1971 #endif
   1972 #if defined(YYDESTRUCT_CALL)
   1973 #if YYBTYACC
   1974         if (!yytrial)
   1975 #endif /* YYBTYACC */
   1976 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1977             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
   1978 #else
   1979             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
   1980 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1981 #endif /* defined(YYDESTRUCT_CALL) */
   1982         yychar = YYEMPTY;
   1983         goto yyloop;
   1984     }
   1985 
   1986 yyreduce:
   1987     yym = yylen[yyn];
   1988 #if YYDEBUG
   1989     if (yydebug)
   1990     {
   1991         fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
   1992                         YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
   1993 #ifdef YYSTYPE_TOSTRING
   1994 #if YYBTYACC
   1995         if (!yytrial)
   1996 #endif /* YYBTYACC */
   1997             if (yym > 0)
   1998             {
   1999                 int i;
   2000                 fputc('<', stderr);
   2001                 for (i = yym; i > 0; i--)
   2002                 {
   2003                     if (i != yym) fputs(", ", stderr);
   2004                     fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
   2005                                            yystack.l_mark[1-i]), stderr);
   2006                 }
   2007                 fputc('>', stderr);
   2008             }
   2009 #endif
   2010         fputc('\n', stderr);
   2011     }
   2012 #endif
   2013     if (yym > 0)
   2014         yyval = yystack.l_mark[1-yym];
   2015     else
   2016         memset(&yyval, 0, sizeof yyval);
   2017 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2018 
   2019     /* Perform position reduction */
   2020     memset(&yyloc, 0, sizeof(yyloc));
   2021 #if YYBTYACC
   2022     if (!yytrial)
   2023 #endif /* YYBTYACC */
   2024     {
   2025         YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);
   2026         /* just in case YYERROR is invoked within the action, save
   2027            the start of the rhs as the error start position */
   2028         yyerror_loc_range[1] = yystack.p_mark[1-yym];
   2029     }
   2030 #endif
   2031 
   2032     switch (yyn)
   2033     {
   2034 case 10:
   2035 #line 378 "grammar.y"
   2036 	{
   2037 	    yyerrok;
   2038 	}
   2039 #line 2038 "grammar.tab.c"
   2040 break;
   2041 case 11:
   2042 #line 382 "grammar.y"
   2043 	{
   2044 	    yyerrok;
   2045 	}
   2046 #line 2045 "grammar.tab.c"
   2047 break;
   2048 case 13:
   2049 #line 393 "grammar.y"
   2050 	{
   2051 	    /* Provide an empty action here so bison will not complain about
   2052 	     * incompatible types in the default action it normally would
   2053 	     * have generated.
   2054 	     */
   2055 	}
   2056 #line 2055 "grammar.tab.c"
   2057 break;
   2058 case 14:
   2059 #line 400 "grammar.y"
   2060 	{
   2061 	    /* empty */
   2062 	}
   2063 #line 2062 "grammar.tab.c"
   2064 break;
   2065 case 15:
   2066 #line 407 "grammar.y"
   2067 	{
   2068 #if OPT_LINTLIBRARY
   2069 	    if (types_out && want_typedef()) {
   2070 		gen_declarations(&yystack.l_mark[-1].decl_spec, (DeclaratorList *)0);
   2071 		flush_varargs();
   2072 	    }
   2073 #endif
   2074 	    free_decl_spec(&yystack.l_mark[-1].decl_spec);
   2075 	    end_typedef();
   2076 	}
   2077 #line 2076 "grammar.tab.c"
   2078 break;
   2079 case 16:
   2080 #line 418 "grammar.y"
   2081 	{
   2082 	    if (func_params != NULL) {
   2083 		set_param_types(func_params, &yystack.l_mark[-2].decl_spec, &yystack.l_mark[-1].decl_list);
   2084 	    } else {
   2085 		gen_declarations(&yystack.l_mark[-2].decl_spec, &yystack.l_mark[-1].decl_list);
   2086 #if OPT_LINTLIBRARY
   2087 		flush_varargs();
   2088 #endif
   2089 		free_decl_list(&yystack.l_mark[-1].decl_list);
   2090 	    }
   2091 	    free_decl_spec(&yystack.l_mark[-2].decl_spec);
   2092 	    end_typedef();
   2093 	}
   2094 #line 2093 "grammar.tab.c"
   2095 break;
   2096 case 17:
   2097 #line 432 "grammar.y"
   2098 	{
   2099 	    cur_decl_spec_flags = yystack.l_mark[0].decl_spec.flags;
   2100 	    free_decl_spec(&yystack.l_mark[0].decl_spec);
   2101 	}
   2102 #line 2101 "grammar.tab.c"
   2103 break;
   2104 case 18:
   2105 #line 437 "grammar.y"
   2106 	{
   2107 	    end_typedef();
   2108 	}
   2109 #line 2108 "grammar.tab.c"
   2110 break;
   2111 case 19:
   2112 #line 444 "grammar.y"
   2113 	{
   2114 	    begin_typedef();
   2115 	}
   2116 #line 2115 "grammar.tab.c"
   2117 break;
   2118 case 20:
   2119 #line 448 "grammar.y"
   2120 	{
   2121 	    begin_typedef();
   2122 	}
   2123 #line 2122 "grammar.tab.c"
   2124 break;
   2125 case 23:
   2126 #line 460 "grammar.y"
   2127 	{
   2128 	    int flags = cur_decl_spec_flags;
   2129 
   2130 	    /* If the typedef is a pointer type, then reset the short type
   2131 	     * flags so it does not get promoted.
   2132 	     */
   2133 	    if (strcmp(yystack.l_mark[0].declarator->text, yystack.l_mark[0].declarator->name) != 0)
   2134 		flags &= ~(DS_CHAR | DS_SHORT | DS_FLOAT);
   2135 	    new_symbol(typedef_names, yystack.l_mark[0].declarator->name, NULL, flags);
   2136 	    free_declarator(yystack.l_mark[0].declarator);
   2137 	}
   2138 #line 2137 "grammar.tab.c"
   2139 break;
   2140 case 24:
   2141 #line 472 "grammar.y"
   2142 	{
   2143 	    int flags = cur_decl_spec_flags;
   2144 
   2145 	    if (strcmp(yystack.l_mark[0].declarator->text, yystack.l_mark[0].declarator->name) != 0)
   2146 		flags &= ~(DS_CHAR | DS_SHORT | DS_FLOAT);
   2147 	    new_symbol(typedef_names, yystack.l_mark[0].declarator->name, NULL, flags);
   2148 	    free_declarator(yystack.l_mark[0].declarator);
   2149 	}
   2150 #line 2149 "grammar.tab.c"
   2151 break;
   2152 case 25:
   2153 #line 484 "grammar.y"
   2154 	{
   2155 	    check_untagged(&yystack.l_mark[-1].decl_spec);
   2156 	    if (yystack.l_mark[0].declarator->func_def == FUNC_NONE) {
   2157 		yyerror("syntax error");
   2158 		YYERROR;
   2159 	    }
   2160 	    func_params = &(yystack.l_mark[0].declarator->head->params);
   2161 	    func_params->begin_comment = cur_file->begin_comment;
   2162 	    func_params->end_comment = cur_file->end_comment;
   2163 	}
   2164 #line 2163 "grammar.tab.c"
   2165 break;
   2166 case 26:
   2167 #line 495 "grammar.y"
   2168 	{
   2169 	    /* If we're converting to K&R and we've got a nominally K&R
   2170 	     * function which has a parameter which is ANSI (i.e., a prototyped
   2171 	     * function pointer), then we must override the deciphered value of
   2172 	     * 'func_def' so that the parameter will be converted.
   2173 	     */
   2174 	    if (func_style == FUNC_TRADITIONAL
   2175 	     && haveAnsiParam()
   2176 	     && yystack.l_mark[-3].declarator->head->func_def == func_style) {
   2177 		yystack.l_mark[-3].declarator->head->func_def = FUNC_BOTH;
   2178 	    }
   2179 
   2180 	    func_params = NULL;
   2181 
   2182 	    if (cur_file->convert)
   2183 		gen_func_definition(&yystack.l_mark[-4].decl_spec, yystack.l_mark[-3].declarator);
   2184 	    gen_prototype(&yystack.l_mark[-4].decl_spec, yystack.l_mark[-3].declarator);
   2185 #if OPT_LINTLIBRARY
   2186 	    flush_varargs();
   2187 #endif
   2188 	    free_decl_spec(&yystack.l_mark[-4].decl_spec);
   2189 	    free_declarator(yystack.l_mark[-3].declarator);
   2190 	}
   2191 #line 2190 "grammar.tab.c"
   2192 break;
   2193 case 28:
   2194 #line 520 "grammar.y"
   2195 	{
   2196 	    if (yystack.l_mark[0].declarator->func_def == FUNC_NONE) {
   2197 		yyerror("syntax error");
   2198 		YYERROR;
   2199 	    }
   2200 	    func_params = &(yystack.l_mark[0].declarator->head->params);
   2201 	    func_params->begin_comment = cur_file->begin_comment;
   2202 	    func_params->end_comment = cur_file->end_comment;
   2203 	}
   2204 #line 2203 "grammar.tab.c"
   2205 break;
   2206 case 29:
   2207 #line 530 "grammar.y"
   2208 	{
   2209 	    DeclSpec decl_spec;
   2210 
   2211 	    func_params = NULL;
   2212 
   2213 	    new_decl_spec(&decl_spec, dft_decl_spec(), yystack.l_mark[-4].declarator->begin, DS_NONE);
   2214 	    if (cur_file->convert)
   2215 		gen_func_definition(&decl_spec, yystack.l_mark[-4].declarator);
   2216 	    gen_prototype(&decl_spec, yystack.l_mark[-4].declarator);
   2217 #if OPT_LINTLIBRARY
   2218 	    flush_varargs();
   2219 #endif
   2220 	    free_decl_spec(&decl_spec);
   2221 	    free_declarator(yystack.l_mark[-4].declarator);
   2222 	}
   2223 #line 2222 "grammar.tab.c"
   2224 break;
   2225 case 36:
   2226 #line 561 "grammar.y"
   2227 	{
   2228 	    join_decl_specs(&yyval.decl_spec, &yystack.l_mark[-1].decl_spec, &yystack.l_mark[0].decl_spec);
   2229 	    free(yystack.l_mark[-1].decl_spec.text);
   2230 	    free(yystack.l_mark[0].decl_spec.text);
   2231 	}
   2232 #line 2231 "grammar.tab.c"
   2233 break;
   2234 case 40:
   2235 #line 576 "grammar.y"
   2236 	{
   2237 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2238 	}
   2239 #line 2238 "grammar.tab.c"
   2240 break;
   2241 case 41:
   2242 #line 580 "grammar.y"
   2243 	{
   2244 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_EXTERN);
   2245 	}
   2246 #line 2245 "grammar.tab.c"
   2247 break;
   2248 case 42:
   2249 #line 584 "grammar.y"
   2250 	{
   2251 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2252 	}
   2253 #line 2252 "grammar.tab.c"
   2254 break;
   2255 case 43:
   2256 #line 588 "grammar.y"
   2257 	{
   2258 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_STATIC);
   2259 	}
   2260 #line 2259 "grammar.tab.c"
   2261 break;
   2262 case 44:
   2263 #line 592 "grammar.y"
   2264 	{
   2265 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_INLINE);
   2266 	}
   2267 #line 2266 "grammar.tab.c"
   2268 break;
   2269 case 45:
   2270 #line 596 "grammar.y"
   2271 	{
   2272 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_JUNK);
   2273 	}
   2274 #line 2273 "grammar.tab.c"
   2275 break;
   2276 case 46:
   2277 #line 603 "grammar.y"
   2278 	{
   2279 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_CHAR);
   2280 	}
   2281 #line 2280 "grammar.tab.c"
   2282 break;
   2283 case 47:
   2284 #line 607 "grammar.y"
   2285 	{
   2286 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2287 	}
   2288 #line 2287 "grammar.tab.c"
   2289 break;
   2290 case 48:
   2291 #line 611 "grammar.y"
   2292 	{
   2293 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_FLOAT);
   2294 	}
   2295 #line 2294 "grammar.tab.c"
   2296 break;
   2297 case 49:
   2298 #line 615 "grammar.y"
   2299 	{
   2300 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2301 	}
   2302 #line 2301 "grammar.tab.c"
   2303 break;
   2304 case 50:
   2305 #line 619 "grammar.y"
   2306 	{
   2307 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2308 	}
   2309 #line 2308 "grammar.tab.c"
   2310 break;
   2311 case 51:
   2312 #line 623 "grammar.y"
   2313 	{
   2314 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_SHORT);
   2315 	}
   2316 #line 2315 "grammar.tab.c"
   2317 break;
   2318 case 52:
   2319 #line 627 "grammar.y"
   2320 	{
   2321 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2322 	}
   2323 #line 2322 "grammar.tab.c"
   2324 break;
   2325 case 53:
   2326 #line 631 "grammar.y"
   2327 	{
   2328 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2329 	}
   2330 #line 2329 "grammar.tab.c"
   2331 break;
   2332 case 54:
   2333 #line 635 "grammar.y"
   2334 	{
   2335 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2336 	}
   2337 #line 2336 "grammar.tab.c"
   2338 break;
   2339 case 55:
   2340 #line 639 "grammar.y"
   2341 	{
   2342 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_CHAR);
   2343 	}
   2344 #line 2343 "grammar.tab.c"
   2345 break;
   2346 case 56:
   2347 #line 643 "grammar.y"
   2348 	{
   2349 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2350 	}
   2351 #line 2350 "grammar.tab.c"
   2352 break;
   2353 case 57:
   2354 #line 647 "grammar.y"
   2355 	{
   2356 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2357 	}
   2358 #line 2357 "grammar.tab.c"
   2359 break;
   2360 case 58:
   2361 #line 651 "grammar.y"
   2362 	{
   2363 	    Symbol *s;
   2364 	    s = find_symbol(typedef_names, yystack.l_mark[0].text.text);
   2365 	    if (s != NULL)
   2366 		new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, s->flags);
   2367 	}
   2368 #line 2367 "grammar.tab.c"
   2369 break;
   2370 case 61:
   2371 #line 663 "grammar.y"
   2372 	{
   2373 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2374 	}
   2375 #line 2374 "grammar.tab.c"
   2376 break;
   2377 case 62:
   2378 #line 667 "grammar.y"
   2379 	{
   2380 	    /* This rule allows the <pointer> nonterminal to scan #define
   2381 	     * names as if they were type modifiers.
   2382 	     */
   2383 	    Symbol *s;
   2384 	    s = find_symbol(define_names, yystack.l_mark[0].text.text);
   2385 	    if (s != NULL)
   2386 		new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, s->flags);
   2387 	}
   2388 #line 2387 "grammar.tab.c"
   2389 break;
   2390 case 63:
   2391 #line 680 "grammar.y"
   2392 	{
   2393 	    char *s;
   2394 	    if ((s = implied_typedef()) == NULL)
   2395 	        (void)sprintf(s = buf, "%.*s %.*s", TEXT_LEN, yystack.l_mark[-2].text.text, TEXT_LEN, yystack.l_mark[-1].text.text);
   2396 	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-2].text.begin, DS_NONE);
   2397 	}
   2398 #line 2397 "grammar.tab.c"
   2399 break;
   2400 case 64:
   2401 #line 687 "grammar.y"
   2402 	{
   2403 	    char *s;
   2404 	    if ((s = implied_typedef()) == NULL)
   2405 		(void)sprintf(s = buf, "%.*s {}", TEXT_LEN, yystack.l_mark[-1].text.text);
   2406 	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-1].text.begin, DS_NONE);
   2407 	}
   2408 #line 2407 "grammar.tab.c"
   2409 break;
   2410 case 65:
   2411 #line 694 "grammar.y"
   2412 	{
   2413 	    (void)sprintf(buf, "%.*s %.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yystack.l_mark[0].text.text);
   2414 	    new_decl_spec(&yyval.decl_spec, buf, yystack.l_mark[-1].text.begin, DS_NONE);
   2415 	}
   2416 #line 2415 "grammar.tab.c"
   2417 break;
   2418 case 66:
   2419 #line 702 "grammar.y"
   2420 	{
   2421 	    imply_typedef(yyval.text.text);
   2422 	}
   2423 #line 2422 "grammar.tab.c"
   2424 break;
   2425 case 67:
   2426 #line 706 "grammar.y"
   2427 	{
   2428 	    imply_typedef(yyval.text.text);
   2429 	}
   2430 #line 2429 "grammar.tab.c"
   2431 break;
   2432 case 68:
   2433 #line 713 "grammar.y"
   2434 	{
   2435 	    new_decl_list(&yyval.decl_list, yystack.l_mark[0].declarator);
   2436 	}
   2437 #line 2436 "grammar.tab.c"
   2438 break;
   2439 case 69:
   2440 #line 717 "grammar.y"
   2441 	{
   2442 	    add_decl_list(&yyval.decl_list, &yystack.l_mark[-2].decl_list, yystack.l_mark[0].declarator);
   2443 	}
   2444 #line 2443 "grammar.tab.c"
   2445 break;
   2446 case 70:
   2447 #line 724 "grammar.y"
   2448 	{
   2449 	    if (yystack.l_mark[0].declarator->func_def != FUNC_NONE && func_params == NULL &&
   2450 		func_style == FUNC_TRADITIONAL && cur_file->convert) {
   2451 		gen_func_declarator(yystack.l_mark[0].declarator);
   2452 		fputs(cur_text(), cur_file->tmp_file);
   2453 	    }
   2454 	    cur_declarator = yyval.declarator;
   2455 	}
   2456 #line 2455 "grammar.tab.c"
   2457 break;
   2458 case 71:
   2459 #line 733 "grammar.y"
   2460 	{
   2461 	    if (yystack.l_mark[-1].declarator->func_def != FUNC_NONE && func_params == NULL &&
   2462 		func_style == FUNC_TRADITIONAL && cur_file->convert) {
   2463 		gen_func_declarator(yystack.l_mark[-1].declarator);
   2464 		fputs(" =", cur_file->tmp_file);
   2465 	    }
   2466 	}
   2467 #line 2466 "grammar.tab.c"
   2468 break;
   2469 case 73:
   2470 #line 745 "grammar.y"
   2471 	{
   2472 	    char *s;
   2473 	    if ((s = implied_typedef()) == NULL)
   2474 		(void)sprintf(s = buf, "enum %.*s", TEXT_LEN, yystack.l_mark[-1].text.text);
   2475 	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-2].text.begin, DS_NONE);
   2476 	}
   2477 #line 2476 "grammar.tab.c"
   2478 break;
   2479 case 74:
   2480 #line 752 "grammar.y"
   2481 	{
   2482 	    char *s;
   2483 	    if ((s = implied_typedef()) == NULL)
   2484 		(void)sprintf(s = buf, "%.*s {}", TEXT_LEN, yystack.l_mark[-1].text.text);
   2485 	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-1].text.begin, DS_NONE);
   2486 	}
   2487 #line 2486 "grammar.tab.c"
   2488 break;
   2489 case 75:
   2490 #line 759 "grammar.y"
   2491 	{
   2492 	    (void)sprintf(buf, "enum %.*s", TEXT_LEN, yystack.l_mark[0].text.text);
   2493 	    new_decl_spec(&yyval.decl_spec, buf, yystack.l_mark[-1].text.begin, DS_NONE);
   2494 	}
   2495 #line 2494 "grammar.tab.c"
   2496 break;
   2497 case 76:
   2498 #line 767 "grammar.y"
   2499 	{
   2500 	    imply_typedef("enum");
   2501 	    yyval.text = yystack.l_mark[0].text;
   2502 	}
   2503 #line 2502 "grammar.tab.c"
   2504 break;
   2505 case 79:
   2506 #line 780 "grammar.y"
   2507 	{
   2508 	    yyval.declarator = yystack.l_mark[0].declarator;
   2509 	    (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yyval.declarator->text);
   2510 	    free(yyval.declarator->text);
   2511 	    yyval.declarator->text = xstrdup(buf);
   2512 	    yyval.declarator->begin = yystack.l_mark[-1].text.begin;
   2513 	    yyval.declarator->pointer = TRUE;
   2514 	}
   2515 #line 2514 "grammar.tab.c"
   2516 break;
   2517 case 81:
   2518 #line 793 "grammar.y"
   2519 	{
   2520 	    yyval.declarator = new_declarator(yystack.l_mark[0].text.text, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin);
   2521 	}
   2522 #line 2521 "grammar.tab.c"
   2523 break;
   2524 case 82:
   2525 #line 797 "grammar.y"
   2526 	{
   2527 	    yyval.declarator = yystack.l_mark[-1].declarator;
   2528 	    (void)sprintf(buf, "(%.*s)", TEXT_LEN, yyval.declarator->text);
   2529 	    free(yyval.declarator->text);
   2530 	    yyval.declarator->text = xstrdup(buf);
   2531 	    yyval.declarator->begin = yystack.l_mark[-2].text.begin;
   2532 	}
   2533 #line 2532 "grammar.tab.c"
   2534 break;
   2535 case 83:
   2536 #line 805 "grammar.y"
   2537 	{
   2538 	    yyval.declarator = yystack.l_mark[-1].declarator;
   2539 	    (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yyval.declarator->text, TEXT_LEN, yystack.l_mark[0].text.text);
   2540 	    free(yyval.declarator->text);
   2541 	    yyval.declarator->text = xstrdup(buf);
   2542 	}
   2543 #line 2542 "grammar.tab.c"
   2544 break;
   2545 case 84:
   2546 #line 812 "grammar.y"
   2547 	{
   2548 	    yyval.declarator = new_declarator("%s()", yystack.l_mark[-3].declarator->name, yystack.l_mark[-3].declarator->begin);
   2549 	    yyval.declarator->params = yystack.l_mark[-1].param_list;
   2550 	    yyval.declarator->func_stack = yystack.l_mark[-3].declarator;
   2551 	    yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
   2552 	    yyval.declarator->func_def = FUNC_ANSI;
   2553 	}
   2554 #line 2553 "grammar.tab.c"
   2555 break;
   2556 case 85:
   2557 #line 820 "grammar.y"
   2558 	{
   2559 	    yyval.declarator = new_declarator("%s()", yystack.l_mark[-3].declarator->name, yystack.l_mark[-3].declarator->begin);
   2560 	    yyval.declarator->params = yystack.l_mark[-1].param_list;
   2561 	    yyval.declarator->func_stack = yystack.l_mark[-3].declarator;
   2562 	    yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
   2563 	    yyval.declarator->func_def = FUNC_TRADITIONAL;
   2564 	}
   2565 #line 2564 "grammar.tab.c"
   2566 break;
   2567 case 86:
   2568 #line 831 "grammar.y"
   2569 	{
   2570 	    (void)sprintf(yyval.text.text, "*%.*s", TEXT_LEN, yystack.l_mark[0].text.text);
   2571 	    yyval.text.begin = yystack.l_mark[-1].text.begin;
   2572 	}
   2573 #line 2572 "grammar.tab.c"
   2574 break;
   2575 case 87:
   2576 #line 836 "grammar.y"
   2577 	{
   2578 	    (void)sprintf(yyval.text.text, "*%.*s%.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yystack.l_mark[0].text.text);
   2579 	    yyval.text.begin = yystack.l_mark[-2].text.begin;
   2580 	}
   2581 #line 2580 "grammar.tab.c"
   2582 break;
   2583 case 88:
   2584 #line 844 "grammar.y"
   2585 	{
   2586 	    strcpy(yyval.text.text, "");
   2587 	    yyval.text.begin = 0L;
   2588 	}
   2589 #line 2588 "grammar.tab.c"
   2590 break;
   2591 case 90:
   2592 #line 853 "grammar.y"
   2593 	{
   2594 	    (void)sprintf(yyval.text.text, "%s ", yystack.l_mark[0].decl_spec.text);
   2595 	    yyval.text.begin = yystack.l_mark[0].decl_spec.begin;
   2596 	    free(yystack.l_mark[0].decl_spec.text);
   2597 	}
   2598 #line 2597 "grammar.tab.c"
   2599 break;
   2600 case 91:
   2601 #line 859 "grammar.y"
   2602 	{
   2603 	    (void)sprintf(yyval.text.text, "%.*s%.*s ", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yystack.l_mark[0].decl_spec.text);
   2604 	    yyval.text.begin = yystack.l_mark[-1].text.begin;
   2605 	    free(yystack.l_mark[0].decl_spec.text);
   2606 	}
   2607 #line 2606 "grammar.tab.c"
   2608 break;
   2609 case 93:
   2610 #line 869 "grammar.y"
   2611 	{
   2612 	    add_ident_list(&yyval.param_list, &yystack.l_mark[-2].param_list, "...");
   2613 	}
   2614 #line 2613 "grammar.tab.c"
   2615 break;
   2616 case 94:
   2617 #line 876 "grammar.y"
   2618 	{
   2619 	    new_param_list(&yyval.param_list, yystack.l_mark[0].parameter);
   2620 	}
   2621 #line 2620 "grammar.tab.c"
   2622 break;
   2623 case 95:
   2624 #line 880 "grammar.y"
   2625 	{
   2626 	    add_param_list(&yyval.param_list, &yystack.l_mark[-2].param_list, yystack.l_mark[0].parameter);
   2627 	}
   2628 #line 2627 "grammar.tab.c"
   2629 break;
   2630 case 96:
   2631 #line 887 "grammar.y"
   2632 	{
   2633 	    check_untagged(&yystack.l_mark[-1].decl_spec);
   2634 	    yyval.parameter = new_parameter(&yystack.l_mark[-1].decl_spec, yystack.l_mark[0].declarator);
   2635 	}
   2636 #line 2635 "grammar.tab.c"
   2637 break;
   2638 case 97:
   2639 #line 892 "grammar.y"
   2640 	{
   2641 	    check_untagged(&yystack.l_mark[-1].decl_spec);
   2642 	    yyval.parameter = new_parameter(&yystack.l_mark[-1].decl_spec, yystack.l_mark[0].declarator);
   2643 	}
   2644 #line 2643 "grammar.tab.c"
   2645 break;
   2646 case 98:
   2647 #line 897 "grammar.y"
   2648 	{
   2649 	    check_untagged(&yystack.l_mark[0].decl_spec);
   2650 	    yyval.parameter = new_parameter(&yystack.l_mark[0].decl_spec, (Declarator *)0);
   2651 	}
   2652 #line 2651 "grammar.tab.c"
   2653 break;
   2654 case 99:
   2655 #line 905 "grammar.y"
   2656 	{
   2657 	    new_ident_list(&yyval.param_list);
   2658 	}
   2659 #line 2658 "grammar.tab.c"
   2660 break;
   2661 case 101:
   2662 #line 913 "grammar.y"
   2663 	{
   2664 	    new_ident_list(&yyval.param_list);
   2665 	    add_ident_list(&yyval.param_list, &yyval.param_list, yystack.l_mark[0].text.text);
   2666 	}
   2667 #line 2666 "grammar.tab.c"
   2668 break;
   2669 case 102:
   2670 #line 918 "grammar.y"
   2671 	{
   2672 	    add_ident_list(&yyval.param_list, &yystack.l_mark[-2].param_list, yystack.l_mark[0].text.text);
   2673 	}
   2674 #line 2673 "grammar.tab.c"
   2675 break;
   2676 case 103:
   2677 #line 925 "grammar.y"
   2678 	{
   2679 	    yyval.text = yystack.l_mark[0].text;
   2680 	}
   2681 #line 2680 "grammar.tab.c"
   2682 break;
   2683 case 104:
   2684 #line 929 "grammar.y"
   2685 	{
   2686 #if OPT_LINTLIBRARY
   2687 	    if (lintLibrary()) { /* Lint doesn't grok C++ ref variables */
   2688 		yyval.text = yystack.l_mark[0].text;
   2689 	    } else
   2690 #endif
   2691 		(void)sprintf(yyval.text.text, "&%.*s", TEXT_LEN, yystack.l_mark[0].text.text);
   2692 	    yyval.text.begin = yystack.l_mark[-1].text.begin;
   2693 	}
   2694 #line 2693 "grammar.tab.c"
   2695 break;
   2696 case 105:
   2697 #line 942 "grammar.y"
   2698 	{
   2699 	    yyval.declarator = new_declarator(yystack.l_mark[0].text.text, "", yystack.l_mark[0].text.begin);
   2700 	}
   2701 #line 2700 "grammar.tab.c"
   2702 break;
   2703 case 106:
   2704 #line 946 "grammar.y"
   2705 	{
   2706 	    yyval.declarator = yystack.l_mark[0].declarator;
   2707 	    (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yyval.declarator->text);
   2708 	    free(yyval.declarator->text);
   2709 	    yyval.declarator->text = xstrdup(buf);
   2710 	    yyval.declarator->begin = yystack.l_mark[-1].text.begin;
   2711 	}
   2712 #line 2711 "grammar.tab.c"
   2713 break;
   2714 case 108:
   2715 #line 958 "grammar.y"
   2716 	{
   2717 	    yyval.declarator = yystack.l_mark[-1].declarator;
   2718 	    (void)sprintf(buf, "(%.*s)", TEXT_LEN, yyval.declarator->text);
   2719 	    free(yyval.declarator->text);
   2720 	    yyval.declarator->text = xstrdup(buf);
   2721 	    yyval.declarator->begin = yystack.l_mark[-2].text.begin;
   2722 	}
   2723 #line 2722 "grammar.tab.c"
   2724 break;
   2725 case 109:
   2726 #line 966 "grammar.y"
   2727 	{
   2728 	    yyval.declarator = yystack.l_mark[-1].declarator;
   2729 	    (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yyval.declarator->text, TEXT_LEN, yystack.l_mark[0].text.text);
   2730 	    free(yyval.declarator->text);
   2731 	    yyval.declarator->text = xstrdup(buf);
   2732 	}
   2733 #line 2732 "grammar.tab.c"
   2734 break;
   2735 case 110:
   2736 #line 973 "grammar.y"
   2737 	{
   2738 	    yyval.declarator = new_declarator(yystack.l_mark[0].text.text, "", yystack.l_mark[0].text.begin);
   2739 	}
   2740 #line 2739 "grammar.tab.c"
   2741 break;
   2742 case 111:
   2743 #line 977 "grammar.y"
   2744 	{
   2745 	    yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-3].declarator->begin);
   2746 	    yyval.declarator->params = yystack.l_mark[-1].param_list;
   2747 	    yyval.declarator->func_stack = yystack.l_mark[-3].declarator;
   2748 	    yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
   2749 	    yyval.declarator->func_def = FUNC_ANSI;
   2750 	}
   2751 #line 2750 "grammar.tab.c"
   2752 break;
   2753 case 112:
   2754 #line 985 "grammar.y"
   2755 	{
   2756 	    yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-2].declarator->begin);
   2757 	    yyval.declarator->func_stack = yystack.l_mark[-2].declarator;
   2758 	    yyval.declarator->head = (yystack.l_mark[-2].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-2].declarator->head;
   2759 	    yyval.declarator->func_def = FUNC_ANSI;
   2760 	}
   2761 #line 2760 "grammar.tab.c"
   2762 break;
   2763 case 113:
   2764 #line 992 "grammar.y"
   2765 	{
   2766 	    Declarator *d;
   2767 
   2768 	    d = new_declarator("", "", yystack.l_mark[-2].text.begin);
   2769 	    yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-2].text.begin);
   2770 	    yyval.declarator->params = yystack.l_mark[-1].param_list;
   2771 	    yyval.declarator->func_stack = d;
   2772 	    yyval.declarator->head = yyval.declarator;
   2773 	    yyval.declarator->func_def = FUNC_ANSI;
   2774 	}
   2775 #line 2774 "grammar.tab.c"
   2776 break;
   2777 case 114:
   2778 #line 1003 "grammar.y"
   2779 	{
   2780 	    Declarator *d;
   2781 
   2782 	    d = new_declarator("", "", yystack.l_mark[-1].text.begin);
   2783 	    yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-1].text.begin);
   2784 	    yyval.declarator->func_stack = d;
   2785 	    yyval.declarator->head = yyval.declarator;
   2786 	    yyval.declarator->func_def = FUNC_ANSI;
   2787 	}
   2788 #line 2787 "grammar.tab.c"
   2789 break;
   2790 #line 2789 "grammar.tab.c"
   2791     default:
   2792         break;
   2793     }
   2794     yystack.s_mark -= yym;
   2795     yystate = *yystack.s_mark;
   2796     yystack.l_mark -= yym;
   2797 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2798     yystack.p_mark -= yym;
   2799 #endif
   2800     yym = yylhs[yyn];
   2801     if (yystate == 0 && yym == 0)
   2802     {
   2803 #if YYDEBUG
   2804         if (yydebug)
   2805         {
   2806             fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   2807 #ifdef YYSTYPE_TOSTRING
   2808 #if YYBTYACC
   2809             if (!yytrial)
   2810 #endif /* YYBTYACC */
   2811                 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
   2812 #endif
   2813             fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
   2814         }
   2815 #endif
   2816         yystate = YYFINAL;
   2817         *++yystack.s_mark = YYFINAL;
   2818         *++yystack.l_mark = yyval;
   2819 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2820         *++yystack.p_mark = yyloc;
   2821 #endif
   2822         if (yychar < 0)
   2823         {
   2824 #if YYBTYACC
   2825             do {
   2826             if (yylvp < yylve)
   2827             {
   2828                 /* we're currently re-reading tokens */
   2829                 yylval = *yylvp++;
   2830 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2831                 yylloc = *yylpp++;
   2832 #endif
   2833                 yychar = *yylexp++;
   2834                 break;
   2835             }
   2836             if (yyps->save)
   2837             {
   2838                 /* in trial mode; save scanner results for future parse attempts */
   2839                 if (yylvp == yylvlim)
   2840                 {   /* Enlarge lexical value queue */
   2841                     size_t p = (size_t) (yylvp - yylvals);
   2842                     size_t s = (size_t) (yylvlim - yylvals);
   2843 
   2844                     s += YYLVQUEUEGROWTH;
   2845                     if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)
   2846                         goto yyenomem;
   2847                     if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
   2848                         goto yyenomem;
   2849 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2850                     if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
   2851                         goto yyenomem;
   2852 #endif
   2853                     yylvp   = yylve = yylvals + p;
   2854                     yylvlim = yylvals + s;
   2855 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2856                     yylpp   = yylpe = yylpsns + p;
   2857                     yylplim = yylpsns + s;
   2858 #endif
   2859                     yylexp  = yylexemes + p;
   2860                 }
   2861                 *yylexp = (YYINT) YYLEX;
   2862                 *yylvp++ = yylval;
   2863                 yylve++;
   2864 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2865                 *yylpp++ = yylloc;
   2866                 yylpe++;
   2867 #endif
   2868                 yychar = *yylexp++;
   2869                 break;
   2870             }
   2871             /* normal operation, no conflict encountered */
   2872 #endif /* YYBTYACC */
   2873             yychar = YYLEX;
   2874 #if YYBTYACC
   2875             } while (0);
   2876 #endif /* YYBTYACC */
   2877             if (yychar < 0) yychar = YYEOF;
   2878 #if YYDEBUG
   2879             if (yydebug)
   2880             {
   2881                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   2882                 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
   2883                                 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
   2884             }
   2885 #endif
   2886         }
   2887         if (yychar == YYEOF) goto yyaccept;
   2888         goto yyloop;
   2889     }
   2890     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
   2891             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
   2892         yystate = yytable[yyn];
   2893     else
   2894         yystate = yydgoto[yym];
   2895 #if YYDEBUG
   2896     if (yydebug)
   2897     {
   2898         fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   2899 #ifdef YYSTYPE_TOSTRING
   2900 #if YYBTYACC
   2901         if (!yytrial)
   2902 #endif /* YYBTYACC */
   2903             fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
   2904 #endif
   2905         fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
   2906     }
   2907 #endif
   2908     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   2909     *++yystack.s_mark = (YYINT) yystate;
   2910     *++yystack.l_mark = yyval;
   2911 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2912     *++yystack.p_mark = yyloc;
   2913 #endif
   2914     goto yyloop;
   2915 #if YYBTYACC
   2916 
   2917     /* Reduction declares that this path is valid. Set yypath and do a full parse */
   2918 yyvalid:
   2919     if (yypath) YYABORT;
   2920     while (yyps->save)
   2921     {
   2922         YYParseState *save = yyps->save;
   2923         yyps->save = save->save;
   2924         save->save = yypath;
   2925         yypath = save;
   2926     }
   2927 #if YYDEBUG
   2928     if (yydebug)
   2929         fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
   2930                         YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
   2931 #endif
   2932     if (yyerrctx)
   2933     {
   2934         yyFreeState(yyerrctx);
   2935         yyerrctx = NULL;
   2936     }
   2937     yylvp          = yylvals + yypath->lexeme;
   2938 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2939     yylpp          = yylpsns + yypath->lexeme;
   2940 #endif
   2941     yylexp         = yylexemes + yypath->lexeme;
   2942     yychar         = YYEMPTY;
   2943     yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
   2944     memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   2945     yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
   2946     memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   2947 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2948     yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
   2949     memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   2950 #endif
   2951     yystate        = yypath->state;
   2952     goto yyloop;
   2953 #endif /* YYBTYACC */
   2954 
   2955 yyoverflow:
   2956     YYERROR_CALL("yacc stack overflow");
   2957 #if YYBTYACC
   2958     goto yyabort_nomem;
   2959 yyenomem:
   2960     YYERROR_CALL("memory exhausted");
   2961 yyabort_nomem:
   2962 #endif /* YYBTYACC */
   2963     yyresult = 2;
   2964     goto yyreturn;
   2965 
   2966 yyabort:
   2967     yyresult = 1;
   2968     goto yyreturn;
   2969 
   2970 yyaccept:
   2971 #if YYBTYACC
   2972     if (yyps->save) goto yyvalid;
   2973 #endif /* YYBTYACC */
   2974     yyresult = 0;
   2975 
   2976 yyreturn:
   2977 #if defined(YYDESTRUCT_CALL)
   2978     if (yychar != YYEOF && yychar != YYEMPTY)
   2979 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2980         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
   2981 #else
   2982         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
   2983 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   2984 
   2985     {
   2986         YYSTYPE *pv;
   2987 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2988         YYLTYPE *pp;
   2989 
   2990         for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
   2991              YYDESTRUCT_CALL("cleanup: discarding state",
   2992                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
   2993 #else
   2994         for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
   2995              YYDESTRUCT_CALL("cleanup: discarding state",
   2996                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
   2997 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   2998     }
   2999 #endif /* defined(YYDESTRUCT_CALL) */
   3000 
   3001 #if YYBTYACC
   3002     if (yyerrctx)
   3003     {
   3004         yyFreeState(yyerrctx);
   3005         yyerrctx = NULL;
   3006     }
   3007     while (yyps)
   3008     {
   3009         YYParseState *save = yyps;
   3010         yyps = save->save;
   3011         save->save = NULL;
   3012         yyFreeState(save);
   3013     }
   3014     while (yypath)
   3015     {
   3016         YYParseState *save = yypath;
   3017         yypath = save->save;
   3018         save->save = NULL;
   3019         yyFreeState(save);
   3020     }
   3021 #endif /* YYBTYACC */
   3022     yyfreestack(&yystack);
   3023     return (yyresult);
   3024 }
   3025