Home | History | Annotate | Line # | Download | only in btyacc
grammar.tab.c revision 1.6
      1 /*	$NetBSD: grammar.tab.c,v 1.6 2024/09/14 21:29:03 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 != 0) {
    402 	for (p = func_params->first; p != 0; 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 static const char *const grammar_name[] = {
    908 
    909 "$end",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    910 0,"'&'",0,"'('","')'","'*'",0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,0,"';'",0,"'='",0,
    911 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    912 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    913 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    914 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    915 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"error",
    916 "T_IDENTIFIER","T_TYPEDEF_NAME","T_DEFINE_NAME","T_AUTO","T_EXTERN",
    917 "T_REGISTER","T_STATIC","T_TYPEDEF","T_INLINE","T_EXTENSION","T_CHAR",
    918 "T_DOUBLE","T_FLOAT","T_INT","T_VOID","T_LONG","T_SHORT","T_SIGNED",
    919 "T_UNSIGNED","T_ENUM","T_STRUCT","T_UNION","T_Bool","T_Complex","T_Imaginary",
    920 "T_TYPE_QUALIFIER","T_BRACKETS","T_LBRACE","T_MATCHRBRACE","T_ELLIPSIS",
    921 "T_INITIALIZER","T_STRING_LITERAL","T_ASM","T_ASMARG","T_VA_DCL","$accept",
    922 "program","decl_specifiers","decl_specifier","storage_class","type_specifier",
    923 "type_qualifier","struct_or_union_specifier","enum_specifier",
    924 "init_declarator_list","init_declarator","declarator","direct_declarator",
    925 "abs_declarator","direct_abs_declarator","parameter_type_list","parameter_list",
    926 "parameter_declaration","opt_identifier_list","identifier_list",
    927 "struct_or_union","pointer","opt_type_qualifiers","type_qualifier_list",
    928 "any_id","identifier_or_ref","enumeration","translation_unit",
    929 "external_declaration","declaration","function_definition",
    930 "linkage_specification","braces","any_typedef","opt_declarator_list","$$1",
    931 "declarator_list","opt_declaration_list","$$2","$$3","$$4","declaration_list",
    932 "$$5","illegal-symbol",
    933 };
    934 static const char *const grammar_rule[] = {
    935 "$accept : program",
    936 "program :",
    937 "program : translation_unit",
    938 "translation_unit : external_declaration",
    939 "translation_unit : translation_unit external_declaration",
    940 "external_declaration : declaration",
    941 "external_declaration : function_definition",
    942 "external_declaration : ';'",
    943 "external_declaration : linkage_specification",
    944 "external_declaration : T_ASM T_ASMARG ';'",
    945 "external_declaration : error T_MATCHRBRACE",
    946 "external_declaration : error ';'",
    947 "braces : T_LBRACE T_MATCHRBRACE",
    948 "linkage_specification : T_EXTERN T_STRING_LITERAL braces",
    949 "linkage_specification : T_EXTERN T_STRING_LITERAL declaration",
    950 "declaration : decl_specifiers ';'",
    951 "declaration : decl_specifiers init_declarator_list ';'",
    952 "$$1 :",
    953 "declaration : any_typedef decl_specifiers $$1 opt_declarator_list ';'",
    954 "any_typedef : T_EXTENSION T_TYPEDEF",
    955 "any_typedef : T_TYPEDEF",
    956 "opt_declarator_list :",
    957 "opt_declarator_list : declarator_list",
    958 "declarator_list : declarator",
    959 "declarator_list : declarator_list ',' declarator",
    960 "$$2 :",
    961 "$$3 :",
    962 "function_definition : decl_specifiers declarator $$2 opt_declaration_list T_LBRACE $$3 T_MATCHRBRACE",
    963 "$$4 :",
    964 "function_definition : declarator $$4 opt_declaration_list T_LBRACE T_MATCHRBRACE",
    965 "opt_declaration_list :",
    966 "opt_declaration_list : T_VA_DCL",
    967 "opt_declaration_list : declaration_list",
    968 "declaration_list : declaration",
    969 "declaration_list : declaration_list declaration",
    970 "decl_specifiers : decl_specifier",
    971 "decl_specifiers : decl_specifiers decl_specifier",
    972 "decl_specifier : storage_class",
    973 "decl_specifier : type_specifier",
    974 "decl_specifier : type_qualifier",
    975 "storage_class : T_AUTO",
    976 "storage_class : T_EXTERN",
    977 "storage_class : T_REGISTER",
    978 "storage_class : T_STATIC",
    979 "storage_class : T_INLINE",
    980 "storage_class : T_EXTENSION",
    981 "type_specifier : T_CHAR",
    982 "type_specifier : T_DOUBLE",
    983 "type_specifier : T_FLOAT",
    984 "type_specifier : T_INT",
    985 "type_specifier : T_LONG",
    986 "type_specifier : T_SHORT",
    987 "type_specifier : T_SIGNED",
    988 "type_specifier : T_UNSIGNED",
    989 "type_specifier : T_VOID",
    990 "type_specifier : T_Bool",
    991 "type_specifier : T_Complex",
    992 "type_specifier : T_Imaginary",
    993 "type_specifier : T_TYPEDEF_NAME",
    994 "type_specifier : struct_or_union_specifier",
    995 "type_specifier : enum_specifier",
    996 "type_qualifier : T_TYPE_QUALIFIER",
    997 "type_qualifier : T_DEFINE_NAME",
    998 "struct_or_union_specifier : struct_or_union any_id braces",
    999 "struct_or_union_specifier : struct_or_union braces",
   1000 "struct_or_union_specifier : struct_or_union any_id",
   1001 "struct_or_union : T_STRUCT",
   1002 "struct_or_union : T_UNION",
   1003 "init_declarator_list : init_declarator",
   1004 "init_declarator_list : init_declarator_list ',' init_declarator",
   1005 "init_declarator : declarator",
   1006 "$$5 :",
   1007 "init_declarator : declarator '=' $$5 T_INITIALIZER",
   1008 "enum_specifier : enumeration any_id braces",
   1009 "enum_specifier : enumeration braces",
   1010 "enum_specifier : enumeration any_id",
   1011 "enumeration : T_ENUM",
   1012 "any_id : T_IDENTIFIER",
   1013 "any_id : T_TYPEDEF_NAME",
   1014 "declarator : pointer direct_declarator",
   1015 "declarator : direct_declarator",
   1016 "direct_declarator : identifier_or_ref",
   1017 "direct_declarator : '(' declarator ')'",
   1018 "direct_declarator : direct_declarator T_BRACKETS",
   1019 "direct_declarator : direct_declarator '(' parameter_type_list ')'",
   1020 "direct_declarator : direct_declarator '(' opt_identifier_list ')'",
   1021 "pointer : '*' opt_type_qualifiers",
   1022 "pointer : '*' opt_type_qualifiers pointer",
   1023 "opt_type_qualifiers :",
   1024 "opt_type_qualifiers : type_qualifier_list",
   1025 "type_qualifier_list : type_qualifier",
   1026 "type_qualifier_list : type_qualifier_list type_qualifier",
   1027 "parameter_type_list : parameter_list",
   1028 "parameter_type_list : parameter_list ',' T_ELLIPSIS",
   1029 "parameter_list : parameter_declaration",
   1030 "parameter_list : parameter_list ',' parameter_declaration",
   1031 "parameter_declaration : decl_specifiers declarator",
   1032 "parameter_declaration : decl_specifiers abs_declarator",
   1033 "parameter_declaration : decl_specifiers",
   1034 "opt_identifier_list :",
   1035 "opt_identifier_list : identifier_list",
   1036 "identifier_list : any_id",
   1037 "identifier_list : identifier_list ',' any_id",
   1038 "identifier_or_ref : any_id",
   1039 "identifier_or_ref : '&' any_id",
   1040 "abs_declarator : pointer",
   1041 "abs_declarator : pointer direct_abs_declarator",
   1042 "abs_declarator : direct_abs_declarator",
   1043 "direct_abs_declarator : '(' abs_declarator ')'",
   1044 "direct_abs_declarator : direct_abs_declarator T_BRACKETS",
   1045 "direct_abs_declarator : T_BRACKETS",
   1046 "direct_abs_declarator : direct_abs_declarator '(' parameter_type_list ')'",
   1047 "direct_abs_declarator : direct_abs_declarator '(' ')'",
   1048 "direct_abs_declarator : '(' parameter_type_list ')'",
   1049 "direct_abs_declarator : '(' ')'",
   1050 
   1051 };
   1052 #endif
   1053 
   1054 #if YYDEBUG
   1055 int      yydebug;
   1056 #endif
   1057 
   1058 int      yyerrflag;
   1059 int      yychar;
   1060 YYSTYPE  yyval;
   1061 YYSTYPE  yylval;
   1062 int      yynerrs;
   1063 
   1064 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1065 YYLTYPE  yyloc; /* position returned by actions */
   1066 YYLTYPE  yylloc; /* position from the lexer */
   1067 #endif
   1068 
   1069 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1070 #ifndef YYLLOC_DEFAULT
   1071 #define YYLLOC_DEFAULT(loc, rhs, n) \
   1072 do \
   1073 { \
   1074     if (n == 0) \
   1075     { \
   1076         (loc).first_line   = YYRHSLOC(rhs, 0).last_line; \
   1077         (loc).first_column = YYRHSLOC(rhs, 0).last_column; \
   1078         (loc).last_line    = YYRHSLOC(rhs, 0).last_line; \
   1079         (loc).last_column  = YYRHSLOC(rhs, 0).last_column; \
   1080     } \
   1081     else \
   1082     { \
   1083         (loc).first_line   = YYRHSLOC(rhs, 1).first_line; \
   1084         (loc).first_column = YYRHSLOC(rhs, 1).first_column; \
   1085         (loc).last_line    = YYRHSLOC(rhs, n).last_line; \
   1086         (loc).last_column  = YYRHSLOC(rhs, n).last_column; \
   1087     } \
   1088 } while (0)
   1089 #endif /* YYLLOC_DEFAULT */
   1090 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1091 #if YYBTYACC
   1092 
   1093 #ifndef YYLVQUEUEGROWTH
   1094 #define YYLVQUEUEGROWTH 32
   1095 #endif
   1096 #endif /* YYBTYACC */
   1097 
   1098 /* define the initial stack-sizes */
   1099 #ifdef YYSTACKSIZE
   1100 #undef YYMAXDEPTH
   1101 #define YYMAXDEPTH  YYSTACKSIZE
   1102 #else
   1103 #ifdef YYMAXDEPTH
   1104 #define YYSTACKSIZE YYMAXDEPTH
   1105 #else
   1106 #define YYSTACKSIZE 10000
   1107 #define YYMAXDEPTH  10000
   1108 #endif
   1109 #endif
   1110 
   1111 #ifndef YYINITSTACKSIZE
   1112 #define YYINITSTACKSIZE 200
   1113 #endif
   1114 
   1115 typedef struct {
   1116     unsigned stacksize;
   1117     YYINT    *s_base;
   1118     YYINT    *s_mark;
   1119     YYINT    *s_last;
   1120     YYSTYPE  *l_base;
   1121     YYSTYPE  *l_mark;
   1122 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1123     YYLTYPE  *p_base;
   1124     YYLTYPE  *p_mark;
   1125 #endif
   1126 } YYSTACKDATA;
   1127 #if YYBTYACC
   1128 
   1129 struct YYParseState_s
   1130 {
   1131     struct YYParseState_s *save;    /* Previously saved parser state */
   1132     YYSTACKDATA            yystack; /* saved parser stack */
   1133     int                    state;   /* saved parser state */
   1134     int                    errflag; /* saved error recovery status */
   1135     int                    lexeme;  /* saved index of the conflict lexeme in the lexical queue */
   1136     YYINT                  ctry;    /* saved index in yyctable[] for this conflict */
   1137 };
   1138 typedef struct YYParseState_s YYParseState;
   1139 #endif /* YYBTYACC */
   1140 /* variables for the parser stack */
   1141 static YYSTACKDATA yystack;
   1142 #if YYBTYACC
   1143 
   1144 /* Current parser state */
   1145 static YYParseState *yyps = 0;
   1146 
   1147 /* yypath != NULL: do the full parse, starting at *yypath parser state. */
   1148 static YYParseState *yypath = 0;
   1149 
   1150 /* Base of the lexical value queue */
   1151 static YYSTYPE *yylvals = 0;
   1152 
   1153 /* Current position at lexical value queue */
   1154 static YYSTYPE *yylvp = 0;
   1155 
   1156 /* End position of lexical value queue */
   1157 static YYSTYPE *yylve = 0;
   1158 
   1159 /* The last allocated position at the lexical value queue */
   1160 static YYSTYPE *yylvlim = 0;
   1161 
   1162 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1163 /* Base of the lexical position queue */
   1164 static YYLTYPE *yylpsns = 0;
   1165 
   1166 /* Current position at lexical position queue */
   1167 static YYLTYPE *yylpp = 0;
   1168 
   1169 /* End position of lexical position queue */
   1170 static YYLTYPE *yylpe = 0;
   1171 
   1172 /* The last allocated position at the lexical position queue */
   1173 static YYLTYPE *yylplim = 0;
   1174 #endif
   1175 
   1176 /* Current position at lexical token queue */
   1177 static YYINT  *yylexp = 0;
   1178 
   1179 static YYINT  *yylexemes = 0;
   1180 #endif /* YYBTYACC */
   1181 #line 1015 "grammar.y"
   1182 
   1183 /* lex.yy.c */
   1184 #define BEGIN yy_start = 1 + 2 *
   1185 
   1186 #define CPP1 1
   1187 #define INIT1 2
   1188 #define INIT2 3
   1189 #define CURLY 4
   1190 #define LEXYACC 5
   1191 #define ASM 6
   1192 #define CPP_INLINE 7
   1193 
   1194 extern char *yytext;
   1195 extern FILE *yyin, *yyout;
   1196 
   1197 static int curly;			/* number of curly brace nesting levels */
   1198 static int ly_count;			/* number of occurrences of %% */
   1199 static int inc_depth;			/* include nesting level */
   1200 static SymbolTable *included_files;	/* files already included */
   1201 static int yy_start = 0;		/* start state number */
   1202 
   1203 #define grammar_error(s) yaccError(s)
   1204 
   1205 static void
   1206 yaccError (const char *msg)
   1207 {
   1208     func_params = NULL;
   1209     put_error();		/* tell what line we're on, and what file */
   1210     fprintf(stderr, "%s at token '%s'\n", msg, yytext);
   1211 }
   1212 
   1213 /* Initialize the table of type qualifier keywords recognized by the lexical
   1214  * analyzer.
   1215  */
   1216 void
   1217 init_parser (void)
   1218 {
   1219     static const char *keywords[] = {
   1220 	"const",
   1221 	"restrict",
   1222 	"volatile",
   1223 	"interrupt",
   1224 #ifdef vms
   1225 	"noshare",
   1226 	"readonly",
   1227 #endif
   1228 #if defined(MSDOS) || defined(OS2)
   1229 	"__cdecl",
   1230 	"__export",
   1231 	"__far",
   1232 	"__fastcall",
   1233 	"__fortran",
   1234 	"__huge",
   1235 	"__inline",
   1236 	"__interrupt",
   1237 	"__loadds",
   1238 	"__near",
   1239 	"__pascal",
   1240 	"__saveregs",
   1241 	"__segment",
   1242 	"__stdcall",
   1243 	"__syscall",
   1244 	"_cdecl",
   1245 	"_cs",
   1246 	"_ds",
   1247 	"_es",
   1248 	"_export",
   1249 	"_far",
   1250 	"_fastcall",
   1251 	"_fortran",
   1252 	"_huge",
   1253 	"_interrupt",
   1254 	"_loadds",
   1255 	"_near",
   1256 	"_pascal",
   1257 	"_saveregs",
   1258 	"_seg",
   1259 	"_segment",
   1260 	"_ss",
   1261 	"cdecl",
   1262 	"far",
   1263 	"huge",
   1264 	"near",
   1265 	"pascal",
   1266 #ifdef OS2
   1267 	"__far16",
   1268 #endif
   1269 #endif
   1270 #ifdef __GNUC__
   1271 	/* gcc aliases */
   1272 	"__builtin_va_arg",
   1273 	"__builtin_va_list",
   1274 	"__const",
   1275 	"__const__",
   1276 	"__inline",
   1277 	"__inline__",
   1278 	"__restrict",
   1279 	"__restrict__",
   1280 	"__volatile",
   1281 	"__volatile__",
   1282 #endif
   1283     };
   1284     unsigned i;
   1285 
   1286     /* Initialize type qualifier table. */
   1287     type_qualifiers = new_symbol_table();
   1288     for (i = 0; i < sizeof(keywords)/sizeof(keywords[0]); ++i) {
   1289 	new_symbol(type_qualifiers, keywords[i], NULL, DS_NONE);
   1290     }
   1291 }
   1292 
   1293 /* Process the C source file.  Write function prototypes to the standard
   1294  * output.  Convert function definitions and write the converted source
   1295  * code to a temporary file.
   1296  */
   1297 void
   1298 process_file (FILE *infile, char *name)
   1299 {
   1300     char *s;
   1301 
   1302     if (strlen(name) > 2) {
   1303 	s = name + strlen(name) - 2;
   1304 	if (*s == '.') {
   1305 	    ++s;
   1306 	    if (*s == 'l' || *s == 'y')
   1307 		BEGIN LEXYACC;
   1308 #if defined(MSDOS) || defined(OS2)
   1309 	    if (*s == 'L' || *s == 'Y')
   1310 		BEGIN LEXYACC;
   1311 #endif
   1312 	}
   1313     }
   1314 
   1315     included_files = new_symbol_table();
   1316     typedef_names = new_symbol_table();
   1317     define_names = new_symbol_table();
   1318     inc_depth = -1;
   1319     curly = 0;
   1320     ly_count = 0;
   1321     func_params = NULL;
   1322     yyin = infile;
   1323     include_file(strcpy(base_file, name), func_style != FUNC_NONE);
   1324     if (file_comments) {
   1325 #if OPT_LINTLIBRARY
   1326     	if (lintLibrary()) {
   1327 	    put_blankline(stdout);
   1328 	    begin_tracking();
   1329 	}
   1330 #endif
   1331 	put_string(stdout, "/* ");
   1332 	put_string(stdout, cur_file_name());
   1333 	put_string(stdout, " */\n");
   1334     }
   1335     yyparse();
   1336     free_symbol_table(define_names);
   1337     free_symbol_table(typedef_names);
   1338     free_symbol_table(included_files);
   1339 }
   1340 
   1341 #ifdef NO_LEAKS
   1342 void
   1343 free_parser(void)
   1344 {
   1345     free_symbol_table (type_qualifiers);
   1346 #ifdef FLEX_SCANNER
   1347     if (yy_current_buffer != 0)
   1348 	yy_delete_buffer(yy_current_buffer);
   1349 #endif
   1350 }
   1351 #endif
   1352 #line 1351 "grammar.tab.c"
   1353 
   1354 /* For use in generated program */
   1355 #define yydepth (int)(yystack.s_mark - yystack.s_base)
   1356 #if YYBTYACC
   1357 #define yytrial (yyps->save)
   1358 #endif /* YYBTYACC */
   1359 
   1360 #if YYDEBUG
   1361 #include <stdio.h>	/* needed for printf */
   1362 #endif
   1363 
   1364 #include <stdlib.h>	/* needed for malloc, etc */
   1365 #include <string.h>	/* needed for memset */
   1366 
   1367 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
   1368 static int yygrowstack(YYSTACKDATA *data)
   1369 {
   1370     int i;
   1371     unsigned newsize;
   1372     YYINT *newss;
   1373     YYSTYPE *newvs;
   1374 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1375     YYLTYPE *newps;
   1376 #endif
   1377 
   1378     if ((newsize = data->stacksize) == 0)
   1379         newsize = YYINITSTACKSIZE;
   1380     else if (newsize >= YYMAXDEPTH)
   1381         return YYENOMEM;
   1382     else if ((newsize *= 2) > YYMAXDEPTH)
   1383         newsize = YYMAXDEPTH;
   1384 
   1385     i = (int) (data->s_mark - data->s_base);
   1386     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
   1387     if (newss == 0)
   1388         return YYENOMEM;
   1389 
   1390     data->s_base = newss;
   1391     data->s_mark = newss + i;
   1392 
   1393     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
   1394     if (newvs == 0)
   1395         return YYENOMEM;
   1396 
   1397     data->l_base = newvs;
   1398     data->l_mark = newvs + i;
   1399 
   1400 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1401     newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
   1402     if (newps == 0)
   1403         return YYENOMEM;
   1404 
   1405     data->p_base = newps;
   1406     data->p_mark = newps + i;
   1407 #endif
   1408 
   1409     data->stacksize = newsize;
   1410     data->s_last = data->s_base + newsize - 1;
   1411 
   1412 #if YYDEBUG
   1413     if (yydebug)
   1414         fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
   1415 #endif
   1416     return 0;
   1417 }
   1418 
   1419 #if YYPURE || defined(YY_NO_LEAKS)
   1420 static void yyfreestack(YYSTACKDATA *data)
   1421 {
   1422     free(data->s_base);
   1423     free(data->l_base);
   1424 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1425     free(data->p_base);
   1426 #endif
   1427     memset(data, 0, sizeof(*data));
   1428 }
   1429 #else
   1430 #define yyfreestack(data) /* nothing */
   1431 #endif /* YYPURE || defined(YY_NO_LEAKS) */
   1432 #if YYBTYACC
   1433 
   1434 static YYParseState *
   1435 yyNewState(unsigned size)
   1436 {
   1437     YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
   1438     if (p == NULL) return NULL;
   1439 
   1440     p->yystack.stacksize = size;
   1441     if (size == 0)
   1442     {
   1443         p->yystack.s_base = NULL;
   1444         p->yystack.l_base = NULL;
   1445 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1446         p->yystack.p_base = NULL;
   1447 #endif
   1448         return p;
   1449     }
   1450     p->yystack.s_base    = (YYINT *) malloc(size * sizeof(YYINT));
   1451     if (p->yystack.s_base == NULL) return NULL;
   1452     p->yystack.l_base    = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
   1453     if (p->yystack.l_base == NULL) return NULL;
   1454     memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
   1455 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1456     p->yystack.p_base    = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
   1457     if (p->yystack.p_base == NULL) return NULL;
   1458     memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
   1459 #endif
   1460 
   1461     return p;
   1462 }
   1463 
   1464 static void
   1465 yyFreeState(YYParseState *p)
   1466 {
   1467     yyfreestack(&p->yystack);
   1468     free(p);
   1469 }
   1470 #endif /* YYBTYACC */
   1471 
   1472 #define YYABORT  goto yyabort
   1473 #define YYREJECT goto yyabort
   1474 #define YYACCEPT goto yyaccept
   1475 #define YYERROR  goto yyerrlab
   1476 #if YYBTYACC
   1477 #define YYVALID        do { if (yyps->save)            goto yyvalid; } while(0)
   1478 #define YYVALID_NESTED do { if (yyps->save && \
   1479                                 yyps->save->save == 0) goto yyvalid; } while(0)
   1480 #endif /* YYBTYACC */
   1481 
   1482 int
   1483 YYPARSE_DECL()
   1484 {
   1485     int yym, yyn, yystate, yyresult;
   1486 #if YYBTYACC
   1487     int yynewerrflag;
   1488     YYParseState *yyerrctx = NULL;
   1489 #endif /* YYBTYACC */
   1490 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1491     YYLTYPE  yyerror_loc_range[3]; /* position of error start/end (0 unused) */
   1492 #endif
   1493 #if YYDEBUG
   1494     const char *yys;
   1495 
   1496     if ((yys = getenv("YYDEBUG")) != 0)
   1497     {
   1498         yyn = *yys;
   1499         if (yyn >= '0' && yyn <= '9')
   1500             yydebug = yyn - '0';
   1501     }
   1502     if (yydebug)
   1503         fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
   1504 #endif
   1505 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1506     memset(yyerror_loc_range, 0, sizeof(yyerror_loc_range));
   1507 #endif
   1508 
   1509 #if YYBTYACC
   1510     yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
   1511     yyps->save = 0;
   1512 #endif /* YYBTYACC */
   1513     yym = 0;
   1514     /* yyn is set below */
   1515     yynerrs = 0;
   1516     yyerrflag = 0;
   1517     yychar = YYEMPTY;
   1518     yystate = 0;
   1519 
   1520 #if YYPURE
   1521     memset(&yystack, 0, sizeof(yystack));
   1522 #endif
   1523 
   1524     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1525     yystack.s_mark = yystack.s_base;
   1526     yystack.l_mark = yystack.l_base;
   1527 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1528     yystack.p_mark = yystack.p_base;
   1529 #endif
   1530     yystate = 0;
   1531     *yystack.s_mark = 0;
   1532 
   1533 yyloop:
   1534     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
   1535     if (yychar < 0)
   1536     {
   1537 #if YYBTYACC
   1538         do {
   1539         if (yylvp < yylve)
   1540         {
   1541             /* we're currently re-reading tokens */
   1542             yylval = *yylvp++;
   1543 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1544             yylloc = *yylpp++;
   1545 #endif
   1546             yychar = *yylexp++;
   1547             break;
   1548         }
   1549         if (yyps->save)
   1550         {
   1551             /* in trial mode; save scanner results for future parse attempts */
   1552             if (yylvp == yylvlim)
   1553             {   /* Enlarge lexical value queue */
   1554                 size_t p = (size_t) (yylvp - yylvals);
   1555                 size_t s = (size_t) (yylvlim - yylvals);
   1556 
   1557                 s += YYLVQUEUEGROWTH;
   1558                 if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL) goto yyenomem;
   1559                 if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
   1560 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1561                 if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
   1562 #endif
   1563                 yylvp   = yylve = yylvals + p;
   1564                 yylvlim = yylvals + s;
   1565 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1566                 yylpp   = yylpe = yylpsns + p;
   1567                 yylplim = yylpsns + s;
   1568 #endif
   1569                 yylexp  = yylexemes + p;
   1570             }
   1571             *yylexp = (YYINT) YYLEX;
   1572             *yylvp++ = yylval;
   1573             yylve++;
   1574 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1575             *yylpp++ = yylloc;
   1576             yylpe++;
   1577 #endif
   1578             yychar = *yylexp++;
   1579             break;
   1580         }
   1581         /* normal operation, no conflict encountered */
   1582 #endif /* YYBTYACC */
   1583         yychar = YYLEX;
   1584 #if YYBTYACC
   1585         } while (0);
   1586 #endif /* YYBTYACC */
   1587         if (yychar < 0) yychar = YYEOF;
   1588 #if YYDEBUG
   1589         if (yydebug)
   1590         {
   1591             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   1592             fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
   1593                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
   1594 #ifdef YYSTYPE_TOSTRING
   1595 #if YYBTYACC
   1596             if (!yytrial)
   1597 #endif /* YYBTYACC */
   1598                 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
   1599 #endif
   1600             fputc('\n', stderr);
   1601         }
   1602 #endif
   1603     }
   1604 #if YYBTYACC
   1605 
   1606     /* Do we have a conflict? */
   1607     if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
   1608         yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
   1609     {
   1610         YYINT ctry;
   1611 
   1612         if (yypath)
   1613         {
   1614             YYParseState *save;
   1615 #if YYDEBUG
   1616             if (yydebug)
   1617                 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
   1618                                 YYDEBUGSTR, yydepth, yystate);
   1619 #endif
   1620             /* Switch to the next conflict context */
   1621             save = yypath;
   1622             yypath = save->save;
   1623             save->save = NULL;
   1624             ctry = save->ctry;
   1625             if (save->state != yystate) YYABORT;
   1626             yyFreeState(save);
   1627 
   1628         }
   1629         else
   1630         {
   1631 
   1632             /* Unresolved conflict - start/continue trial parse */
   1633             YYParseState *save;
   1634 #if YYDEBUG
   1635             if (yydebug)
   1636             {
   1637                 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
   1638                 if (yyps->save)
   1639                     fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
   1640                 else
   1641                     fputs("Starting trial parse.\n", stderr);
   1642             }
   1643 #endif
   1644             save                  = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
   1645             if (save == NULL) goto yyenomem;
   1646             save->save            = yyps->save;
   1647             save->state           = yystate;
   1648             save->errflag         = yyerrflag;
   1649             save->yystack.s_mark  = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
   1650             memcpy (save->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1651             save->yystack.l_mark  = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
   1652             memcpy (save->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1653 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1654             save->yystack.p_mark  = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
   1655             memcpy (save->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1656 #endif
   1657             ctry                  = yytable[yyn];
   1658             if (yyctable[ctry] == -1)
   1659             {
   1660 #if YYDEBUG
   1661                 if (yydebug && yychar >= YYEOF)
   1662                     fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
   1663 #endif
   1664                 ctry++;
   1665             }
   1666             save->ctry = ctry;
   1667             if (yyps->save == NULL)
   1668             {
   1669                 /* If this is a first conflict in the stack, start saving lexemes */
   1670                 if (!yylexemes)
   1671                 {
   1672                     yylexemes = (YYINT *) malloc((YYLVQUEUEGROWTH) * sizeof(YYINT));
   1673                     if (yylexemes == NULL) goto yyenomem;
   1674                     yylvals   = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
   1675                     if (yylvals == NULL) goto yyenomem;
   1676                     yylvlim   = yylvals + YYLVQUEUEGROWTH;
   1677 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1678                     yylpsns   = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
   1679                     if (yylpsns == NULL) goto yyenomem;
   1680                     yylplim   = yylpsns + YYLVQUEUEGROWTH;
   1681 #endif
   1682                 }
   1683                 if (yylvp == yylve)
   1684                 {
   1685                     yylvp  = yylve = yylvals;
   1686 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1687                     yylpp  = yylpe = yylpsns;
   1688 #endif
   1689                     yylexp = yylexemes;
   1690                     if (yychar >= YYEOF)
   1691                     {
   1692                         *yylve++ = yylval;
   1693 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1694                         *yylpe++ = yylloc;
   1695 #endif
   1696                         *yylexp  = (YYINT) yychar;
   1697                         yychar   = YYEMPTY;
   1698                     }
   1699                 }
   1700             }
   1701             if (yychar >= YYEOF)
   1702             {
   1703                 yylvp--;
   1704 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1705                 yylpp--;
   1706 #endif
   1707                 yylexp--;
   1708                 yychar = YYEMPTY;
   1709             }
   1710             save->lexeme = (int) (yylvp - yylvals);
   1711             yyps->save   = save;
   1712         }
   1713         if (yytable[yyn] == ctry)
   1714         {
   1715 #if YYDEBUG
   1716             if (yydebug)
   1717                 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
   1718                                 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
   1719 #endif
   1720             if (yychar < 0)
   1721             {
   1722                 yylvp++;
   1723 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1724                 yylpp++;
   1725 #endif
   1726                 yylexp++;
   1727             }
   1728             if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
   1729                 goto yyoverflow;
   1730             yystate = yyctable[ctry];
   1731             *++yystack.s_mark = (YYINT) yystate;
   1732             *++yystack.l_mark = yylval;
   1733 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1734             *++yystack.p_mark = yylloc;
   1735 #endif
   1736             yychar  = YYEMPTY;
   1737             if (yyerrflag > 0) --yyerrflag;
   1738             goto yyloop;
   1739         }
   1740         else
   1741         {
   1742             yyn = yyctable[ctry];
   1743             goto yyreduce;
   1744         }
   1745     } /* End of code dealing with conflicts */
   1746 #endif /* YYBTYACC */
   1747     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
   1748             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
   1749     {
   1750 #if YYDEBUG
   1751         if (yydebug)
   1752             fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
   1753                             YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
   1754 #endif
   1755         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1756         yystate = yytable[yyn];
   1757         *++yystack.s_mark = yytable[yyn];
   1758         *++yystack.l_mark = yylval;
   1759 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1760         *++yystack.p_mark = yylloc;
   1761 #endif
   1762         yychar = YYEMPTY;
   1763         if (yyerrflag > 0)  --yyerrflag;
   1764         goto yyloop;
   1765     }
   1766     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
   1767             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
   1768     {
   1769         yyn = yytable[yyn];
   1770         goto yyreduce;
   1771     }
   1772     if (yyerrflag != 0) goto yyinrecovery;
   1773 #if YYBTYACC
   1774 
   1775     yynewerrflag = 1;
   1776     goto yyerrhandler;
   1777     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
   1778 
   1779 yyerrlab:
   1780     /* explicit YYERROR from an action -- pop the rhs of the rule reduced
   1781      * before looking for error recovery */
   1782     yystack.s_mark -= yym;
   1783     yystate = *yystack.s_mark;
   1784     yystack.l_mark -= yym;
   1785 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1786     yystack.p_mark -= yym;
   1787 #endif
   1788 
   1789     yynewerrflag = 0;
   1790 yyerrhandler:
   1791     while (yyps->save)
   1792     {
   1793         int ctry;
   1794         YYParseState *save = yyps->save;
   1795 #if YYDEBUG
   1796         if (yydebug)
   1797             fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
   1798                             YYDEBUGSTR, yydepth, yystate, yyps->save->state,
   1799                     (int)(yylvp - yylvals - yyps->save->lexeme));
   1800 #endif
   1801         /* Memorize most forward-looking error state in case it's really an error. */
   1802         if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
   1803         {
   1804             /* Free old saved error context state */
   1805             if (yyerrctx) yyFreeState(yyerrctx);
   1806             /* Create and fill out new saved error context state */
   1807             yyerrctx                 = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
   1808             if (yyerrctx == NULL) goto yyenomem;
   1809             yyerrctx->save           = yyps->save;
   1810             yyerrctx->state          = yystate;
   1811             yyerrctx->errflag        = yyerrflag;
   1812             yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
   1813             memcpy (yyerrctx->yystack.s_base, yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1814             yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
   1815             memcpy (yyerrctx->yystack.l_base, yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1816 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1817             yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
   1818             memcpy (yyerrctx->yystack.p_base, yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1819 #endif
   1820             yyerrctx->lexeme         = (int) (yylvp - yylvals);
   1821         }
   1822         yylvp          = yylvals   + save->lexeme;
   1823 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1824         yylpp          = yylpsns   + save->lexeme;
   1825 #endif
   1826         yylexp         = yylexemes + save->lexeme;
   1827         yychar         = YYEMPTY;
   1828         yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
   1829         memcpy (yystack.s_base, save->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1830         yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
   1831         memcpy (yystack.l_base, save->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1832 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1833         yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
   1834         memcpy (yystack.p_base, save->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1835 #endif
   1836         ctry           = ++save->ctry;
   1837         yystate        = save->state;
   1838         /* We tried shift, try reduce now */
   1839         if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
   1840         yyps->save     = save->save;
   1841         save->save     = NULL;
   1842         yyFreeState(save);
   1843 
   1844         /* Nothing left on the stack -- error */
   1845         if (!yyps->save)
   1846         {
   1847 #if YYDEBUG
   1848             if (yydebug)
   1849                 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
   1850                                 YYPREFIX, yydepth);
   1851 #endif
   1852             /* Restore state as it was in the most forward-advanced error */
   1853             yylvp          = yylvals   + yyerrctx->lexeme;
   1854 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1855             yylpp          = yylpsns   + yyerrctx->lexeme;
   1856 #endif
   1857             yylexp         = yylexemes + yyerrctx->lexeme;
   1858             yychar         = yylexp[-1];
   1859             yylval         = yylvp[-1];
   1860 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1861             yylloc         = yylpp[-1];
   1862 #endif
   1863             yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
   1864             memcpy (yystack.s_base, yyerrctx->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   1865             yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
   1866             memcpy (yystack.l_base, yyerrctx->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   1867 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1868             yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
   1869             memcpy (yystack.p_base, yyerrctx->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   1870 #endif
   1871             yystate        = yyerrctx->state;
   1872             yyFreeState(yyerrctx);
   1873             yyerrctx       = NULL;
   1874         }
   1875         yynewerrflag = 1;
   1876     }
   1877     if (yynewerrflag == 0) goto yyinrecovery;
   1878 #endif /* YYBTYACC */
   1879 
   1880     YYERROR_CALL("syntax error");
   1881 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1882     yyerror_loc_range[1] = yylloc; /* lookahead position is error start position */
   1883 #endif
   1884 
   1885 #if !YYBTYACC
   1886     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
   1887 yyerrlab:
   1888 #endif
   1889     ++yynerrs;
   1890 
   1891 yyinrecovery:
   1892     if (yyerrflag < 3)
   1893     {
   1894         yyerrflag = 3;
   1895         for (;;)
   1896         {
   1897             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
   1898                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
   1899             {
   1900 #if YYDEBUG
   1901                 if (yydebug)
   1902                     fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
   1903                                     YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
   1904 #endif
   1905                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1906                 yystate = yytable[yyn];
   1907                 *++yystack.s_mark = yytable[yyn];
   1908                 *++yystack.l_mark = yylval;
   1909 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1910                 /* lookahead position is error end position */
   1911                 yyerror_loc_range[2] = yylloc;
   1912                 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
   1913                 *++yystack.p_mark = yyloc;
   1914 #endif
   1915                 goto yyloop;
   1916             }
   1917             else
   1918             {
   1919 #if YYDEBUG
   1920                 if (yydebug)
   1921                     fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
   1922                                     YYDEBUGSTR, yydepth, *yystack.s_mark);
   1923 #endif
   1924                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
   1925 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1926                 /* the current TOS position is the error start position */
   1927                 yyerror_loc_range[1] = *yystack.p_mark;
   1928 #endif
   1929 #if defined(YYDESTRUCT_CALL)
   1930 #if YYBTYACC
   1931                 if (!yytrial)
   1932 #endif /* YYBTYACC */
   1933 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1934                     YYDESTRUCT_CALL("error: discarding state",
   1935                                     yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
   1936 #else
   1937                     YYDESTRUCT_CALL("error: discarding state",
   1938                                     yystos[*yystack.s_mark], yystack.l_mark);
   1939 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1940 #endif /* defined(YYDESTRUCT_CALL) */
   1941                 --yystack.s_mark;
   1942                 --yystack.l_mark;
   1943 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1944                 --yystack.p_mark;
   1945 #endif
   1946             }
   1947         }
   1948     }
   1949     else
   1950     {
   1951         if (yychar == YYEOF) goto yyabort;
   1952 #if YYDEBUG
   1953         if (yydebug)
   1954         {
   1955             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   1956             fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
   1957                             YYDEBUGSTR, yydepth, yystate, yychar, yys);
   1958         }
   1959 #endif
   1960 #if defined(YYDESTRUCT_CALL)
   1961 #if YYBTYACC
   1962         if (!yytrial)
   1963 #endif /* YYBTYACC */
   1964 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   1965             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
   1966 #else
   1967             YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
   1968 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   1969 #endif /* defined(YYDESTRUCT_CALL) */
   1970         yychar = YYEMPTY;
   1971         goto yyloop;
   1972     }
   1973 
   1974 yyreduce:
   1975     yym = yylen[yyn];
   1976 #if YYDEBUG
   1977     if (yydebug)
   1978     {
   1979         fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
   1980                         YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
   1981 #ifdef YYSTYPE_TOSTRING
   1982 #if YYBTYACC
   1983         if (!yytrial)
   1984 #endif /* YYBTYACC */
   1985             if (yym > 0)
   1986             {
   1987                 int i;
   1988                 fputc('<', stderr);
   1989                 for (i = yym; i > 0; i--)
   1990                 {
   1991                     if (i != yym) fputs(", ", stderr);
   1992                     fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
   1993                                            yystack.l_mark[1-i]), stderr);
   1994                 }
   1995                 fputc('>', stderr);
   1996             }
   1997 #endif
   1998         fputc('\n', stderr);
   1999     }
   2000 #endif
   2001     if (yym > 0)
   2002         yyval = yystack.l_mark[1-yym];
   2003     else
   2004         memset(&yyval, 0, sizeof yyval);
   2005 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2006 
   2007     /* Perform position reduction */
   2008     memset(&yyloc, 0, sizeof(yyloc));
   2009 #if YYBTYACC
   2010     if (!yytrial)
   2011 #endif /* YYBTYACC */
   2012     {
   2013         YYLLOC_DEFAULT(yyloc, &yystack.p_mark[-yym], yym);
   2014         /* just in case YYERROR is invoked within the action, save
   2015            the start of the rhs as the error start position */
   2016         yyerror_loc_range[1] = yystack.p_mark[1-yym];
   2017     }
   2018 #endif
   2019 
   2020     switch (yyn)
   2021     {
   2022 case 10:
   2023 #line 378 "grammar.y"
   2024 	{
   2025 	    yyerrok;
   2026 	}
   2027 #line 2026 "grammar.tab.c"
   2028 break;
   2029 case 11:
   2030 #line 382 "grammar.y"
   2031 	{
   2032 	    yyerrok;
   2033 	}
   2034 #line 2033 "grammar.tab.c"
   2035 break;
   2036 case 13:
   2037 #line 393 "grammar.y"
   2038 	{
   2039 	    /* Provide an empty action here so bison will not complain about
   2040 	     * incompatible types in the default action it normally would
   2041 	     * have generated.
   2042 	     */
   2043 	}
   2044 #line 2043 "grammar.tab.c"
   2045 break;
   2046 case 14:
   2047 #line 400 "grammar.y"
   2048 	{
   2049 	    /* empty */
   2050 	}
   2051 #line 2050 "grammar.tab.c"
   2052 break;
   2053 case 15:
   2054 #line 407 "grammar.y"
   2055 	{
   2056 #if OPT_LINTLIBRARY
   2057 	    if (types_out && want_typedef()) {
   2058 		gen_declarations(&yystack.l_mark[-1].decl_spec, (DeclaratorList *)0);
   2059 		flush_varargs();
   2060 	    }
   2061 #endif
   2062 	    free_decl_spec(&yystack.l_mark[-1].decl_spec);
   2063 	    end_typedef();
   2064 	}
   2065 #line 2064 "grammar.tab.c"
   2066 break;
   2067 case 16:
   2068 #line 418 "grammar.y"
   2069 	{
   2070 	    if (func_params != NULL) {
   2071 		set_param_types(func_params, &yystack.l_mark[-2].decl_spec, &yystack.l_mark[-1].decl_list);
   2072 	    } else {
   2073 		gen_declarations(&yystack.l_mark[-2].decl_spec, &yystack.l_mark[-1].decl_list);
   2074 #if OPT_LINTLIBRARY
   2075 		flush_varargs();
   2076 #endif
   2077 		free_decl_list(&yystack.l_mark[-1].decl_list);
   2078 	    }
   2079 	    free_decl_spec(&yystack.l_mark[-2].decl_spec);
   2080 	    end_typedef();
   2081 	}
   2082 #line 2081 "grammar.tab.c"
   2083 break;
   2084 case 17:
   2085 #line 432 "grammar.y"
   2086 	{
   2087 	    cur_decl_spec_flags = yystack.l_mark[0].decl_spec.flags;
   2088 	    free_decl_spec(&yystack.l_mark[0].decl_spec);
   2089 	}
   2090 #line 2089 "grammar.tab.c"
   2091 break;
   2092 case 18:
   2093 #line 437 "grammar.y"
   2094 	{
   2095 	    end_typedef();
   2096 	}
   2097 #line 2096 "grammar.tab.c"
   2098 break;
   2099 case 19:
   2100 #line 444 "grammar.y"
   2101 	{
   2102 	    begin_typedef();
   2103 	}
   2104 #line 2103 "grammar.tab.c"
   2105 break;
   2106 case 20:
   2107 #line 448 "grammar.y"
   2108 	{
   2109 	    begin_typedef();
   2110 	}
   2111 #line 2110 "grammar.tab.c"
   2112 break;
   2113 case 23:
   2114 #line 460 "grammar.y"
   2115 	{
   2116 	    int flags = cur_decl_spec_flags;
   2117 
   2118 	    /* If the typedef is a pointer type, then reset the short type
   2119 	     * flags so it does not get promoted.
   2120 	     */
   2121 	    if (strcmp(yystack.l_mark[0].declarator->text, yystack.l_mark[0].declarator->name) != 0)
   2122 		flags &= ~(DS_CHAR | DS_SHORT | DS_FLOAT);
   2123 	    new_symbol(typedef_names, yystack.l_mark[0].declarator->name, NULL, flags);
   2124 	    free_declarator(yystack.l_mark[0].declarator);
   2125 	}
   2126 #line 2125 "grammar.tab.c"
   2127 break;
   2128 case 24:
   2129 #line 472 "grammar.y"
   2130 	{
   2131 	    int flags = cur_decl_spec_flags;
   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 25:
   2141 #line 484 "grammar.y"
   2142 	{
   2143 	    check_untagged(&yystack.l_mark[-1].decl_spec);
   2144 	    if (yystack.l_mark[0].declarator->func_def == FUNC_NONE) {
   2145 		yyerror("syntax error");
   2146 		YYERROR;
   2147 	    }
   2148 	    func_params = &(yystack.l_mark[0].declarator->head->params);
   2149 	    func_params->begin_comment = cur_file->begin_comment;
   2150 	    func_params->end_comment = cur_file->end_comment;
   2151 	}
   2152 #line 2151 "grammar.tab.c"
   2153 break;
   2154 case 26:
   2155 #line 495 "grammar.y"
   2156 	{
   2157 	    /* If we're converting to K&R and we've got a nominally K&R
   2158 	     * function which has a parameter which is ANSI (i.e., a prototyped
   2159 	     * function pointer), then we must override the deciphered value of
   2160 	     * 'func_def' so that the parameter will be converted.
   2161 	     */
   2162 	    if (func_style == FUNC_TRADITIONAL
   2163 	     && haveAnsiParam()
   2164 	     && yystack.l_mark[-3].declarator->head->func_def == func_style) {
   2165 		yystack.l_mark[-3].declarator->head->func_def = FUNC_BOTH;
   2166 	    }
   2167 
   2168 	    func_params = NULL;
   2169 
   2170 	    if (cur_file->convert)
   2171 		gen_func_definition(&yystack.l_mark[-4].decl_spec, yystack.l_mark[-3].declarator);
   2172 	    gen_prototype(&yystack.l_mark[-4].decl_spec, yystack.l_mark[-3].declarator);
   2173 #if OPT_LINTLIBRARY
   2174 	    flush_varargs();
   2175 #endif
   2176 	    free_decl_spec(&yystack.l_mark[-4].decl_spec);
   2177 	    free_declarator(yystack.l_mark[-3].declarator);
   2178 	}
   2179 #line 2178 "grammar.tab.c"
   2180 break;
   2181 case 28:
   2182 #line 520 "grammar.y"
   2183 	{
   2184 	    if (yystack.l_mark[0].declarator->func_def == FUNC_NONE) {
   2185 		yyerror("syntax error");
   2186 		YYERROR;
   2187 	    }
   2188 	    func_params = &(yystack.l_mark[0].declarator->head->params);
   2189 	    func_params->begin_comment = cur_file->begin_comment;
   2190 	    func_params->end_comment = cur_file->end_comment;
   2191 	}
   2192 #line 2191 "grammar.tab.c"
   2193 break;
   2194 case 29:
   2195 #line 530 "grammar.y"
   2196 	{
   2197 	    DeclSpec decl_spec;
   2198 
   2199 	    func_params = NULL;
   2200 
   2201 	    new_decl_spec(&decl_spec, dft_decl_spec(), yystack.l_mark[-4].declarator->begin, DS_NONE);
   2202 	    if (cur_file->convert)
   2203 		gen_func_definition(&decl_spec, yystack.l_mark[-4].declarator);
   2204 	    gen_prototype(&decl_spec, yystack.l_mark[-4].declarator);
   2205 #if OPT_LINTLIBRARY
   2206 	    flush_varargs();
   2207 #endif
   2208 	    free_decl_spec(&decl_spec);
   2209 	    free_declarator(yystack.l_mark[-4].declarator);
   2210 	}
   2211 #line 2210 "grammar.tab.c"
   2212 break;
   2213 case 36:
   2214 #line 561 "grammar.y"
   2215 	{
   2216 	    join_decl_specs(&yyval.decl_spec, &yystack.l_mark[-1].decl_spec, &yystack.l_mark[0].decl_spec);
   2217 	    free(yystack.l_mark[-1].decl_spec.text);
   2218 	    free(yystack.l_mark[0].decl_spec.text);
   2219 	}
   2220 #line 2219 "grammar.tab.c"
   2221 break;
   2222 case 40:
   2223 #line 576 "grammar.y"
   2224 	{
   2225 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2226 	}
   2227 #line 2226 "grammar.tab.c"
   2228 break;
   2229 case 41:
   2230 #line 580 "grammar.y"
   2231 	{
   2232 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_EXTERN);
   2233 	}
   2234 #line 2233 "grammar.tab.c"
   2235 break;
   2236 case 42:
   2237 #line 584 "grammar.y"
   2238 	{
   2239 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2240 	}
   2241 #line 2240 "grammar.tab.c"
   2242 break;
   2243 case 43:
   2244 #line 588 "grammar.y"
   2245 	{
   2246 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_STATIC);
   2247 	}
   2248 #line 2247 "grammar.tab.c"
   2249 break;
   2250 case 44:
   2251 #line 592 "grammar.y"
   2252 	{
   2253 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_INLINE);
   2254 	}
   2255 #line 2254 "grammar.tab.c"
   2256 break;
   2257 case 45:
   2258 #line 596 "grammar.y"
   2259 	{
   2260 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_JUNK);
   2261 	}
   2262 #line 2261 "grammar.tab.c"
   2263 break;
   2264 case 46:
   2265 #line 603 "grammar.y"
   2266 	{
   2267 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_CHAR);
   2268 	}
   2269 #line 2268 "grammar.tab.c"
   2270 break;
   2271 case 47:
   2272 #line 607 "grammar.y"
   2273 	{
   2274 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2275 	}
   2276 #line 2275 "grammar.tab.c"
   2277 break;
   2278 case 48:
   2279 #line 611 "grammar.y"
   2280 	{
   2281 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_FLOAT);
   2282 	}
   2283 #line 2282 "grammar.tab.c"
   2284 break;
   2285 case 49:
   2286 #line 615 "grammar.y"
   2287 	{
   2288 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2289 	}
   2290 #line 2289 "grammar.tab.c"
   2291 break;
   2292 case 50:
   2293 #line 619 "grammar.y"
   2294 	{
   2295 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2296 	}
   2297 #line 2296 "grammar.tab.c"
   2298 break;
   2299 case 51:
   2300 #line 623 "grammar.y"
   2301 	{
   2302 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_SHORT);
   2303 	}
   2304 #line 2303 "grammar.tab.c"
   2305 break;
   2306 case 52:
   2307 #line 627 "grammar.y"
   2308 	{
   2309 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2310 	}
   2311 #line 2310 "grammar.tab.c"
   2312 break;
   2313 case 53:
   2314 #line 631 "grammar.y"
   2315 	{
   2316 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2317 	}
   2318 #line 2317 "grammar.tab.c"
   2319 break;
   2320 case 54:
   2321 #line 635 "grammar.y"
   2322 	{
   2323 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2324 	}
   2325 #line 2324 "grammar.tab.c"
   2326 break;
   2327 case 55:
   2328 #line 639 "grammar.y"
   2329 	{
   2330 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_CHAR);
   2331 	}
   2332 #line 2331 "grammar.tab.c"
   2333 break;
   2334 case 56:
   2335 #line 643 "grammar.y"
   2336 	{
   2337 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2338 	}
   2339 #line 2338 "grammar.tab.c"
   2340 break;
   2341 case 57:
   2342 #line 647 "grammar.y"
   2343 	{
   2344 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2345 	}
   2346 #line 2345 "grammar.tab.c"
   2347 break;
   2348 case 58:
   2349 #line 651 "grammar.y"
   2350 	{
   2351 	    Symbol *s;
   2352 	    s = find_symbol(typedef_names, yystack.l_mark[0].text.text);
   2353 	    if (s != NULL)
   2354 		new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, s->flags);
   2355 	}
   2356 #line 2355 "grammar.tab.c"
   2357 break;
   2358 case 61:
   2359 #line 663 "grammar.y"
   2360 	{
   2361 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   2362 	}
   2363 #line 2362 "grammar.tab.c"
   2364 break;
   2365 case 62:
   2366 #line 667 "grammar.y"
   2367 	{
   2368 	    /* This rule allows the <pointer> nonterminal to scan #define
   2369 	     * names as if they were type modifiers.
   2370 	     */
   2371 	    Symbol *s;
   2372 	    s = find_symbol(define_names, yystack.l_mark[0].text.text);
   2373 	    if (s != NULL)
   2374 		new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, s->flags);
   2375 	}
   2376 #line 2375 "grammar.tab.c"
   2377 break;
   2378 case 63:
   2379 #line 680 "grammar.y"
   2380 	{
   2381 	    char *s;
   2382 	    if ((s = implied_typedef()) == 0)
   2383 	        (void)sprintf(s = buf, "%.*s %.*s", TEXT_LEN, yystack.l_mark[-2].text.text, TEXT_LEN, yystack.l_mark[-1].text.text);
   2384 	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-2].text.begin, DS_NONE);
   2385 	}
   2386 #line 2385 "grammar.tab.c"
   2387 break;
   2388 case 64:
   2389 #line 687 "grammar.y"
   2390 	{
   2391 	    char *s;
   2392 	    if ((s = implied_typedef()) == 0)
   2393 		(void)sprintf(s = buf, "%.*s {}", TEXT_LEN, yystack.l_mark[-1].text.text);
   2394 	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-1].text.begin, DS_NONE);
   2395 	}
   2396 #line 2395 "grammar.tab.c"
   2397 break;
   2398 case 65:
   2399 #line 694 "grammar.y"
   2400 	{
   2401 	    (void)sprintf(buf, "%.*s %.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yystack.l_mark[0].text.text);
   2402 	    new_decl_spec(&yyval.decl_spec, buf, yystack.l_mark[-1].text.begin, DS_NONE);
   2403 	}
   2404 #line 2403 "grammar.tab.c"
   2405 break;
   2406 case 66:
   2407 #line 702 "grammar.y"
   2408 	{
   2409 	    imply_typedef(yyval.text.text);
   2410 	}
   2411 #line 2410 "grammar.tab.c"
   2412 break;
   2413 case 67:
   2414 #line 706 "grammar.y"
   2415 	{
   2416 	    imply_typedef(yyval.text.text);
   2417 	}
   2418 #line 2417 "grammar.tab.c"
   2419 break;
   2420 case 68:
   2421 #line 713 "grammar.y"
   2422 	{
   2423 	    new_decl_list(&yyval.decl_list, yystack.l_mark[0].declarator);
   2424 	}
   2425 #line 2424 "grammar.tab.c"
   2426 break;
   2427 case 69:
   2428 #line 717 "grammar.y"
   2429 	{
   2430 	    add_decl_list(&yyval.decl_list, &yystack.l_mark[-2].decl_list, yystack.l_mark[0].declarator);
   2431 	}
   2432 #line 2431 "grammar.tab.c"
   2433 break;
   2434 case 70:
   2435 #line 724 "grammar.y"
   2436 	{
   2437 	    if (yystack.l_mark[0].declarator->func_def != FUNC_NONE && func_params == NULL &&
   2438 		func_style == FUNC_TRADITIONAL && cur_file->convert) {
   2439 		gen_func_declarator(yystack.l_mark[0].declarator);
   2440 		fputs(cur_text(), cur_file->tmp_file);
   2441 	    }
   2442 	    cur_declarator = yyval.declarator;
   2443 	}
   2444 #line 2443 "grammar.tab.c"
   2445 break;
   2446 case 71:
   2447 #line 733 "grammar.y"
   2448 	{
   2449 	    if (yystack.l_mark[-1].declarator->func_def != FUNC_NONE && func_params == NULL &&
   2450 		func_style == FUNC_TRADITIONAL && cur_file->convert) {
   2451 		gen_func_declarator(yystack.l_mark[-1].declarator);
   2452 		fputs(" =", cur_file->tmp_file);
   2453 	    }
   2454 	}
   2455 #line 2454 "grammar.tab.c"
   2456 break;
   2457 case 73:
   2458 #line 745 "grammar.y"
   2459 	{
   2460 	    char *s;
   2461 	    if ((s = implied_typedef()) == 0)
   2462 		(void)sprintf(s = buf, "enum %.*s", TEXT_LEN, yystack.l_mark[-1].text.text);
   2463 	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-2].text.begin, DS_NONE);
   2464 	}
   2465 #line 2464 "grammar.tab.c"
   2466 break;
   2467 case 74:
   2468 #line 752 "grammar.y"
   2469 	{
   2470 	    char *s;
   2471 	    if ((s = implied_typedef()) == 0)
   2472 		(void)sprintf(s = buf, "%.*s {}", TEXT_LEN, yystack.l_mark[-1].text.text);
   2473 	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-1].text.begin, DS_NONE);
   2474 	}
   2475 #line 2474 "grammar.tab.c"
   2476 break;
   2477 case 75:
   2478 #line 759 "grammar.y"
   2479 	{
   2480 	    (void)sprintf(buf, "enum %.*s", TEXT_LEN, yystack.l_mark[0].text.text);
   2481 	    new_decl_spec(&yyval.decl_spec, buf, yystack.l_mark[-1].text.begin, DS_NONE);
   2482 	}
   2483 #line 2482 "grammar.tab.c"
   2484 break;
   2485 case 76:
   2486 #line 767 "grammar.y"
   2487 	{
   2488 	    imply_typedef("enum");
   2489 	    yyval.text = yystack.l_mark[0].text;
   2490 	}
   2491 #line 2490 "grammar.tab.c"
   2492 break;
   2493 case 79:
   2494 #line 780 "grammar.y"
   2495 	{
   2496 	    yyval.declarator = yystack.l_mark[0].declarator;
   2497 	    (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yyval.declarator->text);
   2498 	    free(yyval.declarator->text);
   2499 	    yyval.declarator->text = xstrdup(buf);
   2500 	    yyval.declarator->begin = yystack.l_mark[-1].text.begin;
   2501 	    yyval.declarator->pointer = TRUE;
   2502 	}
   2503 #line 2502 "grammar.tab.c"
   2504 break;
   2505 case 81:
   2506 #line 793 "grammar.y"
   2507 	{
   2508 	    yyval.declarator = new_declarator(yystack.l_mark[0].text.text, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin);
   2509 	}
   2510 #line 2509 "grammar.tab.c"
   2511 break;
   2512 case 82:
   2513 #line 797 "grammar.y"
   2514 	{
   2515 	    yyval.declarator = yystack.l_mark[-1].declarator;
   2516 	    (void)sprintf(buf, "(%.*s)", TEXT_LEN, yyval.declarator->text);
   2517 	    free(yyval.declarator->text);
   2518 	    yyval.declarator->text = xstrdup(buf);
   2519 	    yyval.declarator->begin = yystack.l_mark[-2].text.begin;
   2520 	}
   2521 #line 2520 "grammar.tab.c"
   2522 break;
   2523 case 83:
   2524 #line 805 "grammar.y"
   2525 	{
   2526 	    yyval.declarator = yystack.l_mark[-1].declarator;
   2527 	    (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yyval.declarator->text, TEXT_LEN, yystack.l_mark[0].text.text);
   2528 	    free(yyval.declarator->text);
   2529 	    yyval.declarator->text = xstrdup(buf);
   2530 	}
   2531 #line 2530 "grammar.tab.c"
   2532 break;
   2533 case 84:
   2534 #line 812 "grammar.y"
   2535 	{
   2536 	    yyval.declarator = new_declarator("%s()", yystack.l_mark[-3].declarator->name, yystack.l_mark[-3].declarator->begin);
   2537 	    yyval.declarator->params = yystack.l_mark[-1].param_list;
   2538 	    yyval.declarator->func_stack = yystack.l_mark[-3].declarator;
   2539 	    yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
   2540 	    yyval.declarator->func_def = FUNC_ANSI;
   2541 	}
   2542 #line 2541 "grammar.tab.c"
   2543 break;
   2544 case 85:
   2545 #line 820 "grammar.y"
   2546 	{
   2547 	    yyval.declarator = new_declarator("%s()", yystack.l_mark[-3].declarator->name, yystack.l_mark[-3].declarator->begin);
   2548 	    yyval.declarator->params = yystack.l_mark[-1].param_list;
   2549 	    yyval.declarator->func_stack = yystack.l_mark[-3].declarator;
   2550 	    yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
   2551 	    yyval.declarator->func_def = FUNC_TRADITIONAL;
   2552 	}
   2553 #line 2552 "grammar.tab.c"
   2554 break;
   2555 case 86:
   2556 #line 831 "grammar.y"
   2557 	{
   2558 	    (void)sprintf(yyval.text.text, "*%.*s", TEXT_LEN, yystack.l_mark[0].text.text);
   2559 	    yyval.text.begin = yystack.l_mark[-1].text.begin;
   2560 	}
   2561 #line 2560 "grammar.tab.c"
   2562 break;
   2563 case 87:
   2564 #line 836 "grammar.y"
   2565 	{
   2566 	    (void)sprintf(yyval.text.text, "*%.*s%.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yystack.l_mark[0].text.text);
   2567 	    yyval.text.begin = yystack.l_mark[-2].text.begin;
   2568 	}
   2569 #line 2568 "grammar.tab.c"
   2570 break;
   2571 case 88:
   2572 #line 844 "grammar.y"
   2573 	{
   2574 	    strcpy(yyval.text.text, "");
   2575 	    yyval.text.begin = 0L;
   2576 	}
   2577 #line 2576 "grammar.tab.c"
   2578 break;
   2579 case 90:
   2580 #line 853 "grammar.y"
   2581 	{
   2582 	    (void)sprintf(yyval.text.text, "%s ", yystack.l_mark[0].decl_spec.text);
   2583 	    yyval.text.begin = yystack.l_mark[0].decl_spec.begin;
   2584 	    free(yystack.l_mark[0].decl_spec.text);
   2585 	}
   2586 #line 2585 "grammar.tab.c"
   2587 break;
   2588 case 91:
   2589 #line 859 "grammar.y"
   2590 	{
   2591 	    (void)sprintf(yyval.text.text, "%.*s%.*s ", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yystack.l_mark[0].decl_spec.text);
   2592 	    yyval.text.begin = yystack.l_mark[-1].text.begin;
   2593 	    free(yystack.l_mark[0].decl_spec.text);
   2594 	}
   2595 #line 2594 "grammar.tab.c"
   2596 break;
   2597 case 93:
   2598 #line 869 "grammar.y"
   2599 	{
   2600 	    add_ident_list(&yyval.param_list, &yystack.l_mark[-2].param_list, "...");
   2601 	}
   2602 #line 2601 "grammar.tab.c"
   2603 break;
   2604 case 94:
   2605 #line 876 "grammar.y"
   2606 	{
   2607 	    new_param_list(&yyval.param_list, yystack.l_mark[0].parameter);
   2608 	}
   2609 #line 2608 "grammar.tab.c"
   2610 break;
   2611 case 95:
   2612 #line 880 "grammar.y"
   2613 	{
   2614 	    add_param_list(&yyval.param_list, &yystack.l_mark[-2].param_list, yystack.l_mark[0].parameter);
   2615 	}
   2616 #line 2615 "grammar.tab.c"
   2617 break;
   2618 case 96:
   2619 #line 887 "grammar.y"
   2620 	{
   2621 	    check_untagged(&yystack.l_mark[-1].decl_spec);
   2622 	    yyval.parameter = new_parameter(&yystack.l_mark[-1].decl_spec, yystack.l_mark[0].declarator);
   2623 	}
   2624 #line 2623 "grammar.tab.c"
   2625 break;
   2626 case 97:
   2627 #line 892 "grammar.y"
   2628 	{
   2629 	    check_untagged(&yystack.l_mark[-1].decl_spec);
   2630 	    yyval.parameter = new_parameter(&yystack.l_mark[-1].decl_spec, yystack.l_mark[0].declarator);
   2631 	}
   2632 #line 2631 "grammar.tab.c"
   2633 break;
   2634 case 98:
   2635 #line 897 "grammar.y"
   2636 	{
   2637 	    check_untagged(&yystack.l_mark[0].decl_spec);
   2638 	    yyval.parameter = new_parameter(&yystack.l_mark[0].decl_spec, (Declarator *)0);
   2639 	}
   2640 #line 2639 "grammar.tab.c"
   2641 break;
   2642 case 99:
   2643 #line 905 "grammar.y"
   2644 	{
   2645 	    new_ident_list(&yyval.param_list);
   2646 	}
   2647 #line 2646 "grammar.tab.c"
   2648 break;
   2649 case 101:
   2650 #line 913 "grammar.y"
   2651 	{
   2652 	    new_ident_list(&yyval.param_list);
   2653 	    add_ident_list(&yyval.param_list, &yyval.param_list, yystack.l_mark[0].text.text);
   2654 	}
   2655 #line 2654 "grammar.tab.c"
   2656 break;
   2657 case 102:
   2658 #line 918 "grammar.y"
   2659 	{
   2660 	    add_ident_list(&yyval.param_list, &yystack.l_mark[-2].param_list, yystack.l_mark[0].text.text);
   2661 	}
   2662 #line 2661 "grammar.tab.c"
   2663 break;
   2664 case 103:
   2665 #line 925 "grammar.y"
   2666 	{
   2667 	    yyval.text = yystack.l_mark[0].text;
   2668 	}
   2669 #line 2668 "grammar.tab.c"
   2670 break;
   2671 case 104:
   2672 #line 929 "grammar.y"
   2673 	{
   2674 #if OPT_LINTLIBRARY
   2675 	    if (lintLibrary()) { /* Lint doesn't grok C++ ref variables */
   2676 		yyval.text = yystack.l_mark[0].text;
   2677 	    } else
   2678 #endif
   2679 		(void)sprintf(yyval.text.text, "&%.*s", TEXT_LEN, yystack.l_mark[0].text.text);
   2680 	    yyval.text.begin = yystack.l_mark[-1].text.begin;
   2681 	}
   2682 #line 2681 "grammar.tab.c"
   2683 break;
   2684 case 105:
   2685 #line 942 "grammar.y"
   2686 	{
   2687 	    yyval.declarator = new_declarator(yystack.l_mark[0].text.text, "", yystack.l_mark[0].text.begin);
   2688 	}
   2689 #line 2688 "grammar.tab.c"
   2690 break;
   2691 case 106:
   2692 #line 946 "grammar.y"
   2693 	{
   2694 	    yyval.declarator = yystack.l_mark[0].declarator;
   2695 	    (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yyval.declarator->text);
   2696 	    free(yyval.declarator->text);
   2697 	    yyval.declarator->text = xstrdup(buf);
   2698 	    yyval.declarator->begin = yystack.l_mark[-1].text.begin;
   2699 	}
   2700 #line 2699 "grammar.tab.c"
   2701 break;
   2702 case 108:
   2703 #line 958 "grammar.y"
   2704 	{
   2705 	    yyval.declarator = yystack.l_mark[-1].declarator;
   2706 	    (void)sprintf(buf, "(%.*s)", TEXT_LEN, yyval.declarator->text);
   2707 	    free(yyval.declarator->text);
   2708 	    yyval.declarator->text = xstrdup(buf);
   2709 	    yyval.declarator->begin = yystack.l_mark[-2].text.begin;
   2710 	}
   2711 #line 2710 "grammar.tab.c"
   2712 break;
   2713 case 109:
   2714 #line 966 "grammar.y"
   2715 	{
   2716 	    yyval.declarator = yystack.l_mark[-1].declarator;
   2717 	    (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yyval.declarator->text, TEXT_LEN, yystack.l_mark[0].text.text);
   2718 	    free(yyval.declarator->text);
   2719 	    yyval.declarator->text = xstrdup(buf);
   2720 	}
   2721 #line 2720 "grammar.tab.c"
   2722 break;
   2723 case 110:
   2724 #line 973 "grammar.y"
   2725 	{
   2726 	    yyval.declarator = new_declarator(yystack.l_mark[0].text.text, "", yystack.l_mark[0].text.begin);
   2727 	}
   2728 #line 2727 "grammar.tab.c"
   2729 break;
   2730 case 111:
   2731 #line 977 "grammar.y"
   2732 	{
   2733 	    yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-3].declarator->begin);
   2734 	    yyval.declarator->params = yystack.l_mark[-1].param_list;
   2735 	    yyval.declarator->func_stack = yystack.l_mark[-3].declarator;
   2736 	    yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
   2737 	    yyval.declarator->func_def = FUNC_ANSI;
   2738 	}
   2739 #line 2738 "grammar.tab.c"
   2740 break;
   2741 case 112:
   2742 #line 985 "grammar.y"
   2743 	{
   2744 	    yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-2].declarator->begin);
   2745 	    yyval.declarator->func_stack = yystack.l_mark[-2].declarator;
   2746 	    yyval.declarator->head = (yystack.l_mark[-2].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-2].declarator->head;
   2747 	    yyval.declarator->func_def = FUNC_ANSI;
   2748 	}
   2749 #line 2748 "grammar.tab.c"
   2750 break;
   2751 case 113:
   2752 #line 992 "grammar.y"
   2753 	{
   2754 	    Declarator *d;
   2755 
   2756 	    d = new_declarator("", "", yystack.l_mark[-2].text.begin);
   2757 	    yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-2].text.begin);
   2758 	    yyval.declarator->params = yystack.l_mark[-1].param_list;
   2759 	    yyval.declarator->func_stack = d;
   2760 	    yyval.declarator->head = yyval.declarator;
   2761 	    yyval.declarator->func_def = FUNC_ANSI;
   2762 	}
   2763 #line 2762 "grammar.tab.c"
   2764 break;
   2765 case 114:
   2766 #line 1003 "grammar.y"
   2767 	{
   2768 	    Declarator *d;
   2769 
   2770 	    d = new_declarator("", "", yystack.l_mark[-1].text.begin);
   2771 	    yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-1].text.begin);
   2772 	    yyval.declarator->func_stack = d;
   2773 	    yyval.declarator->head = yyval.declarator;
   2774 	    yyval.declarator->func_def = FUNC_ANSI;
   2775 	}
   2776 #line 2775 "grammar.tab.c"
   2777 break;
   2778 #line 2777 "grammar.tab.c"
   2779     default:
   2780         break;
   2781     }
   2782     yystack.s_mark -= yym;
   2783     yystate = *yystack.s_mark;
   2784     yystack.l_mark -= yym;
   2785 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2786     yystack.p_mark -= yym;
   2787 #endif
   2788     yym = yylhs[yyn];
   2789     if (yystate == 0 && yym == 0)
   2790     {
   2791 #if YYDEBUG
   2792         if (yydebug)
   2793         {
   2794             fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   2795 #ifdef YYSTYPE_TOSTRING
   2796 #if YYBTYACC
   2797             if (!yytrial)
   2798 #endif /* YYBTYACC */
   2799                 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
   2800 #endif
   2801             fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
   2802         }
   2803 #endif
   2804         yystate = YYFINAL;
   2805         *++yystack.s_mark = YYFINAL;
   2806         *++yystack.l_mark = yyval;
   2807 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2808         *++yystack.p_mark = yyloc;
   2809 #endif
   2810         if (yychar < 0)
   2811         {
   2812 #if YYBTYACC
   2813             do {
   2814             if (yylvp < yylve)
   2815             {
   2816                 /* we're currently re-reading tokens */
   2817                 yylval = *yylvp++;
   2818 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2819                 yylloc = *yylpp++;
   2820 #endif
   2821                 yychar = *yylexp++;
   2822                 break;
   2823             }
   2824             if (yyps->save)
   2825             {
   2826                 /* in trial mode; save scanner results for future parse attempts */
   2827                 if (yylvp == yylvlim)
   2828                 {   /* Enlarge lexical value queue */
   2829                     size_t p = (size_t) (yylvp - yylvals);
   2830                     size_t s = (size_t) (yylvlim - yylvals);
   2831 
   2832                     s += YYLVQUEUEGROWTH;
   2833                     if ((yylexemes = (YYINT *)realloc(yylexemes, s * sizeof(YYINT))) == NULL)
   2834                         goto yyenomem;
   2835                     if ((yylvals   = (YYSTYPE *)realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
   2836                         goto yyenomem;
   2837 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2838                     if ((yylpsns   = (YYLTYPE *)realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
   2839                         goto yyenomem;
   2840 #endif
   2841                     yylvp   = yylve = yylvals + p;
   2842                     yylvlim = yylvals + s;
   2843 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2844                     yylpp   = yylpe = yylpsns + p;
   2845                     yylplim = yylpsns + s;
   2846 #endif
   2847                     yylexp  = yylexemes + p;
   2848                 }
   2849                 *yylexp = (YYINT) YYLEX;
   2850                 *yylvp++ = yylval;
   2851                 yylve++;
   2852 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2853                 *yylpp++ = yylloc;
   2854                 yylpe++;
   2855 #endif
   2856                 yychar = *yylexp++;
   2857                 break;
   2858             }
   2859             /* normal operation, no conflict encountered */
   2860 #endif /* YYBTYACC */
   2861             yychar = YYLEX;
   2862 #if YYBTYACC
   2863             } while (0);
   2864 #endif /* YYBTYACC */
   2865             if (yychar < 0) yychar = YYEOF;
   2866 #if YYDEBUG
   2867             if (yydebug)
   2868             {
   2869                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   2870                 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)\n",
   2871                                 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
   2872             }
   2873 #endif
   2874         }
   2875         if (yychar == YYEOF) goto yyaccept;
   2876         goto yyloop;
   2877     }
   2878     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
   2879             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
   2880         yystate = yytable[yyn];
   2881     else
   2882         yystate = yydgoto[yym];
   2883 #if YYDEBUG
   2884     if (yydebug)
   2885     {
   2886         fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
   2887 #ifdef YYSTYPE_TOSTRING
   2888 #if YYBTYACC
   2889         if (!yytrial)
   2890 #endif /* YYBTYACC */
   2891             fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
   2892 #endif
   2893         fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
   2894     }
   2895 #endif
   2896     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   2897     *++yystack.s_mark = (YYINT) yystate;
   2898     *++yystack.l_mark = yyval;
   2899 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2900     *++yystack.p_mark = yyloc;
   2901 #endif
   2902     goto yyloop;
   2903 #if YYBTYACC
   2904 
   2905     /* Reduction declares that this path is valid. Set yypath and do a full parse */
   2906 yyvalid:
   2907     if (yypath) YYABORT;
   2908     while (yyps->save)
   2909     {
   2910         YYParseState *save = yyps->save;
   2911         yyps->save = save->save;
   2912         save->save = yypath;
   2913         yypath = save;
   2914     }
   2915 #if YYDEBUG
   2916     if (yydebug)
   2917         fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
   2918                         YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
   2919 #endif
   2920     if (yyerrctx)
   2921     {
   2922         yyFreeState(yyerrctx);
   2923         yyerrctx = NULL;
   2924     }
   2925     yylvp          = yylvals + yypath->lexeme;
   2926 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2927     yylpp          = yylpsns + yypath->lexeme;
   2928 #endif
   2929     yylexp         = yylexemes + yypath->lexeme;
   2930     yychar         = YYEMPTY;
   2931     yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
   2932     memcpy (yystack.s_base, yypath->yystack.s_base, (size_t) (yystack.s_mark - yystack.s_base + 1) * sizeof(YYINT));
   2933     yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
   2934     memcpy (yystack.l_base, yypath->yystack.l_base, (size_t) (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
   2935 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2936     yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
   2937     memcpy (yystack.p_base, yypath->yystack.p_base, (size_t) (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
   2938 #endif
   2939     yystate        = yypath->state;
   2940     goto yyloop;
   2941 #endif /* YYBTYACC */
   2942 
   2943 yyoverflow:
   2944     YYERROR_CALL("yacc stack overflow");
   2945 #if YYBTYACC
   2946     goto yyabort_nomem;
   2947 yyenomem:
   2948     YYERROR_CALL("memory exhausted");
   2949 yyabort_nomem:
   2950 #endif /* YYBTYACC */
   2951     yyresult = 2;
   2952     goto yyreturn;
   2953 
   2954 yyabort:
   2955     yyresult = 1;
   2956     goto yyreturn;
   2957 
   2958 yyaccept:
   2959 #if YYBTYACC
   2960     if (yyps->save) goto yyvalid;
   2961 #endif /* YYBTYACC */
   2962     yyresult = 0;
   2963 
   2964 yyreturn:
   2965 #if defined(YYDESTRUCT_CALL)
   2966     if (yychar != YYEOF && yychar != YYEMPTY)
   2967 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2968         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
   2969 #else
   2970         YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
   2971 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   2972 
   2973     {
   2974         YYSTYPE *pv;
   2975 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
   2976         YYLTYPE *pp;
   2977 
   2978         for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
   2979              YYDESTRUCT_CALL("cleanup: discarding state",
   2980                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
   2981 #else
   2982         for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
   2983              YYDESTRUCT_CALL("cleanup: discarding state",
   2984                              yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
   2985 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
   2986     }
   2987 #endif /* defined(YYDESTRUCT_CALL) */
   2988 
   2989 #if YYBTYACC
   2990     if (yyerrctx)
   2991     {
   2992         yyFreeState(yyerrctx);
   2993         yyerrctx = NULL;
   2994     }
   2995     while (yyps)
   2996     {
   2997         YYParseState *save = yyps;
   2998         yyps = save->save;
   2999         save->save = NULL;
   3000         yyFreeState(save);
   3001     }
   3002     while (yypath)
   3003     {
   3004         YYParseState *save = yypath;
   3005         yypath = save->save;
   3006         save->save = NULL;
   3007         yyFreeState(save);
   3008     }
   3009 #endif /* YYBTYACC */
   3010     yyfreestack(&yystack);
   3011     return (yyresult);
   3012 }
   3013