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