Home | History | Annotate | Line # | Download | only in yacc
grammar.tab.c revision 1.4.8.1
      1  1.4.8.1  perseant /*	$NetBSD: grammar.tab.c,v 1.4.8.1 2025/08/02 05:20:59 perseant 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.1  christos /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
      6      1.1  christos 
      7      1.1  christos #define YYBYACC 1
      8      1.4  christos #define YYMAJOR 2
      9      1.4  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 
     19      1.1  christos #ifndef yyparse
     20      1.1  christos #define yyparse    grammar_parse
     21      1.1  christos #endif /* yyparse */
     22      1.1  christos 
     23      1.1  christos #ifndef yylex
     24      1.1  christos #define yylex      grammar_lex
     25      1.1  christos #endif /* yylex */
     26      1.1  christos 
     27      1.1  christos #ifndef yyerror
     28      1.1  christos #define yyerror    grammar_error
     29      1.1  christos #endif /* yyerror */
     30      1.1  christos 
     31      1.1  christos #ifndef yychar
     32      1.1  christos #define yychar     grammar_char
     33      1.1  christos #endif /* yychar */
     34      1.1  christos 
     35      1.1  christos #ifndef yyval
     36      1.1  christos #define yyval      grammar_val
     37      1.1  christos #endif /* yyval */
     38      1.1  christos 
     39      1.1  christos #ifndef yylval
     40      1.1  christos #define yylval     grammar_lval
     41      1.1  christos #endif /* yylval */
     42      1.1  christos 
     43      1.1  christos #ifndef yydebug
     44      1.1  christos #define yydebug    grammar_debug
     45      1.1  christos #endif /* yydebug */
     46      1.1  christos 
     47      1.1  christos #ifndef yynerrs
     48      1.1  christos #define yynerrs    grammar_nerrs
     49      1.1  christos #endif /* yynerrs */
     50      1.1  christos 
     51      1.1  christos #ifndef yyerrflag
     52      1.1  christos #define yyerrflag  grammar_errflag
     53      1.1  christos #endif /* yyerrflag */
     54      1.1  christos 
     55      1.1  christos #ifndef yylhs
     56      1.1  christos #define yylhs      grammar_lhs
     57      1.1  christos #endif /* yylhs */
     58      1.1  christos 
     59      1.1  christos #ifndef yylen
     60      1.1  christos #define yylen      grammar_len
     61      1.1  christos #endif /* yylen */
     62      1.1  christos 
     63      1.1  christos #ifndef yydefred
     64      1.1  christos #define yydefred   grammar_defred
     65      1.1  christos #endif /* yydefred */
     66      1.1  christos 
     67      1.1  christos #ifndef yydgoto
     68      1.1  christos #define yydgoto    grammar_dgoto
     69      1.1  christos #endif /* yydgoto */
     70      1.1  christos 
     71      1.1  christos #ifndef yysindex
     72      1.1  christos #define yysindex   grammar_sindex
     73      1.1  christos #endif /* yysindex */
     74      1.1  christos 
     75      1.1  christos #ifndef yyrindex
     76      1.1  christos #define yyrindex   grammar_rindex
     77      1.1  christos #endif /* yyrindex */
     78      1.1  christos 
     79      1.1  christos #ifndef yygindex
     80      1.1  christos #define yygindex   grammar_gindex
     81      1.1  christos #endif /* yygindex */
     82      1.1  christos 
     83      1.1  christos #ifndef yytable
     84      1.1  christos #define yytable    grammar_table
     85      1.1  christos #endif /* yytable */
     86      1.1  christos 
     87      1.1  christos #ifndef yycheck
     88      1.1  christos #define yycheck    grammar_check
     89      1.1  christos #endif /* yycheck */
     90      1.1  christos 
     91      1.1  christos #ifndef yyname
     92      1.1  christos #define yyname     grammar_name
     93      1.1  christos #endif /* yyname */
     94      1.1  christos 
     95      1.1  christos #ifndef yyrule
     96      1.1  christos #define yyrule     grammar_rule
     97      1.1  christos #endif /* yyrule */
     98      1.1  christos #define YYPREFIX "grammar_"
     99      1.1  christos 
    100      1.1  christos #define YYPURE 0
    101      1.1  christos 
    102      1.1  christos #line 9 "grammar.y"
    103      1.1  christos #ifdef YYBISON
    104      1.1  christos #include <stdlib.h>
    105      1.1  christos #define YYSTYPE_IS_DECLARED
    106      1.1  christos #define yyerror yaccError
    107      1.1  christos #endif
    108      1.1  christos 
    109      1.1  christos #if defined(YYBISON) || !defined(YYBYACC)
    110      1.1  christos static void yyerror(const char *s);
    111      1.1  christos #endif
    112      1.1  christos #line 81 "grammar.y"
    113      1.1  christos #include <stdio.h>
    114      1.1  christos #include <ctype.h>
    115      1.1  christos #include <string.h>
    116      1.1  christos 
    117      1.1  christos #define OPT_LINTLIBRARY 1
    118      1.1  christos 
    119      1.1  christos #ifndef TRUE
    120      1.1  christos #define	TRUE	(1)
    121      1.1  christos #endif
    122      1.1  christos 
    123      1.1  christos #ifndef FALSE
    124      1.1  christos #define	FALSE	(0)
    125      1.1  christos #endif
    126      1.1  christos 
    127      1.1  christos /* #include "cproto.h" */
    128      1.1  christos #define MAX_TEXT_SIZE 1024
    129      1.3  christos #define TEXT_LEN (MAX_TEXT_SIZE / 2 - 3)
    130      1.1  christos 
    131      1.1  christos /* Prototype styles */
    132      1.1  christos #if OPT_LINTLIBRARY
    133      1.1  christos #define PROTO_ANSI_LLIB		-2	/* form ANSI lint-library source */
    134      1.1  christos #define PROTO_LINTLIBRARY	-1	/* form lint-library source */
    135      1.1  christos #endif
    136      1.1  christos #define PROTO_NONE		0	/* do not output any prototypes */
    137      1.1  christos #define PROTO_TRADITIONAL	1	/* comment out parameters */
    138      1.1  christos #define PROTO_ABSTRACT		2	/* comment out parameter names */
    139      1.1  christos #define PROTO_ANSI		3	/* ANSI C prototype */
    140      1.1  christos 
    141      1.1  christos typedef int PrototypeStyle;
    142      1.1  christos 
    143      1.1  christos typedef char boolean;
    144      1.1  christos 
    145      1.1  christos extern boolean types_out;
    146      1.1  christos extern PrototypeStyle proto_style;
    147      1.1  christos 
    148      1.1  christos #define ansiLintLibrary() (proto_style == PROTO_ANSI_LLIB)
    149      1.1  christos #define knrLintLibrary()  (proto_style == PROTO_LINTLIBRARY)
    150      1.1  christos #define lintLibrary()     (knrLintLibrary() || ansiLintLibrary())
    151      1.1  christos 
    152      1.1  christos #if OPT_LINTLIBRARY
    153      1.1  christos #define FUNC_UNKNOWN		-1	/* unspecified */
    154      1.1  christos #else
    155      1.1  christos #define FUNC_UNKNOWN		0	/* unspecified (same as FUNC_NONE) */
    156      1.1  christos #endif
    157      1.1  christos #define FUNC_NONE		0	/* not a function definition */
    158      1.1  christos #define FUNC_TRADITIONAL	1	/* traditional style */
    159      1.1  christos #define FUNC_ANSI		2	/* ANSI style */
    160      1.1  christos #define FUNC_BOTH		3	/* both styles */
    161      1.1  christos 
    162      1.1  christos typedef int FuncDefStyle;
    163      1.1  christos 
    164      1.1  christos /* Source file text */
    165      1.1  christos typedef struct text {
    166      1.1  christos     char text[MAX_TEXT_SIZE];	/* source text */
    167      1.1  christos     long begin; 		/* offset in temporary file */
    168      1.1  christos } Text;
    169      1.1  christos 
    170      1.1  christos /* Declaration specifier flags */
    171      1.1  christos #define DS_NONE 	0	/* default */
    172      1.1  christos #define DS_EXTERN	1	/* contains "extern" specifier */
    173      1.1  christos #define DS_STATIC	2	/* contains "static" specifier */
    174      1.1  christos #define DS_CHAR 	4	/* contains "char" type specifier */
    175      1.1  christos #define DS_SHORT	8	/* contains "short" type specifier */
    176      1.1  christos #define DS_FLOAT	16	/* contains "float" type specifier */
    177      1.1  christos #define DS_INLINE	32	/* contains "inline" specifier */
    178      1.1  christos #define DS_JUNK 	64	/* we're not interested in this declaration */
    179      1.1  christos 
    180      1.1  christos /* This structure stores information about a declaration specifier. */
    181      1.1  christos typedef struct decl_spec {
    182      1.1  christos     unsigned short flags;	/* flags defined above */
    183      1.1  christos     char *text; 		/* source text */
    184      1.1  christos     long begin; 		/* offset in temporary file */
    185      1.1  christos } DeclSpec;
    186      1.1  christos 
    187      1.1  christos /* This is a list of function parameters. */
    188      1.1  christos typedef struct _ParameterList {
    189      1.1  christos     struct parameter *first;	/* pointer to first parameter in list */
    190      1.1  christos     struct parameter *last;	/* pointer to last parameter in list */
    191      1.1  christos     long begin_comment; 	/* begin offset of comment */
    192      1.1  christos     long end_comment;		/* end offset of comment */
    193      1.1  christos     char *comment;		/* comment at start of parameter list */
    194      1.1  christos } ParameterList;
    195      1.1  christos 
    196      1.1  christos /* This structure stores information about a declarator. */
    197      1.1  christos typedef struct _Declarator {
    198      1.1  christos     char *name; 			/* name of variable or function */
    199      1.1  christos     char *text; 			/* source text */
    200      1.1  christos     long begin; 			/* offset in temporary file */
    201      1.1  christos     long begin_comment; 		/* begin offset of comment */
    202      1.1  christos     long end_comment;			/* end offset of comment */
    203      1.1  christos     FuncDefStyle func_def;		/* style of function definition */
    204      1.1  christos     ParameterList params;		/* function parameters */
    205      1.1  christos     boolean pointer;			/* TRUE if it declares a pointer */
    206      1.1  christos     struct _Declarator *head;		/* head function declarator */
    207      1.1  christos     struct _Declarator *func_stack;	/* stack of function declarators */
    208      1.1  christos     struct _Declarator *next;		/* next declarator in list */
    209      1.1  christos } Declarator;
    210      1.1  christos 
    211      1.1  christos /* This structure stores information about a function parameter. */
    212      1.1  christos typedef struct parameter {
    213      1.1  christos     struct parameter *next;	/* next parameter in list */
    214      1.1  christos     DeclSpec decl_spec;
    215      1.1  christos     Declarator *declarator;
    216      1.1  christos     char *comment;		/* comment following the parameter */
    217      1.1  christos } Parameter;
    218      1.1  christos 
    219      1.1  christos /* This is a list of declarators. */
    220      1.1  christos typedef struct declarator_list {
    221      1.1  christos     Declarator *first;		/* pointer to first declarator in list */
    222      1.1  christos     Declarator *last;		/* pointer to last declarator in list */
    223      1.1  christos } DeclaratorList;
    224      1.1  christos 
    225      1.1  christos /* #include "symbol.h" */
    226      1.1  christos typedef struct symbol {
    227      1.1  christos     struct symbol *next;	/* next symbol in list */
    228      1.1  christos     char *name; 		/* name of symbol */
    229      1.1  christos     char *value;		/* value of symbol (for defines) */
    230      1.1  christos     short flags;		/* symbol attributes */
    231      1.1  christos } Symbol;
    232      1.1  christos 
    233      1.1  christos /* parser stack entry type */
    234      1.1  christos typedef union {
    235      1.1  christos     Text text;
    236      1.1  christos     DeclSpec decl_spec;
    237      1.1  christos     Parameter *parameter;
    238      1.1  christos     ParameterList param_list;
    239      1.1  christos     Declarator *declarator;
    240      1.1  christos     DeclaratorList decl_list;
    241      1.1  christos } YYSTYPE;
    242      1.1  christos 
    243      1.1  christos /* The hash table length should be a prime number. */
    244      1.1  christos #define SYM_MAX_HASH 251
    245      1.1  christos 
    246      1.1  christos typedef struct symbol_table {
    247      1.1  christos     Symbol *bucket[SYM_MAX_HASH];	/* hash buckets */
    248      1.1  christos } SymbolTable;
    249      1.1  christos 
    250      1.1  christos extern SymbolTable *new_symbol_table	/* Create symbol table */
    251      1.1  christos 	(void);
    252      1.1  christos extern void free_symbol_table		/* Destroy symbol table */
    253      1.1  christos 	(SymbolTable *s);
    254      1.1  christos extern Symbol *find_symbol		/* Lookup symbol name */
    255      1.1  christos 	(SymbolTable *s, const char *n);
    256      1.1  christos extern Symbol *new_symbol		/* Define new symbol */
    257      1.1  christos 	(SymbolTable *s, const char *n, const char *v, int f);
    258      1.1  christos 
    259      1.1  christos /* #include "semantic.h" */
    260      1.1  christos extern void new_decl_spec (DeclSpec *, const char *, long, int);
    261      1.1  christos extern void free_decl_spec (DeclSpec *);
    262      1.1  christos extern void join_decl_specs (DeclSpec *, DeclSpec *, DeclSpec *);
    263      1.1  christos extern void check_untagged (DeclSpec *);
    264      1.1  christos extern Declarator *new_declarator (const char *, const char *, long);
    265      1.1  christos extern void free_declarator (Declarator *);
    266      1.1  christos extern void new_decl_list (DeclaratorList *, Declarator *);
    267      1.1  christos extern void free_decl_list (DeclaratorList *);
    268      1.1  christos extern void add_decl_list (DeclaratorList *, DeclaratorList *, Declarator *);
    269      1.1  christos extern Parameter *new_parameter (DeclSpec *, Declarator *);
    270      1.1  christos extern void free_parameter (Parameter *);
    271      1.1  christos extern void new_param_list (ParameterList *, Parameter *);
    272      1.1  christos extern void free_param_list (ParameterList *);
    273      1.1  christos extern void add_param_list (ParameterList *, ParameterList *, Parameter *);
    274      1.1  christos extern void new_ident_list (ParameterList *);
    275      1.1  christos extern void add_ident_list (ParameterList *, ParameterList *, const char *);
    276      1.1  christos extern void set_param_types (ParameterList *, DeclSpec *, DeclaratorList *);
    277      1.1  christos extern void gen_declarations (DeclSpec *, DeclaratorList *);
    278      1.1  christos extern void gen_prototype (DeclSpec *, Declarator *);
    279      1.1  christos extern void gen_func_declarator (Declarator *);
    280      1.1  christos extern void gen_func_definition (DeclSpec *, Declarator *);
    281      1.1  christos 
    282      1.1  christos extern void init_parser     (void);
    283      1.1  christos extern void process_file    (FILE *infile, char *name);
    284      1.1  christos extern char *cur_text       (void);
    285      1.1  christos extern char *cur_file_name  (void);
    286      1.1  christos extern char *implied_typedef (void);
    287      1.1  christos extern void include_file    (char *name, int convert);
    288      1.1  christos extern char *supply_parm    (int count);
    289      1.1  christos extern char *xstrdup        (const char *);
    290      1.1  christos extern int already_declared (char *name);
    291      1.1  christos extern int is_actual_func   (Declarator *d);
    292      1.1  christos extern int lint_ellipsis    (Parameter *p);
    293      1.1  christos extern int want_typedef     (void);
    294      1.1  christos extern void begin_tracking  (void);
    295      1.1  christos extern void begin_typedef   (void);
    296      1.1  christos extern void copy_typedef    (char *s);
    297      1.1  christos extern void ellipsis_varargs (Declarator *d);
    298      1.1  christos extern void end_typedef     (void);
    299      1.1  christos extern void flush_varargs   (void);
    300      1.1  christos extern void fmt_library     (int code);
    301      1.1  christos extern void imply_typedef   (const char *s);
    302      1.1  christos extern void indent          (FILE *outf);
    303      1.1  christos extern void put_blankline   (FILE *outf);
    304      1.1  christos extern void put_body        (FILE *outf, DeclSpec *decl_spec, Declarator *declarator);
    305      1.1  christos extern void put_char        (FILE *outf, int c);
    306      1.1  christos extern void put_error       (void);
    307      1.1  christos extern void put_newline     (FILE *outf);
    308      1.1  christos extern void put_padded      (FILE *outf, const char *s);
    309      1.1  christos extern void put_string      (FILE *outf, const char *s);
    310      1.1  christos extern void track_in        (void);
    311      1.1  christos 
    312      1.1  christos extern boolean file_comments;
    313      1.1  christos extern FuncDefStyle func_style;
    314      1.1  christos extern char base_file[];
    315      1.1  christos 
    316      1.1  christos extern	int	yylex (void);
    317      1.1  christos 
    318      1.1  christos /* declaration specifier attributes for the typedef statement currently being
    319      1.1  christos  * scanned
    320      1.1  christos  */
    321      1.1  christos static int cur_decl_spec_flags;
    322      1.1  christos 
    323      1.1  christos /* pointer to parameter list for the current function definition */
    324      1.1  christos static ParameterList *func_params;
    325      1.1  christos 
    326      1.1  christos /* A parser semantic action sets this pointer to the current declarator in
    327      1.1  christos  * a function parameter declaration in order to catch any comments following
    328      1.1  christos  * the parameter declaration on the same line.  If the lexer scans a comment
    329      1.1  christos  * and <cur_declarator> is not NULL, then the comment is attached to the
    330      1.1  christos  * declarator.  To ignore subsequent comments, the lexer sets this to NULL
    331      1.1  christos  * after scanning a comment or end of line.
    332      1.1  christos  */
    333      1.1  christos static Declarator *cur_declarator;
    334      1.1  christos 
    335      1.1  christos /* temporary string buffer */
    336      1.1  christos static char buf[MAX_TEXT_SIZE];
    337      1.1  christos 
    338      1.1  christos /* table of typedef names */
    339      1.1  christos static SymbolTable *typedef_names;
    340      1.1  christos 
    341      1.1  christos /* table of define names */
    342      1.1  christos static SymbolTable *define_names;
    343      1.1  christos 
    344      1.1  christos /* table of type qualifiers */
    345      1.1  christos static SymbolTable *type_qualifiers;
    346      1.1  christos 
    347      1.1  christos /* information about the current input file */
    348      1.1  christos typedef struct {
    349      1.1  christos     char *base_name;		/* base input file name */
    350      1.1  christos     char *file_name;		/* current file name */
    351      1.1  christos     FILE *file; 		/* input file */
    352      1.1  christos     unsigned line_num;		/* current line number in input file */
    353      1.1  christos     FILE *tmp_file;		/* temporary file */
    354      1.1  christos     long begin_comment; 	/* tmp file offset after last written ) or ; */
    355      1.1  christos     long end_comment;		/* tmp file offset after last comment */
    356      1.1  christos     boolean convert;		/* if TRUE, convert function definitions */
    357      1.1  christos     boolean changed;		/* TRUE if conversion done in this file */
    358      1.1  christos } IncludeStack;
    359      1.1  christos 
    360      1.1  christos static IncludeStack *cur_file;	/* current input file */
    361      1.1  christos 
    362      1.1  christos /* #include "yyerror.c" */
    363      1.1  christos 
    364      1.1  christos static int haveAnsiParam (void);
    365      1.1  christos 
    366      1.1  christos 
    367      1.1  christos /* Flags to enable us to find if a procedure returns a value.
    368      1.1  christos  */
    369      1.1  christos static int return_val;	/* nonzero on BRACES iff return-expression found */
    370      1.1  christos 
    371      1.1  christos static const char *
    372      1.1  christos dft_decl_spec (void)
    373      1.1  christos {
    374      1.1  christos     return (lintLibrary() && !return_val) ? "void" : "int";
    375      1.1  christos }
    376      1.1  christos 
    377      1.1  christos static int
    378      1.1  christos haveAnsiParam (void)
    379      1.1  christos {
    380      1.1  christos     Parameter *p;
    381      1.1  christos     if (func_params != 0) {
    382      1.1  christos 	for (p = func_params->first; p != 0; p = p->next) {
    383      1.1  christos 	    if (p->declarator->func_def == FUNC_ANSI) {
    384      1.1  christos 		return TRUE;
    385      1.1  christos 	    }
    386      1.1  christos 	}
    387      1.1  christos     }
    388      1.1  christos     return FALSE;
    389      1.1  christos }
    390      1.3  christos #line 389 "grammar.tab.c"
    391      1.1  christos 
    392      1.1  christos /* compatibility with bison */
    393      1.1  christos #ifdef YYPARSE_PARAM
    394      1.1  christos /* compatibility with FreeBSD */
    395      1.1  christos # ifdef YYPARSE_PARAM_TYPE
    396      1.1  christos #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
    397      1.1  christos # else
    398      1.1  christos #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
    399      1.1  christos # endif
    400      1.1  christos #else
    401      1.1  christos # define YYPARSE_DECL() yyparse(void)
    402      1.1  christos #endif
    403      1.1  christos 
    404      1.1  christos /* Parameters sent to lex. */
    405      1.1  christos #ifdef YYLEX_PARAM
    406      1.1  christos # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
    407      1.1  christos # define YYLEX yylex(YYLEX_PARAM)
    408      1.1  christos #else
    409      1.1  christos # define YYLEX_DECL() yylex(void)
    410      1.1  christos # define YYLEX yylex()
    411      1.1  christos #endif
    412      1.1  christos 
    413      1.1  christos /* Parameters sent to yyerror. */
    414      1.1  christos #ifndef YYERROR_DECL
    415      1.1  christos #define YYERROR_DECL() yyerror(const char *s)
    416      1.1  christos #endif
    417      1.1  christos #ifndef YYERROR_CALL
    418      1.1  christos #define YYERROR_CALL(msg) yyerror(msg)
    419      1.1  christos #endif
    420      1.1  christos 
    421      1.1  christos extern int YYPARSE_DECL();
    422      1.1  christos 
    423      1.1  christos #define T_IDENTIFIER 257
    424      1.1  christos #define T_TYPEDEF_NAME 258
    425      1.1  christos #define T_DEFINE_NAME 259
    426      1.1  christos #define T_AUTO 260
    427      1.1  christos #define T_EXTERN 261
    428      1.1  christos #define T_REGISTER 262
    429      1.1  christos #define T_STATIC 263
    430      1.1  christos #define T_TYPEDEF 264
    431      1.1  christos #define T_INLINE 265
    432      1.1  christos #define T_EXTENSION 266
    433      1.1  christos #define T_CHAR 267
    434      1.1  christos #define T_DOUBLE 268
    435      1.1  christos #define T_FLOAT 269
    436      1.1  christos #define T_INT 270
    437      1.1  christos #define T_VOID 271
    438      1.1  christos #define T_LONG 272
    439      1.1  christos #define T_SHORT 273
    440      1.1  christos #define T_SIGNED 274
    441      1.1  christos #define T_UNSIGNED 275
    442      1.1  christos #define T_ENUM 276
    443      1.1  christos #define T_STRUCT 277
    444      1.1  christos #define T_UNION 278
    445      1.1  christos #define T_Bool 279
    446      1.1  christos #define T_Complex 280
    447      1.1  christos #define T_Imaginary 281
    448      1.1  christos #define T_TYPE_QUALIFIER 282
    449      1.1  christos #define T_BRACKETS 283
    450      1.1  christos #define T_LBRACE 284
    451      1.1  christos #define T_MATCHRBRACE 285
    452      1.1  christos #define T_ELLIPSIS 286
    453      1.1  christos #define T_INITIALIZER 287
    454      1.1  christos #define T_STRING_LITERAL 288
    455      1.1  christos #define T_ASM 289
    456      1.1  christos #define T_ASMARG 290
    457      1.1  christos #define T_VA_DCL 291
    458      1.1  christos #define YYERRCODE 256
    459  1.4.8.1  perseant typedef int YYINT;
    460      1.1  christos static const YYINT grammar_lhs[] = {                     -1,
    461      1.1  christos     0,    0,   26,   26,   27,   27,   27,   27,   27,   27,
    462      1.1  christos    27,   31,   30,   30,   28,   28,   34,   28,   32,   32,
    463      1.1  christos    33,   33,   35,   35,   37,   38,   29,   39,   29,   36,
    464      1.1  christos    36,   36,   40,   40,    1,    1,    2,    2,    2,    3,
    465      1.1  christos     3,    3,    3,    3,    3,    4,    4,    4,    4,    4,
    466      1.1  christos     4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
    467      1.1  christos     5,    5,    6,    6,    6,   19,   19,    8,    8,    9,
    468      1.1  christos    41,    9,    7,    7,    7,   25,   23,   23,   10,   10,
    469      1.1  christos    11,   11,   11,   11,   11,   20,   20,   21,   21,   22,
    470      1.1  christos    22,   14,   14,   15,   15,   16,   16,   16,   17,   17,
    471      1.1  christos    18,   18,   24,   24,   12,   12,   12,   13,   13,   13,
    472      1.1  christos    13,   13,   13,   13,
    473      1.1  christos };
    474      1.1  christos static const YYINT grammar_len[] = {                      2,
    475      1.1  christos     0,    1,    1,    2,    1,    1,    1,    1,    3,    2,
    476      1.1  christos     2,    2,    3,    3,    2,    3,    0,    5,    2,    1,
    477      1.1  christos     0,    1,    1,    3,    0,    0,    7,    0,    5,    0,
    478      1.1  christos     1,    1,    1,    2,    1,    2,    1,    1,    1,    1,
    479      1.1  christos     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    480      1.1  christos     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    481      1.1  christos     1,    1,    3,    2,    2,    1,    1,    1,    3,    1,
    482      1.1  christos     0,    4,    3,    2,    2,    1,    1,    1,    2,    1,
    483      1.1  christos     1,    3,    2,    4,    4,    2,    3,    0,    1,    1,
    484      1.1  christos     2,    1,    3,    1,    3,    2,    2,    1,    0,    1,
    485      1.1  christos     1,    3,    1,    2,    1,    2,    1,    3,    2,    1,
    486      1.1  christos     4,    3,    3,    2,
    487      1.1  christos };
    488      1.1  christos static const YYINT grammar_defred[] = {                   0,
    489      1.1  christos     0,    0,    0,    0,   77,    0,   62,   40,    0,   42,
    490      1.1  christos    43,   20,   44,    0,   46,   47,   48,   49,   54,   50,
    491      1.1  christos    51,   52,   53,   76,   66,   67,   55,   56,   57,   61,
    492      1.1  christos     0,    7,    0,    0,   35,   37,   38,   39,   59,   60,
    493      1.1  christos    28,    0,    0,    0,  103,   81,    0,    0,    3,    5,
    494      1.1  christos     6,    8,    0,   10,   11,   78,    0,   90,    0,    0,
    495      1.1  christos   104,    0,   19,    0,   41,   45,   15,   36,    0,   68,
    496      1.1  christos     0,    0,    0,   83,    0,    0,   64,    0,    0,   74,
    497      1.1  christos     4,   58,    0,   82,   87,   91,    0,   14,   13,    9,
    498      1.1  christos    16,    0,   71,    0,   31,   33,    0,    0,    0,    0,
    499      1.1  christos     0,   94,    0,    0,  101,   12,   63,   73,    0,    0,
    500      1.1  christos    69,    0,    0,    0,   34,    0,  110,   96,   97,    0,
    501      1.1  christos     0,   84,    0,   85,    0,   23,    0,    0,   72,   26,
    502      1.1  christos    29,  114,    0,    0,    0,  109,    0,   93,   95,  102,
    503      1.1  christos    18,    0,    0,  108,  113,  112,    0,   24,   27,  111,
    504      1.1  christos };
    505      1.1  christos static const YYINT grammar_dgoto[] = {                   33,
    506      1.1  christos    87,   35,   36,   37,   38,   39,   40,   69,   70,   41,
    507      1.1  christos    42,  119,  120,  100,  101,  102,  103,  104,   43,   44,
    508      1.1  christos    59,   60,   45,   46,   47,   48,   49,   50,   51,   52,
    509      1.1  christos    77,   53,  127,  109,  128,   97,   94,  143,   72,   98,
    510      1.1  christos   112,
    511      1.1  christos };
    512      1.1  christos static const YYINT grammar_sindex[] = {                  -2,
    513      1.1  christos    -3,   27, -239, -177,    0,    0,    0,    0, -274,    0,
    514      1.1  christos     0,    0,    0, -246,    0,    0,    0,    0,    0,    0,
    515      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    516      1.1  christos  -266,    0,    0,  455,    0,    0,    0,    0,    0,    0,
    517      1.1  christos     0,  -35, -245,  128,    0,    0, -245,   -2,    0,    0,
    518      1.1  christos     0,    0,  642,    0,    0,    0,  -15,    0,  -12, -239,
    519      1.1  christos     0,  590,    0,  -27,    0,    0,    0,    0,  -10,    0,
    520      1.1  christos   -11,  534,  -72,    0, -237, -232,    0,  -35, -232,    0,
    521      1.1  christos     0,    0,  642,    0,    0,    0,  455,    0,    0,    0,
    522      1.1  christos     0,   27,    0,  534,    0,    0, -222,  617,  209,   34,
    523      1.1  christos    39,    0,   44,   42,    0,    0,    0,    0,   27,  -11,
    524      1.1  christos     0, -200, -196, -195,    0,  174,    0,    0,    0,  -33,
    525      1.1  christos   243,    0,  561,    0, -177,    0,   33,   49,    0,    0,
    526      1.1  christos     0,    0,   53,   55,  417,    0,  -33,    0,    0,    0,
    527      1.1  christos     0,   27, -188,    0,    0,    0,   57,    0,    0,    0,
    528      1.1  christos };
    529      1.1  christos static const YYINT grammar_rindex[] = {                  99,
    530      1.1  christos     0,    0,  275,    0,    0,  -38,    0,    0,  481,    0,
    531      1.1  christos     0,    0,    0,  509,    0,    0,    0,    0,    0,    0,
    532      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    533      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    534      1.1  christos     0,   30,    0,    0,    0,    0,    0,  101,    0,    0,
    535      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,  343,  309,
    536      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    537      1.1  christos    98, -182,   62,    0,    0,  133,    0,   64,  379,    0,
    538      1.1  christos     0,    0,   -5,    0,    0,    0,    0,    0,    0,    0,
    539      1.1  christos     0,    0,    0, -182,    0,    0,    0, -180,  -19,    0,
    540      1.1  christos    65,    0,    0,   68,    0,    0,    0,    0,   51,    9,
    541      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,  -13,
    542      1.1  christos    19,    0,    0,    0,    0,    0,    0,   52,    0,    0,
    543      1.1  christos     0,    0,    0,    0,    0,    0,   35,    0,    0,    0,
    544      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    545      1.1  christos };
    546      1.1  christos static const YYINT grammar_gindex[] = {                   0,
    547      1.1  christos    11,  -17,    0,    0,   13,    0,    0,    0,   20,    8,
    548      1.1  christos   -43,   -1,   -8,  -89,    0,   -9,    0,    0,    0,  -44,
    549      1.1  christos     0,    0,    4,    0,    0,    0,   70,  -53,    0,    0,
    550      1.1  christos   -18,    0,    0,    0,    0,   22,    0,    0,    0,    0,
    551      1.1  christos     0,
    552      1.1  christos };
    553      1.1  christos #define YYTABLESIZE 924
    554      1.1  christos static const YYINT grammar_table[] = {                   58,
    555      1.1  christos    78,   58,   58,   58,   73,   58,  135,   61,   88,   57,
    556      1.1  christos    34,    5,   56,   62,   85,   58,   68,   63,   96,    7,
    557      1.1  christos    58,   98,   78,   64,   98,   84,  134,  107,   80,    3,
    558      1.1  christos   107,   90,   17,   92,   17,    4,   17,    2,   75,    3,
    559      1.1  christos    96,   71,   30,   89,  115,  147,   76,  106,   91,   93,
    560      1.1  christos    79,   75,   70,   17,  121,   55,   32,  107,   34,  105,
    561      1.1  christos   108,  114,  105,   83,    4,   68,    2,   70,    3,   68,
    562      1.1  christos    80,  121,   86,   80,  122,  106,  105,   78,  106,    5,
    563      1.1  christos    56,   68,  123,   99,  124,  125,  129,  130,   80,  131,
    564      1.1  christos    80,  141,  142,  144,  110,  145,  149,  150,    1,  110,
    565      1.1  christos     2,   30,   99,   32,   79,   92,  118,   79,  100,   21,
    566      1.1  christos    22,  111,  137,  139,  133,  113,  126,   81,    0,    0,
    567      1.1  christos     0,    0,   79,   57,   79,    0,   99,    0,  140,    0,
    568      1.1  christos     0,    0,    0,   99,    0,    0,    0,    0,    0,    0,
    569      1.1  christos     0,   70,    0,    0,    0,   99,    0,    0,    0,  148,
    570      1.1  christos     0,    0,    0,    0,    0,    0,   70,    0,    0,    0,
    571      1.1  christos     0,    0,    0,    0,    0,    4,    0,    2,    0,    0,
    572      1.1  christos    65,    0,   65,   65,   65,    0,   65,    0,    0,    0,
    573      1.1  christos     0,    0,    0,    0,    5,    6,    7,    8,   65,   10,
    574      1.1  christos    11,   65,   13,   66,   15,   16,   17,   18,   19,   20,
    575      1.1  christos    21,   22,   23,   24,   25,   26,   27,   28,   29,   30,
    576      1.1  christos     0,    4,    0,  116,  132,    3,    0,    0,   58,   58,
    577      1.1  christos    58,   58,   58,   58,   58,   78,   58,   58,   58,   58,
    578      1.1  christos    58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
    579      1.1  christos    58,   58,   58,   58,   58,   78,    4,   74,  116,  136,
    580      1.1  christos     3,   17,   78,    1,    5,    6,    7,    8,    9,   10,
    581      1.1  christos    11,   12,   13,   14,   15,   16,   17,   18,   19,   20,
    582      1.1  christos    21,   22,   23,   24,   25,   26,   27,   28,   29,   30,
    583      1.1  christos     4,   54,  116,    5,   56,    0,   31,   80,   80,   80,
    584      1.1  christos    80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
    585      1.1  christos    80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
    586      1.1  christos    80,   80,   88,   80,   88,   88,   88,    0,   88,    0,
    587      1.1  christos    80,   79,   79,   79,   79,   79,   79,   79,   79,   79,
    588      1.1  christos    79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
    589      1.1  christos    79,   79,   79,   79,   79,   79,   89,   79,   89,   89,
    590      1.1  christos    89,    0,   89,    0,   79,   25,   25,   25,   25,   25,
    591      1.1  christos    25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
    592      1.1  christos    25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
    593      1.1  christos    86,   25,   86,   86,    5,   56,   86,    0,   25,   65,
    594      1.1  christos    65,   65,   65,   65,   65,   65,    0,   65,   65,   65,
    595      1.1  christos    65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
    596      1.1  christos    65,   65,   65,   65,   65,   65,   75,    0,   75,   75,
    597      1.1  christos    75,    0,   75,    0,    0,    0,    0,    0,    0,    0,
    598      1.1  christos     5,    6,    7,    8,   65,   10,   11,   75,   13,   66,
    599      1.1  christos    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
    600      1.1  christos    25,   26,   27,   28,   29,   30,  117,  146,    0,    0,
    601      1.1  christos     0,    0,    0,    0,    0,    5,    6,    7,    8,   65,
    602      1.1  christos    10,   11,    0,   13,   66,   15,   16,   17,   18,   19,
    603      1.1  christos    20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
    604      1.1  christos    30,  117,    4,    0,    2,    0,    3,    0,    0,    5,
    605      1.1  christos    56,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    606      1.1  christos     0,    0,    0,   67,    0,    0,    0,    0,   41,    0,
    607      1.1  christos    41,    0,   41,    0,    0,  117,    0,    0,    0,    0,
    608      1.1  christos     0,   88,   88,    0,    0,    0,    0,    0,    0,   41,
    609      1.1  christos     0,    0,    0,    0,    0,    0,   45,    0,   45,    0,
    610      1.1  christos    45,    0,    0,    0,    0,    0,    0,   88,    0,    0,
    611      1.1  christos     0,    0,    0,    0,    0,   89,   89,   45,    0,    0,
    612      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    613      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    614      1.1  christos     0,   89,    0,    0,    0,    0,    0,    0,    0,   86,
    615      1.1  christos    86,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    616      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    617      1.1  christos     0,    0,    0,    0,    0,   86,    0,    0,    0,    0,
    618      1.1  christos     0,    0,    0,    0,    0,   75,   75,   75,   75,   75,
    619      1.1  christos    75,   75,    0,   75,   75,   75,   75,   75,   75,   75,
    620      1.1  christos    75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
    621      1.1  christos    75,   75,    0,    0,    0,    0,    0,    0,    0,    0,
    622      1.1  christos     0,    0,    0,    0,   82,    7,    8,   65,   10,   11,
    623      1.1  christos     0,   13,   66,   15,   16,   17,   18,   19,   20,   21,
    624      1.1  christos    22,   23,   24,   25,   26,   27,   28,   29,   30,    0,
    625      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    626      1.1  christos     0,    5,    6,    7,    8,   65,   10,   11,    0,   13,
    627      1.1  christos    66,   15,   16,   17,   18,   19,   20,   21,   22,   23,
    628      1.1  christos    24,   25,   26,   27,   28,   29,   30,   41,   41,   41,
    629      1.1  christos    41,   41,   41,   41,    0,   41,   41,   41,   41,   41,
    630      1.1  christos    41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
    631      1.1  christos    41,   41,   41,    0,    0,   45,   45,   45,   45,   45,
    632      1.1  christos    45,   45,    0,   45,   45,   45,   45,   45,   45,   45,
    633      1.1  christos    45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
    634      1.1  christos    45,   82,    7,    8,   65,   10,   11,   12,   13,   14,
    635      1.1  christos    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
    636      1.1  christos    25,   26,   27,   28,   29,   30,    0,    0,   82,    7,
    637      1.1  christos     8,   65,   10,   11,   95,   13,   66,   15,   16,   17,
    638      1.1  christos    18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
    639      1.1  christos    28,   29,   30,    0,    0,    0,  138,   82,    7,    8,
    640      1.1  christos    65,   10,   11,   12,   13,   14,   15,   16,   17,   18,
    641      1.1  christos    19,   20,   21,   22,   23,   24,   25,   26,   27,   28,
    642      1.1  christos    29,   30,    0,   75,   82,    7,    8,   65,   10,   11,
    643      1.1  christos    12,   13,   14,   15,   16,   17,   18,   19,   20,   21,
    644      1.1  christos    22,   23,   24,   25,   26,   27,   28,   29,   30,   82,
    645      1.1  christos     7,    8,   65,   10,   11,    0,   13,   66,   15,   16,
    646      1.1  christos    17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
    647      1.1  christos    27,   28,   29,   30,
    648      1.1  christos };
    649      1.1  christos static const YYINT grammar_check[] = {                   38,
    650      1.1  christos    44,   40,   41,   42,   40,   44,   40,    4,   62,    2,
    651      1.1  christos     0,  257,  258,  288,   59,    3,   34,  264,   72,  259,
    652      1.1  christos    59,   41,   61,  290,   44,   41,  116,   41,   47,   42,
    653      1.1  christos    44,   59,   38,   44,   40,   38,   42,   40,  284,   42,
    654      1.1  christos    94,   34,  282,   62,   98,  135,   43,  285,   59,   61,
    655      1.1  christos    47,  284,   44,   59,   99,   59,   59,   76,   48,   41,
    656      1.1  christos    79,  284,   44,   53,   38,   83,   40,   59,   42,   87,
    657      1.1  christos    41,  116,   60,   44,   41,   41,   73,  121,   44,  257,
    658      1.1  christos   258,   99,   44,   73,   41,   44,  287,  284,   59,  285,
    659      1.1  christos    61,   59,   44,   41,   87,   41,  285,   41,    0,   92,
    660      1.1  christos     0,  284,   41,  284,   41,   41,   99,   44,   41,   59,
    661      1.1  christos    59,   92,  121,  123,  116,   94,  109,   48,   -1,   -1,
    662      1.1  christos    -1,   -1,   59,  116,   61,   -1,  116,   -1,  125,   -1,
    663      1.1  christos    -1,   -1,   -1,  123,   -1,   -1,   -1,   -1,   -1,   -1,
    664      1.1  christos    -1,   44,   -1,   -1,   -1,  135,   -1,   -1,   -1,  142,
    665      1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,
    666      1.1  christos    -1,   -1,   -1,   -1,   -1,   38,   -1,   40,   -1,   -1,
    667      1.1  christos    38,   -1,   40,   41,   42,   -1,   44,   -1,   -1,   -1,
    668      1.1  christos    -1,   -1,   -1,   -1,  257,  258,  259,  260,  261,  262,
    669      1.1  christos   263,   59,  265,  266,  267,  268,  269,  270,  271,  272,
    670      1.1  christos   273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
    671      1.1  christos    -1,   38,   -1,   40,   41,   42,   -1,   -1,  257,  258,
    672      1.1  christos   259,  260,  261,  262,  263,  264,  265,  266,  267,  268,
    673      1.1  christos   269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
    674      1.1  christos   279,  280,  281,  282,  283,  284,   38,  283,   40,  283,
    675      1.1  christos    42,  257,  291,  256,  257,  258,  259,  260,  261,  262,
    676      1.1  christos   263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
    677      1.1  christos   273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
    678      1.1  christos    38,  285,   40,  257,  258,   -1,  289,  258,  259,  260,
    679      1.1  christos   261,  262,  263,  264,  265,  266,  267,  268,  269,  270,
    680      1.1  christos   271,  272,  273,  274,  275,  276,  277,  278,  279,  280,
    681      1.1  christos   281,  282,   38,  284,   40,   41,   42,   -1,   44,   -1,
    682      1.1  christos   291,  258,  259,  260,  261,  262,  263,  264,  265,  266,
    683      1.1  christos   267,  268,  269,  270,  271,  272,  273,  274,  275,  276,
    684      1.1  christos   277,  278,  279,  280,  281,  282,   38,  284,   40,   41,
    685      1.1  christos    42,   -1,   44,   -1,  291,  258,  259,  260,  261,  262,
    686      1.1  christos   263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
    687      1.1  christos   273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
    688      1.1  christos    38,  284,   40,   41,  257,  258,   44,   -1,  291,  257,
    689      1.1  christos   258,  259,  260,  261,  262,  263,   -1,  265,  266,  267,
    690      1.1  christos   268,  269,  270,  271,  272,  273,  274,  275,  276,  277,
    691      1.1  christos   278,  279,  280,  281,  282,  283,   38,   -1,   40,   41,
    692      1.1  christos    42,   -1,   44,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    693      1.1  christos   257,  258,  259,  260,  261,  262,  263,   59,  265,  266,
    694      1.1  christos   267,  268,  269,  270,  271,  272,  273,  274,  275,  276,
    695      1.1  christos   277,  278,  279,  280,  281,  282,  283,   41,   -1,   -1,
    696      1.1  christos    -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,  261,
    697      1.1  christos   262,  263,   -1,  265,  266,  267,  268,  269,  270,  271,
    698      1.1  christos   272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
    699      1.1  christos   282,  283,   38,   -1,   40,   -1,   42,   -1,   -1,  257,
    700      1.1  christos   258,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    701      1.1  christos    -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,   38,   -1,
    702      1.1  christos    40,   -1,   42,   -1,   -1,  283,   -1,   -1,   -1,   -1,
    703      1.1  christos    -1,  257,  258,   -1,   -1,   -1,   -1,   -1,   -1,   59,
    704      1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   38,   -1,   40,   -1,
    705      1.1  christos    42,   -1,   -1,   -1,   -1,   -1,   -1,  283,   -1,   -1,
    706      1.1  christos    -1,   -1,   -1,   -1,   -1,  257,  258,   59,   -1,   -1,
    707      1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    708      1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    709      1.1  christos    -1,  283,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,
    710      1.1  christos   258,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    711      1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    712      1.1  christos    -1,   -1,   -1,   -1,   -1,  283,   -1,   -1,   -1,   -1,
    713      1.1  christos    -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,  261,
    714      1.1  christos   262,  263,   -1,  265,  266,  267,  268,  269,  270,  271,
    715      1.1  christos   272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
    716      1.1  christos   282,  283,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    717      1.1  christos    -1,   -1,   -1,   -1,  258,  259,  260,  261,  262,  263,
    718      1.1  christos    -1,  265,  266,  267,  268,  269,  270,  271,  272,  273,
    719      1.1  christos   274,  275,  276,  277,  278,  279,  280,  281,  282,   -1,
    720      1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    721      1.1  christos    -1,  257,  258,  259,  260,  261,  262,  263,   -1,  265,
    722      1.1  christos   266,  267,  268,  269,  270,  271,  272,  273,  274,  275,
    723      1.1  christos   276,  277,  278,  279,  280,  281,  282,  257,  258,  259,
    724      1.1  christos   260,  261,  262,  263,   -1,  265,  266,  267,  268,  269,
    725      1.1  christos   270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
    726      1.1  christos   280,  281,  282,   -1,   -1,  257,  258,  259,  260,  261,
    727      1.1  christos   262,  263,   -1,  265,  266,  267,  268,  269,  270,  271,
    728      1.1  christos   272,  273,  274,  275,  276,  277,  278,  279,  280,  281,
    729      1.1  christos   282,  258,  259,  260,  261,  262,  263,  264,  265,  266,
    730      1.1  christos   267,  268,  269,  270,  271,  272,  273,  274,  275,  276,
    731      1.1  christos   277,  278,  279,  280,  281,  282,   -1,   -1,  258,  259,
    732      1.1  christos   260,  261,  262,  263,  291,  265,  266,  267,  268,  269,
    733      1.1  christos   270,  271,  272,  273,  274,  275,  276,  277,  278,  279,
    734      1.1  christos   280,  281,  282,   -1,   -1,   -1,  286,  258,  259,  260,
    735      1.1  christos   261,  262,  263,  264,  265,  266,  267,  268,  269,  270,
    736      1.1  christos   271,  272,  273,  274,  275,  276,  277,  278,  279,  280,
    737      1.1  christos   281,  282,   -1,  284,  258,  259,  260,  261,  262,  263,
    738      1.1  christos   264,  265,  266,  267,  268,  269,  270,  271,  272,  273,
    739      1.1  christos   274,  275,  276,  277,  278,  279,  280,  281,  282,  258,
    740      1.1  christos   259,  260,  261,  262,  263,   -1,  265,  266,  267,  268,
    741      1.1  christos   269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
    742      1.1  christos   279,  280,  281,  282,
    743      1.1  christos };
    744      1.1  christos #define YYFINAL 33
    745      1.1  christos #ifndef YYDEBUG
    746      1.1  christos #define YYDEBUG 0
    747      1.1  christos #endif
    748      1.1  christos #define YYMAXTOKEN 291
    749      1.1  christos #define YYUNDFTOKEN 335
    750      1.1  christos #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
    751      1.1  christos #if YYDEBUG
    752      1.1  christos static const char *const grammar_name[] = {
    753      1.1  christos 
    754      1.1  christos "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    755      1.1  christos 0,0,0,0,"'&'",0,"'('","')'","'*'",0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,0,"';'",0,
    756      1.1  christos "'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    757      1.1  christos 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    758      1.1  christos 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    759      1.1  christos 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    760      1.1  christos 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    761      1.1  christos "T_IDENTIFIER","T_TYPEDEF_NAME","T_DEFINE_NAME","T_AUTO","T_EXTERN",
    762      1.1  christos "T_REGISTER","T_STATIC","T_TYPEDEF","T_INLINE","T_EXTENSION","T_CHAR",
    763      1.1  christos "T_DOUBLE","T_FLOAT","T_INT","T_VOID","T_LONG","T_SHORT","T_SIGNED",
    764      1.1  christos "T_UNSIGNED","T_ENUM","T_STRUCT","T_UNION","T_Bool","T_Complex","T_Imaginary",
    765      1.1  christos "T_TYPE_QUALIFIER","T_BRACKETS","T_LBRACE","T_MATCHRBRACE","T_ELLIPSIS",
    766      1.1  christos "T_INITIALIZER","T_STRING_LITERAL","T_ASM","T_ASMARG","T_VA_DCL",0,0,0,0,0,0,0,
    767      1.1  christos 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    768      1.1  christos "illegal-symbol",
    769      1.1  christos };
    770      1.1  christos static const char *const grammar_rule[] = {
    771      1.1  christos "$accept : program",
    772      1.1  christos "program :",
    773      1.1  christos "program : translation_unit",
    774      1.1  christos "translation_unit : external_declaration",
    775      1.1  christos "translation_unit : translation_unit external_declaration",
    776      1.1  christos "external_declaration : declaration",
    777      1.1  christos "external_declaration : function_definition",
    778      1.1  christos "external_declaration : ';'",
    779      1.1  christos "external_declaration : linkage_specification",
    780      1.1  christos "external_declaration : T_ASM T_ASMARG ';'",
    781      1.1  christos "external_declaration : error T_MATCHRBRACE",
    782      1.1  christos "external_declaration : error ';'",
    783      1.1  christos "braces : T_LBRACE T_MATCHRBRACE",
    784      1.1  christos "linkage_specification : T_EXTERN T_STRING_LITERAL braces",
    785      1.1  christos "linkage_specification : T_EXTERN T_STRING_LITERAL declaration",
    786      1.1  christos "declaration : decl_specifiers ';'",
    787      1.1  christos "declaration : decl_specifiers init_declarator_list ';'",
    788      1.1  christos "$$1 :",
    789      1.1  christos "declaration : any_typedef decl_specifiers $$1 opt_declarator_list ';'",
    790      1.1  christos "any_typedef : T_EXTENSION T_TYPEDEF",
    791      1.1  christos "any_typedef : T_TYPEDEF",
    792      1.1  christos "opt_declarator_list :",
    793      1.1  christos "opt_declarator_list : declarator_list",
    794      1.1  christos "declarator_list : declarator",
    795      1.1  christos "declarator_list : declarator_list ',' declarator",
    796      1.1  christos "$$2 :",
    797      1.1  christos "$$3 :",
    798      1.1  christos "function_definition : decl_specifiers declarator $$2 opt_declaration_list T_LBRACE $$3 T_MATCHRBRACE",
    799      1.1  christos "$$4 :",
    800      1.1  christos "function_definition : declarator $$4 opt_declaration_list T_LBRACE T_MATCHRBRACE",
    801      1.1  christos "opt_declaration_list :",
    802      1.1  christos "opt_declaration_list : T_VA_DCL",
    803      1.1  christos "opt_declaration_list : declaration_list",
    804      1.1  christos "declaration_list : declaration",
    805      1.1  christos "declaration_list : declaration_list declaration",
    806      1.1  christos "decl_specifiers : decl_specifier",
    807      1.1  christos "decl_specifiers : decl_specifiers decl_specifier",
    808      1.1  christos "decl_specifier : storage_class",
    809      1.1  christos "decl_specifier : type_specifier",
    810      1.1  christos "decl_specifier : type_qualifier",
    811      1.1  christos "storage_class : T_AUTO",
    812      1.1  christos "storage_class : T_EXTERN",
    813      1.1  christos "storage_class : T_REGISTER",
    814      1.1  christos "storage_class : T_STATIC",
    815      1.1  christos "storage_class : T_INLINE",
    816      1.1  christos "storage_class : T_EXTENSION",
    817      1.1  christos "type_specifier : T_CHAR",
    818      1.1  christos "type_specifier : T_DOUBLE",
    819      1.1  christos "type_specifier : T_FLOAT",
    820      1.1  christos "type_specifier : T_INT",
    821      1.1  christos "type_specifier : T_LONG",
    822      1.1  christos "type_specifier : T_SHORT",
    823      1.1  christos "type_specifier : T_SIGNED",
    824      1.1  christos "type_specifier : T_UNSIGNED",
    825      1.1  christos "type_specifier : T_VOID",
    826      1.1  christos "type_specifier : T_Bool",
    827      1.1  christos "type_specifier : T_Complex",
    828      1.1  christos "type_specifier : T_Imaginary",
    829      1.1  christos "type_specifier : T_TYPEDEF_NAME",
    830      1.1  christos "type_specifier : struct_or_union_specifier",
    831      1.1  christos "type_specifier : enum_specifier",
    832      1.1  christos "type_qualifier : T_TYPE_QUALIFIER",
    833      1.1  christos "type_qualifier : T_DEFINE_NAME",
    834      1.1  christos "struct_or_union_specifier : struct_or_union any_id braces",
    835      1.1  christos "struct_or_union_specifier : struct_or_union braces",
    836      1.1  christos "struct_or_union_specifier : struct_or_union any_id",
    837      1.1  christos "struct_or_union : T_STRUCT",
    838      1.1  christos "struct_or_union : T_UNION",
    839      1.1  christos "init_declarator_list : init_declarator",
    840      1.1  christos "init_declarator_list : init_declarator_list ',' init_declarator",
    841      1.1  christos "init_declarator : declarator",
    842      1.1  christos "$$5 :",
    843      1.1  christos "init_declarator : declarator '=' $$5 T_INITIALIZER",
    844      1.1  christos "enum_specifier : enumeration any_id braces",
    845      1.1  christos "enum_specifier : enumeration braces",
    846      1.1  christos "enum_specifier : enumeration any_id",
    847      1.1  christos "enumeration : T_ENUM",
    848      1.1  christos "any_id : T_IDENTIFIER",
    849      1.1  christos "any_id : T_TYPEDEF_NAME",
    850      1.1  christos "declarator : pointer direct_declarator",
    851      1.1  christos "declarator : direct_declarator",
    852      1.1  christos "direct_declarator : identifier_or_ref",
    853      1.1  christos "direct_declarator : '(' declarator ')'",
    854      1.1  christos "direct_declarator : direct_declarator T_BRACKETS",
    855      1.1  christos "direct_declarator : direct_declarator '(' parameter_type_list ')'",
    856      1.1  christos "direct_declarator : direct_declarator '(' opt_identifier_list ')'",
    857      1.1  christos "pointer : '*' opt_type_qualifiers",
    858      1.1  christos "pointer : '*' opt_type_qualifiers pointer",
    859      1.1  christos "opt_type_qualifiers :",
    860      1.1  christos "opt_type_qualifiers : type_qualifier_list",
    861      1.1  christos "type_qualifier_list : type_qualifier",
    862      1.1  christos "type_qualifier_list : type_qualifier_list type_qualifier",
    863      1.1  christos "parameter_type_list : parameter_list",
    864      1.1  christos "parameter_type_list : parameter_list ',' T_ELLIPSIS",
    865      1.1  christos "parameter_list : parameter_declaration",
    866      1.1  christos "parameter_list : parameter_list ',' parameter_declaration",
    867      1.1  christos "parameter_declaration : decl_specifiers declarator",
    868      1.1  christos "parameter_declaration : decl_specifiers abs_declarator",
    869      1.1  christos "parameter_declaration : decl_specifiers",
    870      1.1  christos "opt_identifier_list :",
    871      1.1  christos "opt_identifier_list : identifier_list",
    872      1.1  christos "identifier_list : any_id",
    873      1.1  christos "identifier_list : identifier_list ',' any_id",
    874      1.1  christos "identifier_or_ref : any_id",
    875      1.1  christos "identifier_or_ref : '&' any_id",
    876      1.1  christos "abs_declarator : pointer",
    877      1.1  christos "abs_declarator : pointer direct_abs_declarator",
    878      1.1  christos "abs_declarator : direct_abs_declarator",
    879      1.1  christos "direct_abs_declarator : '(' abs_declarator ')'",
    880      1.1  christos "direct_abs_declarator : direct_abs_declarator T_BRACKETS",
    881      1.1  christos "direct_abs_declarator : T_BRACKETS",
    882      1.1  christos "direct_abs_declarator : direct_abs_declarator '(' parameter_type_list ')'",
    883      1.1  christos "direct_abs_declarator : direct_abs_declarator '(' ')'",
    884      1.1  christos "direct_abs_declarator : '(' parameter_type_list ')'",
    885      1.1  christos "direct_abs_declarator : '(' ')'",
    886      1.1  christos 
    887      1.1  christos };
    888      1.1  christos #endif
    889      1.1  christos 
    890      1.3  christos #if YYDEBUG
    891      1.1  christos int      yydebug;
    892      1.3  christos #endif
    893      1.1  christos 
    894      1.1  christos int      yyerrflag;
    895      1.1  christos int      yychar;
    896      1.1  christos YYSTYPE  yyval;
    897      1.1  christos YYSTYPE  yylval;
    898      1.3  christos int      yynerrs;
    899      1.1  christos 
    900      1.1  christos /* define the initial stack-sizes */
    901      1.1  christos #ifdef YYSTACKSIZE
    902      1.1  christos #undef YYMAXDEPTH
    903      1.1  christos #define YYMAXDEPTH  YYSTACKSIZE
    904      1.1  christos #else
    905      1.1  christos #ifdef YYMAXDEPTH
    906      1.1  christos #define YYSTACKSIZE YYMAXDEPTH
    907      1.1  christos #else
    908      1.1  christos #define YYSTACKSIZE 10000
    909      1.1  christos #define YYMAXDEPTH  10000
    910      1.1  christos #endif
    911      1.1  christos #endif
    912      1.1  christos 
    913      1.1  christos #define YYINITSTACKSIZE 200
    914      1.1  christos 
    915      1.1  christos typedef struct {
    916      1.1  christos     unsigned stacksize;
    917      1.1  christos     YYINT    *s_base;
    918      1.1  christos     YYINT    *s_mark;
    919      1.1  christos     YYINT    *s_last;
    920      1.1  christos     YYSTYPE  *l_base;
    921      1.1  christos     YYSTYPE  *l_mark;
    922      1.1  christos } YYSTACKDATA;
    923      1.1  christos /* variables for the parser stack */
    924      1.1  christos static YYSTACKDATA yystack;
    925      1.3  christos #line 1015 "grammar.y"
    926      1.1  christos 
    927      1.1  christos /* lex.yy.c */
    928      1.1  christos #define BEGIN yy_start = 1 + 2 *
    929      1.1  christos 
    930      1.1  christos #define CPP1 1
    931      1.1  christos #define INIT1 2
    932      1.1  christos #define INIT2 3
    933      1.1  christos #define CURLY 4
    934      1.1  christos #define LEXYACC 5
    935      1.1  christos #define ASM 6
    936      1.1  christos #define CPP_INLINE 7
    937      1.1  christos 
    938      1.1  christos extern char *yytext;
    939      1.1  christos extern FILE *yyin, *yyout;
    940      1.1  christos 
    941      1.1  christos static int curly;			/* number of curly brace nesting levels */
    942      1.4  christos static int ly_count;			/* number of occurrences of %% */
    943      1.1  christos static int inc_depth;			/* include nesting level */
    944      1.1  christos static SymbolTable *included_files;	/* files already included */
    945      1.1  christos static int yy_start = 0;		/* start state number */
    946      1.1  christos 
    947      1.1  christos #define grammar_error(s) yaccError(s)
    948      1.1  christos 
    949      1.1  christos static void
    950      1.1  christos yaccError (const char *msg)
    951      1.1  christos {
    952      1.1  christos     func_params = NULL;
    953      1.1  christos     put_error();		/* tell what line we're on, and what file */
    954      1.1  christos     fprintf(stderr, "%s at token '%s'\n", msg, yytext);
    955      1.1  christos }
    956      1.1  christos 
    957      1.1  christos /* Initialize the table of type qualifier keywords recognized by the lexical
    958      1.1  christos  * analyzer.
    959      1.1  christos  */
    960      1.1  christos void
    961      1.1  christos init_parser (void)
    962      1.1  christos {
    963      1.1  christos     static const char *keywords[] = {
    964      1.1  christos 	"const",
    965      1.1  christos 	"restrict",
    966      1.1  christos 	"volatile",
    967      1.1  christos 	"interrupt",
    968      1.1  christos #ifdef vms
    969      1.1  christos 	"noshare",
    970      1.1  christos 	"readonly",
    971      1.1  christos #endif
    972      1.1  christos #if defined(MSDOS) || defined(OS2)
    973      1.1  christos 	"__cdecl",
    974      1.1  christos 	"__export",
    975      1.1  christos 	"__far",
    976      1.1  christos 	"__fastcall",
    977      1.1  christos 	"__fortran",
    978      1.1  christos 	"__huge",
    979      1.1  christos 	"__inline",
    980      1.1  christos 	"__interrupt",
    981      1.1  christos 	"__loadds",
    982      1.1  christos 	"__near",
    983      1.1  christos 	"__pascal",
    984      1.1  christos 	"__saveregs",
    985      1.1  christos 	"__segment",
    986      1.1  christos 	"__stdcall",
    987      1.1  christos 	"__syscall",
    988      1.1  christos 	"_cdecl",
    989      1.1  christos 	"_cs",
    990      1.1  christos 	"_ds",
    991      1.1  christos 	"_es",
    992      1.1  christos 	"_export",
    993      1.1  christos 	"_far",
    994      1.1  christos 	"_fastcall",
    995      1.1  christos 	"_fortran",
    996      1.1  christos 	"_huge",
    997      1.1  christos 	"_interrupt",
    998      1.1  christos 	"_loadds",
    999      1.1  christos 	"_near",
   1000      1.1  christos 	"_pascal",
   1001      1.1  christos 	"_saveregs",
   1002      1.1  christos 	"_seg",
   1003      1.1  christos 	"_segment",
   1004      1.1  christos 	"_ss",
   1005      1.1  christos 	"cdecl",
   1006      1.1  christos 	"far",
   1007      1.1  christos 	"huge",
   1008      1.1  christos 	"near",
   1009      1.1  christos 	"pascal",
   1010      1.1  christos #ifdef OS2
   1011      1.1  christos 	"__far16",
   1012      1.1  christos #endif
   1013      1.1  christos #endif
   1014      1.1  christos #ifdef __GNUC__
   1015      1.1  christos 	/* gcc aliases */
   1016      1.1  christos 	"__builtin_va_arg",
   1017      1.1  christos 	"__builtin_va_list",
   1018      1.1  christos 	"__const",
   1019      1.1  christos 	"__const__",
   1020      1.1  christos 	"__inline",
   1021      1.1  christos 	"__inline__",
   1022      1.1  christos 	"__restrict",
   1023      1.1  christos 	"__restrict__",
   1024      1.1  christos 	"__volatile",
   1025      1.1  christos 	"__volatile__",
   1026      1.1  christos #endif
   1027      1.1  christos     };
   1028      1.1  christos     unsigned i;
   1029      1.1  christos 
   1030      1.1  christos     /* Initialize type qualifier table. */
   1031      1.1  christos     type_qualifiers = new_symbol_table();
   1032      1.1  christos     for (i = 0; i < sizeof(keywords)/sizeof(keywords[0]); ++i) {
   1033      1.1  christos 	new_symbol(type_qualifiers, keywords[i], NULL, DS_NONE);
   1034      1.1  christos     }
   1035      1.1  christos }
   1036      1.1  christos 
   1037      1.1  christos /* Process the C source file.  Write function prototypes to the standard
   1038      1.1  christos  * output.  Convert function definitions and write the converted source
   1039      1.1  christos  * code to a temporary file.
   1040      1.1  christos  */
   1041      1.1  christos void
   1042      1.1  christos process_file (FILE *infile, char *name)
   1043      1.1  christos {
   1044      1.1  christos     char *s;
   1045      1.1  christos 
   1046      1.1  christos     if (strlen(name) > 2) {
   1047      1.1  christos 	s = name + strlen(name) - 2;
   1048      1.1  christos 	if (*s == '.') {
   1049      1.1  christos 	    ++s;
   1050      1.1  christos 	    if (*s == 'l' || *s == 'y')
   1051      1.1  christos 		BEGIN LEXYACC;
   1052      1.1  christos #if defined(MSDOS) || defined(OS2)
   1053      1.1  christos 	    if (*s == 'L' || *s == 'Y')
   1054      1.1  christos 		BEGIN LEXYACC;
   1055      1.1  christos #endif
   1056      1.1  christos 	}
   1057      1.1  christos     }
   1058      1.1  christos 
   1059      1.1  christos     included_files = new_symbol_table();
   1060      1.1  christos     typedef_names = new_symbol_table();
   1061      1.1  christos     define_names = new_symbol_table();
   1062      1.1  christos     inc_depth = -1;
   1063      1.1  christos     curly = 0;
   1064      1.1  christos     ly_count = 0;
   1065      1.1  christos     func_params = NULL;
   1066      1.1  christos     yyin = infile;
   1067      1.1  christos     include_file(strcpy(base_file, name), func_style != FUNC_NONE);
   1068      1.1  christos     if (file_comments) {
   1069      1.1  christos #if OPT_LINTLIBRARY
   1070      1.1  christos     	if (lintLibrary()) {
   1071      1.1  christos 	    put_blankline(stdout);
   1072      1.1  christos 	    begin_tracking();
   1073      1.1  christos 	}
   1074      1.1  christos #endif
   1075      1.1  christos 	put_string(stdout, "/* ");
   1076      1.1  christos 	put_string(stdout, cur_file_name());
   1077      1.1  christos 	put_string(stdout, " */\n");
   1078      1.1  christos     }
   1079      1.1  christos     yyparse();
   1080      1.1  christos     free_symbol_table(define_names);
   1081      1.1  christos     free_symbol_table(typedef_names);
   1082      1.1  christos     free_symbol_table(included_files);
   1083      1.1  christos }
   1084      1.1  christos 
   1085      1.1  christos #ifdef NO_LEAKS
   1086      1.1  christos void
   1087      1.1  christos free_parser(void)
   1088      1.1  christos {
   1089      1.1  christos     free_symbol_table (type_qualifiers);
   1090      1.1  christos #ifdef FLEX_SCANNER
   1091      1.1  christos     if (yy_current_buffer != 0)
   1092      1.1  christos 	yy_delete_buffer(yy_current_buffer);
   1093      1.1  christos #endif
   1094      1.1  christos }
   1095      1.1  christos #endif
   1096      1.3  christos #line 1095 "grammar.tab.c"
   1097      1.1  christos 
   1098      1.1  christos #if YYDEBUG
   1099      1.2  christos #include <stdio.h>	/* needed for printf */
   1100      1.1  christos #endif
   1101      1.1  christos 
   1102      1.1  christos #include <stdlib.h>	/* needed for malloc, etc */
   1103      1.1  christos #include <string.h>	/* needed for memset */
   1104      1.1  christos 
   1105      1.1  christos /* allocate initial stack or double stack size, up to YYMAXDEPTH */
   1106      1.1  christos static int yygrowstack(YYSTACKDATA *data)
   1107      1.1  christos {
   1108      1.1  christos     int i;
   1109      1.1  christos     unsigned newsize;
   1110      1.1  christos     YYINT *newss;
   1111      1.1  christos     YYSTYPE *newvs;
   1112      1.1  christos 
   1113      1.1  christos     if ((newsize = data->stacksize) == 0)
   1114      1.1  christos         newsize = YYINITSTACKSIZE;
   1115      1.1  christos     else if (newsize >= YYMAXDEPTH)
   1116      1.1  christos         return YYENOMEM;
   1117      1.1  christos     else if ((newsize *= 2) > YYMAXDEPTH)
   1118      1.1  christos         newsize = YYMAXDEPTH;
   1119      1.1  christos 
   1120      1.1  christos     i = (int) (data->s_mark - data->s_base);
   1121      1.1  christos     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
   1122      1.1  christos     if (newss == 0)
   1123      1.1  christos         return YYENOMEM;
   1124      1.1  christos 
   1125      1.1  christos     data->s_base = newss;
   1126      1.1  christos     data->s_mark = newss + i;
   1127      1.1  christos 
   1128      1.1  christos     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
   1129      1.1  christos     if (newvs == 0)
   1130      1.1  christos         return YYENOMEM;
   1131      1.1  christos 
   1132      1.1  christos     data->l_base = newvs;
   1133      1.1  christos     data->l_mark = newvs + i;
   1134      1.1  christos 
   1135      1.1  christos     data->stacksize = newsize;
   1136      1.1  christos     data->s_last = data->s_base + newsize - 1;
   1137      1.1  christos     return 0;
   1138      1.1  christos }
   1139      1.1  christos 
   1140      1.1  christos #if YYPURE || defined(YY_NO_LEAKS)
   1141      1.1  christos static void yyfreestack(YYSTACKDATA *data)
   1142      1.1  christos {
   1143      1.1  christos     free(data->s_base);
   1144      1.1  christos     free(data->l_base);
   1145      1.1  christos     memset(data, 0, sizeof(*data));
   1146      1.1  christos }
   1147      1.1  christos #else
   1148      1.1  christos #define yyfreestack(data) /* nothing */
   1149      1.1  christos #endif
   1150      1.1  christos 
   1151      1.1  christos #define YYABORT  goto yyabort
   1152      1.1  christos #define YYREJECT goto yyabort
   1153      1.1  christos #define YYACCEPT goto yyaccept
   1154      1.1  christos #define YYERROR  goto yyerrlab
   1155      1.1  christos 
   1156      1.1  christos int
   1157      1.1  christos YYPARSE_DECL()
   1158      1.1  christos {
   1159      1.1  christos     int yym, yyn, yystate;
   1160      1.1  christos #if YYDEBUG
   1161      1.1  christos     const char *yys;
   1162      1.1  christos 
   1163      1.1  christos     if ((yys = getenv("YYDEBUG")) != 0)
   1164      1.1  christos     {
   1165      1.1  christos         yyn = *yys;
   1166      1.1  christos         if (yyn >= '0' && yyn <= '9')
   1167      1.1  christos             yydebug = yyn - '0';
   1168      1.1  christos     }
   1169      1.1  christos #endif
   1170      1.1  christos 
   1171  1.4.8.1  perseant     /* yym is set below */
   1172  1.4.8.1  perseant     /* yyn is set below */
   1173      1.1  christos     yynerrs = 0;
   1174      1.1  christos     yyerrflag = 0;
   1175      1.1  christos     yychar = YYEMPTY;
   1176      1.1  christos     yystate = 0;
   1177      1.1  christos 
   1178      1.1  christos #if YYPURE
   1179      1.1  christos     memset(&yystack, 0, sizeof(yystack));
   1180      1.1  christos #endif
   1181      1.1  christos 
   1182      1.1  christos     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1183      1.1  christos     yystack.s_mark = yystack.s_base;
   1184      1.1  christos     yystack.l_mark = yystack.l_base;
   1185      1.1  christos     yystate = 0;
   1186      1.1  christos     *yystack.s_mark = 0;
   1187      1.1  christos 
   1188      1.1  christos yyloop:
   1189      1.1  christos     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
   1190      1.1  christos     if (yychar < 0)
   1191      1.1  christos     {
   1192      1.2  christos         yychar = YYLEX;
   1193      1.2  christos         if (yychar < 0) yychar = YYEOF;
   1194      1.1  christos #if YYDEBUG
   1195      1.1  christos         if (yydebug)
   1196      1.1  christos         {
   1197      1.2  christos             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   1198      1.1  christos             printf("%sdebug: state %d, reading %d (%s)\n",
   1199      1.1  christos                     YYPREFIX, yystate, yychar, yys);
   1200      1.1  christos         }
   1201      1.1  christos #endif
   1202      1.1  christos     }
   1203      1.2  christos     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
   1204      1.2  christos             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
   1205      1.1  christos     {
   1206      1.1  christos #if YYDEBUG
   1207      1.1  christos         if (yydebug)
   1208      1.1  christos             printf("%sdebug: state %d, shifting to state %d\n",
   1209      1.1  christos                     YYPREFIX, yystate, yytable[yyn]);
   1210      1.1  christos #endif
   1211      1.2  christos         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1212      1.1  christos         yystate = yytable[yyn];
   1213      1.1  christos         *++yystack.s_mark = yytable[yyn];
   1214      1.1  christos         *++yystack.l_mark = yylval;
   1215      1.1  christos         yychar = YYEMPTY;
   1216      1.1  christos         if (yyerrflag > 0)  --yyerrflag;
   1217      1.1  christos         goto yyloop;
   1218      1.1  christos     }
   1219      1.2  christos     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
   1220      1.2  christos             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
   1221      1.1  christos     {
   1222      1.1  christos         yyn = yytable[yyn];
   1223      1.1  christos         goto yyreduce;
   1224      1.1  christos     }
   1225      1.2  christos     if (yyerrflag != 0) goto yyinrecovery;
   1226      1.1  christos 
   1227      1.1  christos     YYERROR_CALL("syntax error");
   1228      1.1  christos 
   1229      1.2  christos     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
   1230      1.1  christos yyerrlab:
   1231      1.1  christos     ++yynerrs;
   1232      1.1  christos 
   1233      1.1  christos yyinrecovery:
   1234      1.1  christos     if (yyerrflag < 3)
   1235      1.1  christos     {
   1236      1.1  christos         yyerrflag = 3;
   1237      1.1  christos         for (;;)
   1238      1.1  christos         {
   1239      1.2  christos             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
   1240      1.2  christos                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
   1241      1.1  christos             {
   1242      1.1  christos #if YYDEBUG
   1243      1.1  christos                 if (yydebug)
   1244      1.1  christos                     printf("%sdebug: state %d, error recovery shifting\
   1245      1.1  christos  to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
   1246      1.1  christos #endif
   1247      1.2  christos                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   1248      1.1  christos                 yystate = yytable[yyn];
   1249      1.1  christos                 *++yystack.s_mark = yytable[yyn];
   1250      1.1  christos                 *++yystack.l_mark = yylval;
   1251      1.1  christos                 goto yyloop;
   1252      1.1  christos             }
   1253      1.1  christos             else
   1254      1.1  christos             {
   1255      1.1  christos #if YYDEBUG
   1256      1.1  christos                 if (yydebug)
   1257      1.1  christos                     printf("%sdebug: error recovery discarding state %d\n",
   1258      1.1  christos                             YYPREFIX, *yystack.s_mark);
   1259      1.1  christos #endif
   1260      1.1  christos                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
   1261      1.1  christos                 --yystack.s_mark;
   1262      1.1  christos                 --yystack.l_mark;
   1263      1.1  christos             }
   1264      1.1  christos         }
   1265      1.1  christos     }
   1266      1.1  christos     else
   1267      1.1  christos     {
   1268      1.1  christos         if (yychar == YYEOF) goto yyabort;
   1269      1.1  christos #if YYDEBUG
   1270      1.1  christos         if (yydebug)
   1271      1.1  christos         {
   1272      1.2  christos             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   1273      1.1  christos             printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
   1274      1.1  christos                     YYPREFIX, yystate, yychar, yys);
   1275      1.1  christos         }
   1276      1.1  christos #endif
   1277      1.1  christos         yychar = YYEMPTY;
   1278      1.1  christos         goto yyloop;
   1279      1.1  christos     }
   1280      1.1  christos 
   1281      1.1  christos yyreduce:
   1282      1.1  christos #if YYDEBUG
   1283      1.1  christos     if (yydebug)
   1284      1.1  christos         printf("%sdebug: state %d, reducing by rule %d (%s)\n",
   1285      1.1  christos                 YYPREFIX, yystate, yyn, yyrule[yyn]);
   1286      1.1  christos #endif
   1287      1.1  christos     yym = yylen[yyn];
   1288      1.2  christos     if (yym > 0)
   1289      1.1  christos         yyval = yystack.l_mark[1-yym];
   1290      1.1  christos     else
   1291      1.1  christos         memset(&yyval, 0, sizeof yyval);
   1292      1.2  christos 
   1293      1.1  christos     switch (yyn)
   1294      1.1  christos     {
   1295      1.1  christos case 10:
   1296      1.3  christos #line 378 "grammar.y"
   1297      1.1  christos 	{
   1298      1.1  christos 	    yyerrok;
   1299      1.1  christos 	}
   1300  1.4.8.1  perseant #line 1299 "grammar.tab.c"
   1301      1.1  christos break;
   1302      1.1  christos case 11:
   1303      1.3  christos #line 382 "grammar.y"
   1304      1.1  christos 	{
   1305      1.1  christos 	    yyerrok;
   1306      1.1  christos 	}
   1307  1.4.8.1  perseant #line 1306 "grammar.tab.c"
   1308      1.1  christos break;
   1309      1.1  christos case 13:
   1310      1.3  christos #line 393 "grammar.y"
   1311      1.1  christos 	{
   1312      1.1  christos 	    /* Provide an empty action here so bison will not complain about
   1313      1.1  christos 	     * incompatible types in the default action it normally would
   1314      1.1  christos 	     * have generated.
   1315      1.1  christos 	     */
   1316      1.1  christos 	}
   1317  1.4.8.1  perseant #line 1316 "grammar.tab.c"
   1318      1.1  christos break;
   1319      1.1  christos case 14:
   1320      1.3  christos #line 400 "grammar.y"
   1321      1.1  christos 	{
   1322      1.1  christos 	    /* empty */
   1323      1.1  christos 	}
   1324  1.4.8.1  perseant #line 1323 "grammar.tab.c"
   1325      1.1  christos break;
   1326      1.1  christos case 15:
   1327      1.3  christos #line 407 "grammar.y"
   1328      1.1  christos 	{
   1329      1.1  christos #if OPT_LINTLIBRARY
   1330      1.1  christos 	    if (types_out && want_typedef()) {
   1331      1.1  christos 		gen_declarations(&yystack.l_mark[-1].decl_spec, (DeclaratorList *)0);
   1332      1.1  christos 		flush_varargs();
   1333      1.1  christos 	    }
   1334      1.1  christos #endif
   1335      1.1  christos 	    free_decl_spec(&yystack.l_mark[-1].decl_spec);
   1336      1.1  christos 	    end_typedef();
   1337      1.1  christos 	}
   1338  1.4.8.1  perseant #line 1337 "grammar.tab.c"
   1339      1.1  christos break;
   1340      1.1  christos case 16:
   1341      1.3  christos #line 418 "grammar.y"
   1342      1.1  christos 	{
   1343      1.1  christos 	    if (func_params != NULL) {
   1344      1.1  christos 		set_param_types(func_params, &yystack.l_mark[-2].decl_spec, &yystack.l_mark[-1].decl_list);
   1345      1.1  christos 	    } else {
   1346      1.1  christos 		gen_declarations(&yystack.l_mark[-2].decl_spec, &yystack.l_mark[-1].decl_list);
   1347      1.1  christos #if OPT_LINTLIBRARY
   1348      1.1  christos 		flush_varargs();
   1349      1.1  christos #endif
   1350      1.1  christos 		free_decl_list(&yystack.l_mark[-1].decl_list);
   1351      1.1  christos 	    }
   1352      1.1  christos 	    free_decl_spec(&yystack.l_mark[-2].decl_spec);
   1353      1.1  christos 	    end_typedef();
   1354      1.1  christos 	}
   1355  1.4.8.1  perseant #line 1354 "grammar.tab.c"
   1356      1.1  christos break;
   1357      1.1  christos case 17:
   1358      1.3  christos #line 432 "grammar.y"
   1359      1.1  christos 	{
   1360      1.1  christos 	    cur_decl_spec_flags = yystack.l_mark[0].decl_spec.flags;
   1361      1.1  christos 	    free_decl_spec(&yystack.l_mark[0].decl_spec);
   1362      1.1  christos 	}
   1363  1.4.8.1  perseant #line 1362 "grammar.tab.c"
   1364      1.1  christos break;
   1365      1.1  christos case 18:
   1366      1.3  christos #line 437 "grammar.y"
   1367      1.1  christos 	{
   1368      1.1  christos 	    end_typedef();
   1369      1.1  christos 	}
   1370  1.4.8.1  perseant #line 1369 "grammar.tab.c"
   1371      1.1  christos break;
   1372      1.1  christos case 19:
   1373      1.3  christos #line 444 "grammar.y"
   1374      1.1  christos 	{
   1375      1.1  christos 	    begin_typedef();
   1376      1.1  christos 	}
   1377  1.4.8.1  perseant #line 1376 "grammar.tab.c"
   1378      1.1  christos break;
   1379      1.1  christos case 20:
   1380      1.3  christos #line 448 "grammar.y"
   1381      1.1  christos 	{
   1382      1.1  christos 	    begin_typedef();
   1383      1.1  christos 	}
   1384  1.4.8.1  perseant #line 1383 "grammar.tab.c"
   1385      1.1  christos break;
   1386      1.1  christos case 23:
   1387      1.3  christos #line 460 "grammar.y"
   1388      1.1  christos 	{
   1389      1.1  christos 	    int flags = cur_decl_spec_flags;
   1390      1.1  christos 
   1391      1.1  christos 	    /* If the typedef is a pointer type, then reset the short type
   1392      1.1  christos 	     * flags so it does not get promoted.
   1393      1.1  christos 	     */
   1394      1.1  christos 	    if (strcmp(yystack.l_mark[0].declarator->text, yystack.l_mark[0].declarator->name) != 0)
   1395      1.1  christos 		flags &= ~(DS_CHAR | DS_SHORT | DS_FLOAT);
   1396      1.1  christos 	    new_symbol(typedef_names, yystack.l_mark[0].declarator->name, NULL, flags);
   1397      1.1  christos 	    free_declarator(yystack.l_mark[0].declarator);
   1398      1.1  christos 	}
   1399  1.4.8.1  perseant #line 1398 "grammar.tab.c"
   1400      1.1  christos break;
   1401      1.1  christos case 24:
   1402      1.3  christos #line 472 "grammar.y"
   1403      1.1  christos 	{
   1404      1.1  christos 	    int flags = cur_decl_spec_flags;
   1405      1.1  christos 
   1406      1.1  christos 	    if (strcmp(yystack.l_mark[0].declarator->text, yystack.l_mark[0].declarator->name) != 0)
   1407      1.1  christos 		flags &= ~(DS_CHAR | DS_SHORT | DS_FLOAT);
   1408      1.1  christos 	    new_symbol(typedef_names, yystack.l_mark[0].declarator->name, NULL, flags);
   1409      1.1  christos 	    free_declarator(yystack.l_mark[0].declarator);
   1410      1.1  christos 	}
   1411  1.4.8.1  perseant #line 1410 "grammar.tab.c"
   1412      1.1  christos break;
   1413      1.1  christos case 25:
   1414      1.3  christos #line 484 "grammar.y"
   1415      1.1  christos 	{
   1416      1.1  christos 	    check_untagged(&yystack.l_mark[-1].decl_spec);
   1417      1.1  christos 	    if (yystack.l_mark[0].declarator->func_def == FUNC_NONE) {
   1418      1.1  christos 		yyerror("syntax error");
   1419      1.1  christos 		YYERROR;
   1420      1.1  christos 	    }
   1421      1.1  christos 	    func_params = &(yystack.l_mark[0].declarator->head->params);
   1422      1.1  christos 	    func_params->begin_comment = cur_file->begin_comment;
   1423      1.1  christos 	    func_params->end_comment = cur_file->end_comment;
   1424      1.1  christos 	}
   1425  1.4.8.1  perseant #line 1424 "grammar.tab.c"
   1426      1.1  christos break;
   1427      1.1  christos case 26:
   1428      1.3  christos #line 495 "grammar.y"
   1429      1.1  christos 	{
   1430      1.1  christos 	    /* If we're converting to K&R and we've got a nominally K&R
   1431      1.1  christos 	     * function which has a parameter which is ANSI (i.e., a prototyped
   1432      1.1  christos 	     * function pointer), then we must override the deciphered value of
   1433      1.1  christos 	     * 'func_def' so that the parameter will be converted.
   1434      1.1  christos 	     */
   1435      1.1  christos 	    if (func_style == FUNC_TRADITIONAL
   1436      1.1  christos 	     && haveAnsiParam()
   1437      1.1  christos 	     && yystack.l_mark[-3].declarator->head->func_def == func_style) {
   1438      1.1  christos 		yystack.l_mark[-3].declarator->head->func_def = FUNC_BOTH;
   1439      1.1  christos 	    }
   1440      1.1  christos 
   1441      1.1  christos 	    func_params = NULL;
   1442      1.1  christos 
   1443      1.1  christos 	    if (cur_file->convert)
   1444      1.1  christos 		gen_func_definition(&yystack.l_mark[-4].decl_spec, yystack.l_mark[-3].declarator);
   1445      1.1  christos 	    gen_prototype(&yystack.l_mark[-4].decl_spec, yystack.l_mark[-3].declarator);
   1446      1.1  christos #if OPT_LINTLIBRARY
   1447      1.1  christos 	    flush_varargs();
   1448      1.1  christos #endif
   1449      1.1  christos 	    free_decl_spec(&yystack.l_mark[-4].decl_spec);
   1450      1.1  christos 	    free_declarator(yystack.l_mark[-3].declarator);
   1451      1.1  christos 	}
   1452  1.4.8.1  perseant #line 1451 "grammar.tab.c"
   1453      1.1  christos break;
   1454      1.1  christos case 28:
   1455      1.3  christos #line 520 "grammar.y"
   1456      1.1  christos 	{
   1457      1.1  christos 	    if (yystack.l_mark[0].declarator->func_def == FUNC_NONE) {
   1458      1.1  christos 		yyerror("syntax error");
   1459      1.1  christos 		YYERROR;
   1460      1.1  christos 	    }
   1461      1.1  christos 	    func_params = &(yystack.l_mark[0].declarator->head->params);
   1462      1.1  christos 	    func_params->begin_comment = cur_file->begin_comment;
   1463      1.1  christos 	    func_params->end_comment = cur_file->end_comment;
   1464      1.1  christos 	}
   1465  1.4.8.1  perseant #line 1464 "grammar.tab.c"
   1466      1.1  christos break;
   1467      1.1  christos case 29:
   1468      1.3  christos #line 530 "grammar.y"
   1469      1.1  christos 	{
   1470      1.1  christos 	    DeclSpec decl_spec;
   1471      1.1  christos 
   1472      1.1  christos 	    func_params = NULL;
   1473      1.1  christos 
   1474      1.1  christos 	    new_decl_spec(&decl_spec, dft_decl_spec(), yystack.l_mark[-4].declarator->begin, DS_NONE);
   1475      1.1  christos 	    if (cur_file->convert)
   1476      1.1  christos 		gen_func_definition(&decl_spec, yystack.l_mark[-4].declarator);
   1477      1.1  christos 	    gen_prototype(&decl_spec, yystack.l_mark[-4].declarator);
   1478      1.1  christos #if OPT_LINTLIBRARY
   1479      1.1  christos 	    flush_varargs();
   1480      1.1  christos #endif
   1481      1.1  christos 	    free_decl_spec(&decl_spec);
   1482      1.1  christos 	    free_declarator(yystack.l_mark[-4].declarator);
   1483      1.1  christos 	}
   1484  1.4.8.1  perseant #line 1483 "grammar.tab.c"
   1485      1.1  christos break;
   1486      1.1  christos case 36:
   1487      1.3  christos #line 561 "grammar.y"
   1488      1.1  christos 	{
   1489      1.1  christos 	    join_decl_specs(&yyval.decl_spec, &yystack.l_mark[-1].decl_spec, &yystack.l_mark[0].decl_spec);
   1490      1.1  christos 	    free(yystack.l_mark[-1].decl_spec.text);
   1491      1.1  christos 	    free(yystack.l_mark[0].decl_spec.text);
   1492      1.1  christos 	}
   1493  1.4.8.1  perseant #line 1492 "grammar.tab.c"
   1494      1.1  christos break;
   1495      1.1  christos case 40:
   1496      1.3  christos #line 576 "grammar.y"
   1497      1.1  christos 	{
   1498      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   1499      1.1  christos 	}
   1500  1.4.8.1  perseant #line 1499 "grammar.tab.c"
   1501      1.1  christos break;
   1502      1.1  christos case 41:
   1503      1.3  christos #line 580 "grammar.y"
   1504      1.1  christos 	{
   1505      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_EXTERN);
   1506      1.1  christos 	}
   1507  1.4.8.1  perseant #line 1506 "grammar.tab.c"
   1508      1.1  christos break;
   1509      1.1  christos case 42:
   1510      1.3  christos #line 584 "grammar.y"
   1511      1.1  christos 	{
   1512      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   1513      1.1  christos 	}
   1514  1.4.8.1  perseant #line 1513 "grammar.tab.c"
   1515      1.1  christos break;
   1516      1.1  christos case 43:
   1517      1.3  christos #line 588 "grammar.y"
   1518      1.1  christos 	{
   1519      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_STATIC);
   1520      1.1  christos 	}
   1521  1.4.8.1  perseant #line 1520 "grammar.tab.c"
   1522      1.1  christos break;
   1523      1.1  christos case 44:
   1524      1.3  christos #line 592 "grammar.y"
   1525      1.1  christos 	{
   1526      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_INLINE);
   1527      1.1  christos 	}
   1528  1.4.8.1  perseant #line 1527 "grammar.tab.c"
   1529      1.1  christos break;
   1530      1.1  christos case 45:
   1531      1.3  christos #line 596 "grammar.y"
   1532      1.1  christos 	{
   1533      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_JUNK);
   1534      1.1  christos 	}
   1535  1.4.8.1  perseant #line 1534 "grammar.tab.c"
   1536      1.1  christos break;
   1537      1.1  christos case 46:
   1538      1.3  christos #line 603 "grammar.y"
   1539      1.1  christos 	{
   1540      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_CHAR);
   1541      1.1  christos 	}
   1542  1.4.8.1  perseant #line 1541 "grammar.tab.c"
   1543      1.1  christos break;
   1544      1.1  christos case 47:
   1545      1.3  christos #line 607 "grammar.y"
   1546      1.1  christos 	{
   1547      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   1548      1.1  christos 	}
   1549  1.4.8.1  perseant #line 1548 "grammar.tab.c"
   1550      1.1  christos break;
   1551      1.1  christos case 48:
   1552      1.3  christos #line 611 "grammar.y"
   1553      1.1  christos 	{
   1554      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_FLOAT);
   1555      1.1  christos 	}
   1556  1.4.8.1  perseant #line 1555 "grammar.tab.c"
   1557      1.1  christos break;
   1558      1.1  christos case 49:
   1559      1.3  christos #line 615 "grammar.y"
   1560      1.1  christos 	{
   1561      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   1562      1.1  christos 	}
   1563  1.4.8.1  perseant #line 1562 "grammar.tab.c"
   1564      1.1  christos break;
   1565      1.1  christos case 50:
   1566      1.3  christos #line 619 "grammar.y"
   1567      1.1  christos 	{
   1568      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   1569      1.1  christos 	}
   1570  1.4.8.1  perseant #line 1569 "grammar.tab.c"
   1571      1.1  christos break;
   1572      1.1  christos case 51:
   1573      1.3  christos #line 623 "grammar.y"
   1574      1.1  christos 	{
   1575      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_SHORT);
   1576      1.1  christos 	}
   1577  1.4.8.1  perseant #line 1576 "grammar.tab.c"
   1578      1.1  christos break;
   1579      1.1  christos case 52:
   1580      1.3  christos #line 627 "grammar.y"
   1581      1.1  christos 	{
   1582      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   1583      1.1  christos 	}
   1584  1.4.8.1  perseant #line 1583 "grammar.tab.c"
   1585      1.1  christos break;
   1586      1.1  christos case 53:
   1587      1.3  christos #line 631 "grammar.y"
   1588      1.1  christos 	{
   1589      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   1590      1.1  christos 	}
   1591  1.4.8.1  perseant #line 1590 "grammar.tab.c"
   1592      1.1  christos break;
   1593      1.1  christos case 54:
   1594      1.3  christos #line 635 "grammar.y"
   1595      1.1  christos 	{
   1596      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   1597      1.1  christos 	}
   1598  1.4.8.1  perseant #line 1597 "grammar.tab.c"
   1599      1.1  christos break;
   1600      1.1  christos case 55:
   1601      1.3  christos #line 639 "grammar.y"
   1602      1.1  christos 	{
   1603      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_CHAR);
   1604      1.1  christos 	}
   1605  1.4.8.1  perseant #line 1604 "grammar.tab.c"
   1606      1.1  christos break;
   1607      1.1  christos case 56:
   1608      1.3  christos #line 643 "grammar.y"
   1609      1.1  christos 	{
   1610      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   1611      1.1  christos 	}
   1612  1.4.8.1  perseant #line 1611 "grammar.tab.c"
   1613      1.1  christos break;
   1614      1.1  christos case 57:
   1615      1.3  christos #line 647 "grammar.y"
   1616      1.1  christos 	{
   1617      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   1618      1.1  christos 	}
   1619  1.4.8.1  perseant #line 1618 "grammar.tab.c"
   1620      1.1  christos break;
   1621      1.1  christos case 58:
   1622      1.3  christos #line 651 "grammar.y"
   1623      1.1  christos 	{
   1624      1.1  christos 	    Symbol *s;
   1625      1.1  christos 	    s = find_symbol(typedef_names, yystack.l_mark[0].text.text);
   1626      1.1  christos 	    if (s != NULL)
   1627      1.1  christos 		new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, s->flags);
   1628      1.1  christos 	}
   1629  1.4.8.1  perseant #line 1628 "grammar.tab.c"
   1630      1.1  christos break;
   1631      1.1  christos case 61:
   1632      1.3  christos #line 663 "grammar.y"
   1633      1.1  christos 	{
   1634      1.1  christos 	    new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
   1635      1.1  christos 	}
   1636  1.4.8.1  perseant #line 1635 "grammar.tab.c"
   1637      1.1  christos break;
   1638      1.1  christos case 62:
   1639      1.3  christos #line 667 "grammar.y"
   1640      1.1  christos 	{
   1641      1.1  christos 	    /* This rule allows the <pointer> nonterminal to scan #define
   1642      1.1  christos 	     * names as if they were type modifiers.
   1643      1.1  christos 	     */
   1644      1.1  christos 	    Symbol *s;
   1645      1.1  christos 	    s = find_symbol(define_names, yystack.l_mark[0].text.text);
   1646      1.1  christos 	    if (s != NULL)
   1647      1.1  christos 		new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, s->flags);
   1648      1.1  christos 	}
   1649  1.4.8.1  perseant #line 1648 "grammar.tab.c"
   1650      1.1  christos break;
   1651      1.1  christos case 63:
   1652      1.3  christos #line 680 "grammar.y"
   1653      1.1  christos 	{
   1654      1.1  christos 	    char *s;
   1655      1.1  christos 	    if ((s = implied_typedef()) == 0)
   1656      1.3  christos 	        (void)sprintf(s = buf, "%.*s %.*s", TEXT_LEN, yystack.l_mark[-2].text.text, TEXT_LEN, yystack.l_mark[-1].text.text);
   1657      1.1  christos 	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-2].text.begin, DS_NONE);
   1658      1.1  christos 	}
   1659  1.4.8.1  perseant #line 1658 "grammar.tab.c"
   1660      1.1  christos break;
   1661      1.1  christos case 64:
   1662      1.3  christos #line 687 "grammar.y"
   1663      1.1  christos 	{
   1664      1.1  christos 	    char *s;
   1665      1.1  christos 	    if ((s = implied_typedef()) == 0)
   1666      1.3  christos 		(void)sprintf(s = buf, "%.*s {}", TEXT_LEN, yystack.l_mark[-1].text.text);
   1667      1.1  christos 	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-1].text.begin, DS_NONE);
   1668      1.1  christos 	}
   1669  1.4.8.1  perseant #line 1668 "grammar.tab.c"
   1670      1.1  christos break;
   1671      1.1  christos case 65:
   1672      1.3  christos #line 694 "grammar.y"
   1673      1.1  christos 	{
   1674      1.3  christos 	    (void)sprintf(buf, "%.*s %.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yystack.l_mark[0].text.text);
   1675      1.1  christos 	    new_decl_spec(&yyval.decl_spec, buf, yystack.l_mark[-1].text.begin, DS_NONE);
   1676      1.1  christos 	}
   1677  1.4.8.1  perseant #line 1676 "grammar.tab.c"
   1678      1.1  christos break;
   1679      1.1  christos case 66:
   1680      1.3  christos #line 702 "grammar.y"
   1681      1.1  christos 	{
   1682      1.1  christos 	    imply_typedef(yyval.text.text);
   1683      1.1  christos 	}
   1684  1.4.8.1  perseant #line 1683 "grammar.tab.c"
   1685      1.1  christos break;
   1686      1.1  christos case 67:
   1687      1.3  christos #line 706 "grammar.y"
   1688      1.1  christos 	{
   1689      1.1  christos 	    imply_typedef(yyval.text.text);
   1690      1.1  christos 	}
   1691  1.4.8.1  perseant #line 1690 "grammar.tab.c"
   1692      1.1  christos break;
   1693      1.1  christos case 68:
   1694      1.3  christos #line 713 "grammar.y"
   1695      1.1  christos 	{
   1696      1.1  christos 	    new_decl_list(&yyval.decl_list, yystack.l_mark[0].declarator);
   1697      1.1  christos 	}
   1698  1.4.8.1  perseant #line 1697 "grammar.tab.c"
   1699      1.1  christos break;
   1700      1.1  christos case 69:
   1701      1.3  christos #line 717 "grammar.y"
   1702      1.1  christos 	{
   1703      1.1  christos 	    add_decl_list(&yyval.decl_list, &yystack.l_mark[-2].decl_list, yystack.l_mark[0].declarator);
   1704      1.1  christos 	}
   1705  1.4.8.1  perseant #line 1704 "grammar.tab.c"
   1706      1.1  christos break;
   1707      1.1  christos case 70:
   1708      1.3  christos #line 724 "grammar.y"
   1709      1.1  christos 	{
   1710      1.1  christos 	    if (yystack.l_mark[0].declarator->func_def != FUNC_NONE && func_params == NULL &&
   1711      1.1  christos 		func_style == FUNC_TRADITIONAL && cur_file->convert) {
   1712      1.1  christos 		gen_func_declarator(yystack.l_mark[0].declarator);
   1713      1.1  christos 		fputs(cur_text(), cur_file->tmp_file);
   1714      1.1  christos 	    }
   1715      1.1  christos 	    cur_declarator = yyval.declarator;
   1716      1.1  christos 	}
   1717  1.4.8.1  perseant #line 1716 "grammar.tab.c"
   1718      1.1  christos break;
   1719      1.1  christos case 71:
   1720      1.3  christos #line 733 "grammar.y"
   1721      1.1  christos 	{
   1722      1.1  christos 	    if (yystack.l_mark[-1].declarator->func_def != FUNC_NONE && func_params == NULL &&
   1723      1.1  christos 		func_style == FUNC_TRADITIONAL && cur_file->convert) {
   1724      1.1  christos 		gen_func_declarator(yystack.l_mark[-1].declarator);
   1725      1.1  christos 		fputs(" =", cur_file->tmp_file);
   1726      1.1  christos 	    }
   1727      1.1  christos 	}
   1728  1.4.8.1  perseant #line 1727 "grammar.tab.c"
   1729      1.1  christos break;
   1730      1.1  christos case 73:
   1731      1.3  christos #line 745 "grammar.y"
   1732      1.1  christos 	{
   1733      1.1  christos 	    char *s;
   1734      1.1  christos 	    if ((s = implied_typedef()) == 0)
   1735      1.3  christos 		(void)sprintf(s = buf, "enum %.*s", TEXT_LEN, yystack.l_mark[-1].text.text);
   1736      1.1  christos 	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-2].text.begin, DS_NONE);
   1737      1.1  christos 	}
   1738  1.4.8.1  perseant #line 1737 "grammar.tab.c"
   1739      1.1  christos break;
   1740      1.1  christos case 74:
   1741      1.3  christos #line 752 "grammar.y"
   1742      1.1  christos 	{
   1743      1.1  christos 	    char *s;
   1744      1.1  christos 	    if ((s = implied_typedef()) == 0)
   1745      1.3  christos 		(void)sprintf(s = buf, "%.*s {}", TEXT_LEN, yystack.l_mark[-1].text.text);
   1746      1.1  christos 	    new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-1].text.begin, DS_NONE);
   1747      1.1  christos 	}
   1748  1.4.8.1  perseant #line 1747 "grammar.tab.c"
   1749      1.1  christos break;
   1750      1.1  christos case 75:
   1751      1.3  christos #line 759 "grammar.y"
   1752      1.1  christos 	{
   1753      1.3  christos 	    (void)sprintf(buf, "enum %.*s", TEXT_LEN, yystack.l_mark[0].text.text);
   1754      1.1  christos 	    new_decl_spec(&yyval.decl_spec, buf, yystack.l_mark[-1].text.begin, DS_NONE);
   1755      1.1  christos 	}
   1756  1.4.8.1  perseant #line 1755 "grammar.tab.c"
   1757      1.1  christos break;
   1758      1.1  christos case 76:
   1759      1.3  christos #line 767 "grammar.y"
   1760      1.1  christos 	{
   1761      1.1  christos 	    imply_typedef("enum");
   1762      1.1  christos 	    yyval.text = yystack.l_mark[0].text;
   1763      1.1  christos 	}
   1764  1.4.8.1  perseant #line 1763 "grammar.tab.c"
   1765      1.1  christos break;
   1766      1.1  christos case 79:
   1767      1.3  christos #line 780 "grammar.y"
   1768      1.1  christos 	{
   1769      1.1  christos 	    yyval.declarator = yystack.l_mark[0].declarator;
   1770      1.3  christos 	    (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yyval.declarator->text);
   1771      1.1  christos 	    free(yyval.declarator->text);
   1772      1.1  christos 	    yyval.declarator->text = xstrdup(buf);
   1773      1.1  christos 	    yyval.declarator->begin = yystack.l_mark[-1].text.begin;
   1774      1.1  christos 	    yyval.declarator->pointer = TRUE;
   1775      1.1  christos 	}
   1776  1.4.8.1  perseant #line 1775 "grammar.tab.c"
   1777      1.1  christos break;
   1778      1.1  christos case 81:
   1779      1.3  christos #line 793 "grammar.y"
   1780      1.1  christos 	{
   1781      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);
   1782      1.1  christos 	}
   1783  1.4.8.1  perseant #line 1782 "grammar.tab.c"
   1784      1.1  christos break;
   1785      1.1  christos case 82:
   1786      1.3  christos #line 797 "grammar.y"
   1787      1.1  christos 	{
   1788      1.1  christos 	    yyval.declarator = yystack.l_mark[-1].declarator;
   1789      1.3  christos 	    (void)sprintf(buf, "(%.*s)", TEXT_LEN, yyval.declarator->text);
   1790      1.1  christos 	    free(yyval.declarator->text);
   1791      1.1  christos 	    yyval.declarator->text = xstrdup(buf);
   1792      1.1  christos 	    yyval.declarator->begin = yystack.l_mark[-2].text.begin;
   1793      1.1  christos 	}
   1794  1.4.8.1  perseant #line 1793 "grammar.tab.c"
   1795      1.1  christos break;
   1796      1.1  christos case 83:
   1797      1.3  christos #line 805 "grammar.y"
   1798      1.1  christos 	{
   1799      1.1  christos 	    yyval.declarator = yystack.l_mark[-1].declarator;
   1800      1.3  christos 	    (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yyval.declarator->text, TEXT_LEN, yystack.l_mark[0].text.text);
   1801      1.1  christos 	    free(yyval.declarator->text);
   1802      1.1  christos 	    yyval.declarator->text = xstrdup(buf);
   1803      1.1  christos 	}
   1804  1.4.8.1  perseant #line 1803 "grammar.tab.c"
   1805      1.1  christos break;
   1806      1.1  christos case 84:
   1807      1.3  christos #line 812 "grammar.y"
   1808      1.1  christos 	{
   1809      1.1  christos 	    yyval.declarator = new_declarator("%s()", yystack.l_mark[-3].declarator->name, yystack.l_mark[-3].declarator->begin);
   1810      1.1  christos 	    yyval.declarator->params = yystack.l_mark[-1].param_list;
   1811      1.1  christos 	    yyval.declarator->func_stack = yystack.l_mark[-3].declarator;
   1812      1.1  christos 	    yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
   1813      1.1  christos 	    yyval.declarator->func_def = FUNC_ANSI;
   1814      1.1  christos 	}
   1815  1.4.8.1  perseant #line 1814 "grammar.tab.c"
   1816      1.1  christos break;
   1817      1.1  christos case 85:
   1818      1.3  christos #line 820 "grammar.y"
   1819      1.1  christos 	{
   1820      1.1  christos 	    yyval.declarator = new_declarator("%s()", yystack.l_mark[-3].declarator->name, yystack.l_mark[-3].declarator->begin);
   1821      1.1  christos 	    yyval.declarator->params = yystack.l_mark[-1].param_list;
   1822      1.1  christos 	    yyval.declarator->func_stack = yystack.l_mark[-3].declarator;
   1823      1.1  christos 	    yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
   1824      1.1  christos 	    yyval.declarator->func_def = FUNC_TRADITIONAL;
   1825      1.1  christos 	}
   1826  1.4.8.1  perseant #line 1825 "grammar.tab.c"
   1827      1.1  christos break;
   1828      1.1  christos case 86:
   1829      1.3  christos #line 831 "grammar.y"
   1830      1.1  christos 	{
   1831      1.3  christos 	    (void)sprintf(yyval.text.text, "*%.*s", TEXT_LEN, yystack.l_mark[0].text.text);
   1832      1.1  christos 	    yyval.text.begin = yystack.l_mark[-1].text.begin;
   1833      1.1  christos 	}
   1834  1.4.8.1  perseant #line 1833 "grammar.tab.c"
   1835      1.1  christos break;
   1836      1.1  christos case 87:
   1837      1.3  christos #line 836 "grammar.y"
   1838      1.1  christos 	{
   1839      1.3  christos 	    (void)sprintf(yyval.text.text, "*%.*s%.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yystack.l_mark[0].text.text);
   1840      1.1  christos 	    yyval.text.begin = yystack.l_mark[-2].text.begin;
   1841      1.1  christos 	}
   1842  1.4.8.1  perseant #line 1841 "grammar.tab.c"
   1843      1.1  christos break;
   1844      1.1  christos case 88:
   1845      1.3  christos #line 844 "grammar.y"
   1846      1.1  christos 	{
   1847      1.1  christos 	    strcpy(yyval.text.text, "");
   1848      1.1  christos 	    yyval.text.begin = 0L;
   1849      1.1  christos 	}
   1850  1.4.8.1  perseant #line 1849 "grammar.tab.c"
   1851      1.1  christos break;
   1852      1.1  christos case 90:
   1853      1.3  christos #line 853 "grammar.y"
   1854      1.1  christos 	{
   1855      1.1  christos 	    (void)sprintf(yyval.text.text, "%s ", yystack.l_mark[0].decl_spec.text);
   1856      1.1  christos 	    yyval.text.begin = yystack.l_mark[0].decl_spec.begin;
   1857      1.1  christos 	    free(yystack.l_mark[0].decl_spec.text);
   1858      1.1  christos 	}
   1859  1.4.8.1  perseant #line 1858 "grammar.tab.c"
   1860      1.1  christos break;
   1861      1.1  christos case 91:
   1862      1.3  christos #line 859 "grammar.y"
   1863      1.1  christos 	{
   1864      1.3  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);
   1865      1.1  christos 	    yyval.text.begin = yystack.l_mark[-1].text.begin;
   1866      1.1  christos 	    free(yystack.l_mark[0].decl_spec.text);
   1867      1.1  christos 	}
   1868  1.4.8.1  perseant #line 1867 "grammar.tab.c"
   1869      1.1  christos break;
   1870      1.1  christos case 93:
   1871      1.3  christos #line 869 "grammar.y"
   1872      1.1  christos 	{
   1873      1.1  christos 	    add_ident_list(&yyval.param_list, &yystack.l_mark[-2].param_list, "...");
   1874      1.1  christos 	}
   1875  1.4.8.1  perseant #line 1874 "grammar.tab.c"
   1876      1.1  christos break;
   1877      1.1  christos case 94:
   1878      1.3  christos #line 876 "grammar.y"
   1879      1.1  christos 	{
   1880      1.1  christos 	    new_param_list(&yyval.param_list, yystack.l_mark[0].parameter);
   1881      1.1  christos 	}
   1882  1.4.8.1  perseant #line 1881 "grammar.tab.c"
   1883      1.1  christos break;
   1884      1.1  christos case 95:
   1885      1.3  christos #line 880 "grammar.y"
   1886      1.1  christos 	{
   1887      1.1  christos 	    add_param_list(&yyval.param_list, &yystack.l_mark[-2].param_list, yystack.l_mark[0].parameter);
   1888      1.1  christos 	}
   1889  1.4.8.1  perseant #line 1888 "grammar.tab.c"
   1890      1.1  christos break;
   1891      1.1  christos case 96:
   1892      1.3  christos #line 887 "grammar.y"
   1893      1.1  christos 	{
   1894      1.1  christos 	    check_untagged(&yystack.l_mark[-1].decl_spec);
   1895      1.1  christos 	    yyval.parameter = new_parameter(&yystack.l_mark[-1].decl_spec, yystack.l_mark[0].declarator);
   1896      1.1  christos 	}
   1897  1.4.8.1  perseant #line 1896 "grammar.tab.c"
   1898      1.1  christos break;
   1899      1.1  christos case 97:
   1900      1.3  christos #line 892 "grammar.y"
   1901      1.1  christos 	{
   1902      1.1  christos 	    check_untagged(&yystack.l_mark[-1].decl_spec);
   1903      1.1  christos 	    yyval.parameter = new_parameter(&yystack.l_mark[-1].decl_spec, yystack.l_mark[0].declarator);
   1904      1.1  christos 	}
   1905  1.4.8.1  perseant #line 1904 "grammar.tab.c"
   1906      1.1  christos break;
   1907      1.1  christos case 98:
   1908      1.3  christos #line 897 "grammar.y"
   1909      1.1  christos 	{
   1910      1.1  christos 	    check_untagged(&yystack.l_mark[0].decl_spec);
   1911      1.1  christos 	    yyval.parameter = new_parameter(&yystack.l_mark[0].decl_spec, (Declarator *)0);
   1912      1.1  christos 	}
   1913  1.4.8.1  perseant #line 1912 "grammar.tab.c"
   1914      1.1  christos break;
   1915      1.1  christos case 99:
   1916      1.3  christos #line 905 "grammar.y"
   1917      1.1  christos 	{
   1918      1.1  christos 	    new_ident_list(&yyval.param_list);
   1919      1.1  christos 	}
   1920  1.4.8.1  perseant #line 1919 "grammar.tab.c"
   1921      1.1  christos break;
   1922      1.1  christos case 101:
   1923      1.3  christos #line 913 "grammar.y"
   1924      1.1  christos 	{
   1925      1.1  christos 	    new_ident_list(&yyval.param_list);
   1926      1.1  christos 	    add_ident_list(&yyval.param_list, &yyval.param_list, yystack.l_mark[0].text.text);
   1927      1.1  christos 	}
   1928  1.4.8.1  perseant #line 1927 "grammar.tab.c"
   1929      1.1  christos break;
   1930      1.1  christos case 102:
   1931      1.3  christos #line 918 "grammar.y"
   1932      1.1  christos 	{
   1933      1.1  christos 	    add_ident_list(&yyval.param_list, &yystack.l_mark[-2].param_list, yystack.l_mark[0].text.text);
   1934      1.1  christos 	}
   1935  1.4.8.1  perseant #line 1934 "grammar.tab.c"
   1936      1.1  christos break;
   1937      1.1  christos case 103:
   1938      1.3  christos #line 925 "grammar.y"
   1939      1.1  christos 	{
   1940      1.1  christos 	    yyval.text = yystack.l_mark[0].text;
   1941      1.1  christos 	}
   1942  1.4.8.1  perseant #line 1941 "grammar.tab.c"
   1943      1.1  christos break;
   1944      1.1  christos case 104:
   1945      1.3  christos #line 929 "grammar.y"
   1946      1.1  christos 	{
   1947      1.1  christos #if OPT_LINTLIBRARY
   1948      1.1  christos 	    if (lintLibrary()) { /* Lint doesn't grok C++ ref variables */
   1949      1.1  christos 		yyval.text = yystack.l_mark[0].text;
   1950      1.1  christos 	    } else
   1951      1.1  christos #endif
   1952      1.3  christos 		(void)sprintf(yyval.text.text, "&%.*s", TEXT_LEN, yystack.l_mark[0].text.text);
   1953      1.1  christos 	    yyval.text.begin = yystack.l_mark[-1].text.begin;
   1954      1.1  christos 	}
   1955  1.4.8.1  perseant #line 1954 "grammar.tab.c"
   1956      1.1  christos break;
   1957      1.1  christos case 105:
   1958      1.3  christos #line 942 "grammar.y"
   1959      1.1  christos 	{
   1960      1.1  christos 	    yyval.declarator = new_declarator(yystack.l_mark[0].text.text, "", yystack.l_mark[0].text.begin);
   1961      1.1  christos 	}
   1962  1.4.8.1  perseant #line 1961 "grammar.tab.c"
   1963      1.1  christos break;
   1964      1.1  christos case 106:
   1965      1.3  christos #line 946 "grammar.y"
   1966      1.1  christos 	{
   1967      1.1  christos 	    yyval.declarator = yystack.l_mark[0].declarator;
   1968      1.3  christos 	    (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yystack.l_mark[-1].text.text, TEXT_LEN, yyval.declarator->text);
   1969      1.1  christos 	    free(yyval.declarator->text);
   1970      1.1  christos 	    yyval.declarator->text = xstrdup(buf);
   1971      1.1  christos 	    yyval.declarator->begin = yystack.l_mark[-1].text.begin;
   1972      1.1  christos 	}
   1973  1.4.8.1  perseant #line 1972 "grammar.tab.c"
   1974      1.1  christos break;
   1975      1.1  christos case 108:
   1976      1.3  christos #line 958 "grammar.y"
   1977      1.1  christos 	{
   1978      1.1  christos 	    yyval.declarator = yystack.l_mark[-1].declarator;
   1979      1.3  christos 	    (void)sprintf(buf, "(%.*s)", TEXT_LEN, yyval.declarator->text);
   1980      1.1  christos 	    free(yyval.declarator->text);
   1981      1.1  christos 	    yyval.declarator->text = xstrdup(buf);
   1982      1.1  christos 	    yyval.declarator->begin = yystack.l_mark[-2].text.begin;
   1983      1.1  christos 	}
   1984  1.4.8.1  perseant #line 1983 "grammar.tab.c"
   1985      1.1  christos break;
   1986      1.1  christos case 109:
   1987      1.3  christos #line 966 "grammar.y"
   1988      1.1  christos 	{
   1989      1.1  christos 	    yyval.declarator = yystack.l_mark[-1].declarator;
   1990      1.3  christos 	    (void)sprintf(buf, "%.*s%.*s", TEXT_LEN, yyval.declarator->text, TEXT_LEN, yystack.l_mark[0].text.text);
   1991      1.1  christos 	    free(yyval.declarator->text);
   1992      1.1  christos 	    yyval.declarator->text = xstrdup(buf);
   1993      1.1  christos 	}
   1994  1.4.8.1  perseant #line 1993 "grammar.tab.c"
   1995      1.1  christos break;
   1996      1.1  christos case 110:
   1997      1.3  christos #line 973 "grammar.y"
   1998      1.1  christos 	{
   1999      1.1  christos 	    yyval.declarator = new_declarator(yystack.l_mark[0].text.text, "", yystack.l_mark[0].text.begin);
   2000      1.1  christos 	}
   2001  1.4.8.1  perseant #line 2000 "grammar.tab.c"
   2002      1.1  christos break;
   2003      1.1  christos case 111:
   2004      1.3  christos #line 977 "grammar.y"
   2005      1.1  christos 	{
   2006      1.1  christos 	    yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-3].declarator->begin);
   2007      1.1  christos 	    yyval.declarator->params = yystack.l_mark[-1].param_list;
   2008      1.1  christos 	    yyval.declarator->func_stack = yystack.l_mark[-3].declarator;
   2009      1.1  christos 	    yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
   2010      1.1  christos 	    yyval.declarator->func_def = FUNC_ANSI;
   2011      1.1  christos 	}
   2012  1.4.8.1  perseant #line 2011 "grammar.tab.c"
   2013      1.1  christos break;
   2014      1.1  christos case 112:
   2015      1.3  christos #line 985 "grammar.y"
   2016      1.1  christos 	{
   2017      1.1  christos 	    yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-2].declarator->begin);
   2018      1.1  christos 	    yyval.declarator->func_stack = yystack.l_mark[-2].declarator;
   2019      1.1  christos 	    yyval.declarator->head = (yystack.l_mark[-2].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-2].declarator->head;
   2020      1.1  christos 	    yyval.declarator->func_def = FUNC_ANSI;
   2021      1.1  christos 	}
   2022  1.4.8.1  perseant #line 2021 "grammar.tab.c"
   2023      1.1  christos break;
   2024      1.1  christos case 113:
   2025      1.3  christos #line 992 "grammar.y"
   2026      1.1  christos 	{
   2027      1.1  christos 	    Declarator *d;
   2028      1.1  christos 
   2029      1.1  christos 	    d = new_declarator("", "", yystack.l_mark[-2].text.begin);
   2030      1.1  christos 	    yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-2].text.begin);
   2031      1.1  christos 	    yyval.declarator->params = yystack.l_mark[-1].param_list;
   2032      1.1  christos 	    yyval.declarator->func_stack = d;
   2033      1.1  christos 	    yyval.declarator->head = yyval.declarator;
   2034      1.1  christos 	    yyval.declarator->func_def = FUNC_ANSI;
   2035      1.1  christos 	}
   2036  1.4.8.1  perseant #line 2035 "grammar.tab.c"
   2037      1.1  christos break;
   2038      1.1  christos case 114:
   2039      1.3  christos #line 1003 "grammar.y"
   2040      1.1  christos 	{
   2041      1.1  christos 	    Declarator *d;
   2042      1.1  christos 
   2043      1.1  christos 	    d = new_declarator("", "", yystack.l_mark[-1].text.begin);
   2044      1.1  christos 	    yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-1].text.begin);
   2045      1.1  christos 	    yyval.declarator->func_stack = d;
   2046      1.1  christos 	    yyval.declarator->head = yyval.declarator;
   2047      1.1  christos 	    yyval.declarator->func_def = FUNC_ANSI;
   2048      1.1  christos 	}
   2049  1.4.8.1  perseant #line 2048 "grammar.tab.c"
   2050      1.1  christos break;
   2051  1.4.8.1  perseant #line 2050 "grammar.tab.c"
   2052      1.1  christos     }
   2053      1.1  christos     yystack.s_mark -= yym;
   2054      1.1  christos     yystate = *yystack.s_mark;
   2055      1.1  christos     yystack.l_mark -= yym;
   2056      1.1  christos     yym = yylhs[yyn];
   2057      1.1  christos     if (yystate == 0 && yym == 0)
   2058      1.1  christos     {
   2059      1.1  christos #if YYDEBUG
   2060      1.1  christos         if (yydebug)
   2061      1.1  christos             printf("%sdebug: after reduction, shifting from state 0 to\
   2062      1.1  christos  state %d\n", YYPREFIX, YYFINAL);
   2063      1.1  christos #endif
   2064      1.1  christos         yystate = YYFINAL;
   2065      1.1  christos         *++yystack.s_mark = YYFINAL;
   2066      1.1  christos         *++yystack.l_mark = yyval;
   2067      1.1  christos         if (yychar < 0)
   2068      1.1  christos         {
   2069      1.2  christos             yychar = YYLEX;
   2070      1.2  christos             if (yychar < 0) yychar = YYEOF;
   2071      1.1  christos #if YYDEBUG
   2072      1.1  christos             if (yydebug)
   2073      1.1  christos             {
   2074      1.2  christos                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
   2075      1.1  christos                 printf("%sdebug: state %d, reading %d (%s)\n",
   2076      1.1  christos                         YYPREFIX, YYFINAL, yychar, yys);
   2077      1.1  christos             }
   2078      1.1  christos #endif
   2079      1.1  christos         }
   2080      1.1  christos         if (yychar == YYEOF) goto yyaccept;
   2081      1.1  christos         goto yyloop;
   2082      1.1  christos     }
   2083      1.2  christos     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
   2084      1.2  christos             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
   2085      1.1  christos         yystate = yytable[yyn];
   2086      1.1  christos     else
   2087      1.1  christos         yystate = yydgoto[yym];
   2088      1.1  christos #if YYDEBUG
   2089      1.1  christos     if (yydebug)
   2090      1.1  christos         printf("%sdebug: after reduction, shifting from state %d \
   2091      1.1  christos to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
   2092      1.1  christos #endif
   2093      1.2  christos     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
   2094      1.1  christos     *++yystack.s_mark = (YYINT) yystate;
   2095      1.1  christos     *++yystack.l_mark = yyval;
   2096      1.1  christos     goto yyloop;
   2097      1.1  christos 
   2098      1.1  christos yyoverflow:
   2099      1.1  christos     YYERROR_CALL("yacc stack overflow");
   2100      1.1  christos 
   2101      1.1  christos yyabort:
   2102      1.1  christos     yyfreestack(&yystack);
   2103      1.1  christos     return (1);
   2104      1.1  christos 
   2105      1.1  christos yyaccept:
   2106      1.1  christos     yyfreestack(&yystack);
   2107      1.1  christos     return (0);
   2108      1.1  christos }
   2109