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