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