1 /* original parser id follows */
2 /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */
3 /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
8 #define YYCHECK "yyyymmdd"
11 #define yyclearin (yychar = YYEMPTY)
12 #define yyerrok (yyerrflag = 0)
13 #define YYRECOVERING() (yyerrflag != 0)
18 #define YYDEBUGSTR YYPREFIX "debug"
21 #define yyparse grammar_parse
25 #define yylex grammar_lex
29 #define yyerror grammar_error
33 #define yychar grammar_char
37 #define yyval grammar_val
41 #define yylval grammar_lval
45 #define yydebug grammar_debug
49 #define yynerrs grammar_nerrs
53 #define yyerrflag grammar_errflag
54 #endif /* yyerrflag */
57 #define yylhs grammar_lhs
61 #define yylen grammar_len
65 #define yydefred grammar_defred
69 #define yystos grammar_stos
73 #define yydgoto grammar_dgoto
77 #define yysindex grammar_sindex
81 #define yyrindex grammar_rindex
85 #define yygindex grammar_gindex
89 #define yytable grammar_table
93 #define yycheck grammar_check
97 #define yyname grammar_name
101 #define yyrule grammar_rule
107 #define yycindex grammar_cindex
108 #endif /* yycindex */
111 #define yyctable grammar_ctable
112 #endif /* yyctable */
114 #endif /* YYBTYACC */
116 #define YYPREFIX "grammar_"
123 #define YYSTYPE_IS_DECLARED
124 #define yyerror yaccError
127 #if defined(YYBISON) || !defined(YYBYACC)
128 static void yyerror(const char *s);
135 #define OPT_LINTLIBRARY 1
145 /* #include "cproto.h" */
146 #define MAX_TEXT_SIZE 1024
148 /* Prototype styles */
150 #define PROTO_ANSI_LLIB -2 /* form ANSI lint-library source */
151 #define PROTO_LINTLIBRARY -1 /* form lint-library source */
153 #define PROTO_NONE 0 /* do not output any prototypes */
154 #define PROTO_TRADITIONAL 1 /* comment out parameters */
155 #define PROTO_ABSTRACT 2 /* comment out parameter names */
156 #define PROTO_ANSI 3 /* ANSI C prototype */
158 typedef int PrototypeStyle;
160 typedef char boolean;
162 extern boolean types_out;
163 extern PrototypeStyle proto_style;
165 #define ansiLintLibrary() (proto_style == PROTO_ANSI_LLIB)
166 #define knrLintLibrary() (proto_style == PROTO_LINTLIBRARY)
167 #define lintLibrary() (knrLintLibrary() || ansiLintLibrary())
170 #define FUNC_UNKNOWN -1 /* unspecified */
172 #define FUNC_UNKNOWN 0 /* unspecified (same as FUNC_NONE) */
174 #define FUNC_NONE 0 /* not a function definition */
175 #define FUNC_TRADITIONAL 1 /* traditional style */
176 #define FUNC_ANSI 2 /* ANSI style */
177 #define FUNC_BOTH 3 /* both styles */
179 typedef int FuncDefStyle;
181 /* Source file text */
182 typedef struct text {
183 char text[MAX_TEXT_SIZE]; /* source text */
184 long begin; /* offset in temporary file */
187 /* Declaration specifier flags */
188 #define DS_NONE 0 /* default */
189 #define DS_EXTERN 1 /* contains "extern" specifier */
190 #define DS_STATIC 2 /* contains "static" specifier */
191 #define DS_CHAR 4 /* contains "char" type specifier */
192 #define DS_SHORT 8 /* contains "short" type specifier */
193 #define DS_FLOAT 16 /* contains "float" type specifier */
194 #define DS_INLINE 32 /* contains "inline" specifier */
195 #define DS_JUNK 64 /* we're not interested in this declaration */
197 /* This structure stores information about a declaration specifier. */
198 typedef struct decl_spec {
199 unsigned short flags; /* flags defined above */
200 char *text; /* source text */
201 long begin; /* offset in temporary file */
204 /* This is a list of function parameters. */
205 typedef struct _ParameterList {
206 struct parameter *first; /* pointer to first parameter in list */
207 struct parameter *last; /* pointer to last parameter in list */
208 long begin_comment; /* begin offset of comment */
209 long end_comment; /* end offset of comment */
210 char *comment; /* comment at start of parameter list */
213 /* This structure stores information about a declarator. */
214 typedef struct _Declarator {
215 char *name; /* name of variable or function */
216 char *text; /* source text */
217 long begin; /* offset in temporary file */
218 long begin_comment; /* begin offset of comment */
219 long end_comment; /* end offset of comment */
220 FuncDefStyle func_def; /* style of function definition */
221 ParameterList params; /* function parameters */
222 boolean pointer; /* TRUE if it declares a pointer */
223 struct _Declarator *head; /* head function declarator */
224 struct _Declarator *func_stack; /* stack of function declarators */
225 struct _Declarator *next; /* next declarator in list */
228 /* This structure stores information about a function parameter. */
229 typedef struct parameter {
230 struct parameter *next; /* next parameter in list */
232 Declarator *declarator;
233 char *comment; /* comment following the parameter */
236 /* This is a list of declarators. */
237 typedef struct declarator_list {
238 Declarator *first; /* pointer to first declarator in list */
239 Declarator *last; /* pointer to last declarator in list */
242 /* #include "symbol.h" */
243 typedef struct symbol {
244 struct symbol *next; /* next symbol in list */
245 char *name; /* name of symbol */
246 char *value; /* value of symbol (for defines) */
247 short flags; /* symbol attributes */
250 /* parser stack entry type */
254 Parameter *parameter;
255 ParameterList param_list;
256 Declarator *declarator;
257 DeclaratorList decl_list;
260 /* The hash table length should be a prime number. */
261 #define SYM_MAX_HASH 251
263 typedef struct symbol_table {
264 Symbol *bucket[SYM_MAX_HASH]; /* hash buckets */
267 extern SymbolTable *new_symbol_table /* Create symbol table */
269 extern void free_symbol_table /* Destroy symbol table */
271 extern Symbol *find_symbol /* Lookup symbol name */
272 (SymbolTable *s, const char *n);
273 extern Symbol *new_symbol /* Define new symbol */
274 (SymbolTable *s, const char *n, const char *v, int f);
276 /* #include "semantic.h" */
277 extern void new_decl_spec (DeclSpec *, const char *, long, int);
278 extern void free_decl_spec (DeclSpec *);
279 extern void join_decl_specs (DeclSpec *, DeclSpec *, DeclSpec *);
280 extern void check_untagged (DeclSpec *);
281 extern Declarator *new_declarator (const char *, const char *, long);
282 extern void free_declarator (Declarator *);
283 extern void new_decl_list (DeclaratorList *, Declarator *);
284 extern void free_decl_list (DeclaratorList *);
285 extern void add_decl_list (DeclaratorList *, DeclaratorList *, Declarator *);
286 extern Parameter *new_parameter (DeclSpec *, Declarator *);
287 extern void free_parameter (Parameter *);
288 extern void new_param_list (ParameterList *, Parameter *);
289 extern void free_param_list (ParameterList *);
290 extern void add_param_list (ParameterList *, ParameterList *, Parameter *);
291 extern void new_ident_list (ParameterList *);
292 extern void add_ident_list (ParameterList *, ParameterList *, const char *);
293 extern void set_param_types (ParameterList *, DeclSpec *, DeclaratorList *);
294 extern void gen_declarations (DeclSpec *, DeclaratorList *);
295 extern void gen_prototype (DeclSpec *, Declarator *);
296 extern void gen_func_declarator (Declarator *);
297 extern void gen_func_definition (DeclSpec *, Declarator *);
299 extern void init_parser (void);
300 extern void process_file (FILE *infile, char *name);
301 extern char *cur_text (void);
302 extern char *cur_file_name (void);
303 extern char *implied_typedef (void);
304 extern void include_file (char *name, int convert);
305 extern char *supply_parm (int count);
306 extern char *xstrdup (const char *);
307 extern int already_declared (char *name);
308 extern int is_actual_func (Declarator *d);
309 extern int lint_ellipsis (Parameter *p);
310 extern int want_typedef (void);
311 extern void begin_tracking (void);
312 extern void begin_typedef (void);
313 extern void copy_typedef (char *s);
314 extern void ellipsis_varargs (Declarator *d);
315 extern void end_typedef (void);
316 extern void flush_varargs (void);
317 extern void fmt_library (int code);
318 extern void imply_typedef (const char *s);
319 extern void indent (FILE *outf);
320 extern void put_blankline (FILE *outf);
321 extern void put_body (FILE *outf, DeclSpec *decl_spec, Declarator *declarator);
322 extern void put_char (FILE *outf, int c);
323 extern void put_error (void);
324 extern void put_newline (FILE *outf);
325 extern void put_padded (FILE *outf, const char *s);
326 extern void put_string (FILE *outf, const char *s);
327 extern void track_in (void);
329 extern boolean file_comments;
330 extern FuncDefStyle func_style;
331 extern char base_file[];
333 extern int yylex (void);
335 /* declaration specifier attributes for the typedef statement currently being
338 static int cur_decl_spec_flags;
340 /* pointer to parameter list for the current function definition */
341 static ParameterList *func_params;
343 /* A parser semantic action sets this pointer to the current declarator in
344 * a function parameter declaration in order to catch any comments following
345 * the parameter declaration on the same line. If the lexer scans a comment
346 * and <cur_declarator> is not NULL, then the comment is attached to the
347 * declarator. To ignore subsequent comments, the lexer sets this to NULL
348 * after scanning a comment or end of line.
350 static Declarator *cur_declarator;
352 /* temporary string buffer */
353 static char buf[MAX_TEXT_SIZE];
355 /* table of typedef names */
356 static SymbolTable *typedef_names;
358 /* table of define names */
359 static SymbolTable *define_names;
361 /* table of type qualifiers */
362 static SymbolTable *type_qualifiers;
364 /* information about the current input file */
366 char *base_name; /* base input file name */
367 char *file_name; /* current file name */
368 FILE *file; /* input file */
369 unsigned line_num; /* current line number in input file */
370 FILE *tmp_file; /* temporary file */
371 long begin_comment; /* tmp file offset after last written ) or ; */
372 long end_comment; /* tmp file offset after last comment */
373 boolean convert; /* if TRUE, convert function definitions */
374 boolean changed; /* TRUE if conversion done in this file */
377 static IncludeStack *cur_file; /* current input file */
379 /* #include "yyerror.c" */
381 static int haveAnsiParam (void);
384 /* Flags to enable us to find if a procedure returns a value.
386 static int return_val; /* nonzero on BRACES iff return-expression found */
391 return (lintLibrary() && !return_val) ? "void" : "int";
398 if (func_params != 0) {
399 for (p = func_params->first; p != 0; p = p->next) {
400 if (p->declarator->func_def == FUNC_ANSI) {
407 #line 408 "grammar.tab.c"
409 /* compatibility with bison */
411 /* compatibility with FreeBSD */
412 # ifdef YYPARSE_PARAM_TYPE
413 # define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
415 # define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
418 # define YYPARSE_DECL() yyparse(void)
421 /* Parameters sent to lex. */
423 # define YYLEX_DECL() yylex(void *YYLEX_PARAM)
424 # define YYLEX yylex(YYLEX_PARAM)
426 # define YYLEX_DECL() yylex(void)
427 # define YYLEX yylex()
430 /* Parameters sent to yyerror. */
432 #define YYERROR_DECL() yyerror(const char *s)
435 #define YYERROR_CALL(msg) yyerror(msg)
438 extern int YYPARSE_DECL();
440 #define T_IDENTIFIER 257
441 #define T_TYPEDEF_NAME 258
442 #define T_DEFINE_NAME 259
445 #define T_REGISTER 262
447 #define T_TYPEDEF 264
449 #define T_EXTENSION 266
458 #define T_UNSIGNED 275
463 #define T_Complex 280
464 #define T_Imaginary 281
465 #define T_TYPE_QUALIFIER 282
466 #define T_BRACKETS 283
468 #define T_MATCHRBRACE 285
469 #define T_ELLIPSIS 286
470 #define T_INITIALIZER 287
471 #define T_STRING_LITERAL 288
475 #define YYERRCODE 256
477 static const YYINT grammar_lhs[] = { -1,
478 0, 0, 26, 26, 27, 27, 27, 27, 27, 27,
479 27, 31, 30, 30, 28, 28, 34, 28, 32, 32,
480 33, 33, 35, 35, 37, 38, 29, 39, 29, 36,
481 36, 36, 40, 40, 1, 1, 2, 2, 2, 3,
482 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,
483 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
484 5, 5, 6, 6, 6, 19, 19, 8, 8, 9,
485 41, 9, 7, 7, 7, 25, 23, 23, 10, 10,
486 11, 11, 11, 11, 11, 20, 20, 21, 21, 22,
487 22, 14, 14, 15, 15, 16, 16, 16, 17, 17,
488 18, 18, 24, 24, 12, 12, 12, 13, 13, 13,
491 static const YYINT grammar_len[] = { 2,
492 0, 1, 1, 2, 1, 1, 1, 1, 3, 2,
493 2, 2, 3, 3, 2, 3, 0, 5, 2, 1,
494 0, 1, 1, 3, 0, 0, 7, 0, 5, 0,
495 1, 1, 1, 2, 1, 2, 1, 1, 1, 1,
496 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
497 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
498 1, 1, 3, 2, 2, 1, 1, 1, 3, 1,
499 0, 4, 3, 2, 2, 1, 1, 1, 2, 1,
500 1, 3, 2, 4, 4, 2, 3, 0, 1, 1,
501 2, 1, 3, 1, 3, 2, 2, 1, 0, 1,
502 1, 3, 1, 2, 1, 2, 1, 3, 2, 1,
505 static const YYINT grammar_defred[] = { 0,
506 0, 0, 0, 0, 77, 0, 62, 40, 0, 42,
507 43, 20, 44, 0, 46, 47, 48, 49, 54, 50,
508 51, 52, 53, 76, 66, 67, 55, 56, 57, 61,
509 0, 7, 0, 0, 35, 37, 38, 39, 59, 60,
510 28, 0, 0, 0, 103, 81, 0, 0, 3, 5,
511 6, 8, 0, 10, 11, 78, 0, 90, 0, 0,
512 104, 0, 19, 0, 41, 45, 15, 36, 0, 68,
513 0, 0, 0, 83, 0, 0, 64, 0, 0, 74,
514 4, 58, 0, 82, 87, 91, 0, 14, 13, 9,
515 16, 0, 71, 0, 31, 33, 0, 0, 0, 0,
516 0, 94, 0, 0, 101, 12, 63, 73, 0, 0,
517 69, 0, 0, 0, 34, 0, 110, 96, 97, 0,
518 0, 84, 0, 85, 0, 23, 0, 0, 72, 26,
519 29, 114, 0, 0, 0, 109, 0, 93, 95, 102,
520 18, 0, 0, 108, 113, 112, 0, 24, 27, 111,
522 static const YYINT grammar_stos[] = { 0,
523 256, 40, 42, 38, 257, 258, 259, 260, 261, 262,
524 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
525 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
526 289, 59, 293, 294, 295, 296, 297, 298, 299, 300,
527 303, 304, 312, 313, 316, 317, 318, 319, 320, 321,
528 322, 323, 325, 285, 59, 258, 303, 298, 314, 315,
529 316, 288, 264, 290, 261, 266, 59, 295, 301, 302,
530 303, 332, 40, 283, 284, 316, 324, 304, 316, 324,
531 320, 258, 294, 41, 313, 298, 294, 321, 324, 59,
532 59, 44, 61, 330, 291, 321, 329, 333, 294, 307,
533 308, 309, 310, 311, 316, 285, 324, 324, 327, 303,
534 302, 334, 329, 284, 321, 40, 283, 303, 305, 306,
535 313, 41, 44, 41, 44, 303, 326, 328, 287, 284,
536 285, 41, 305, 307, 40, 283, 306, 286, 309, 316,
537 59, 44, 331, 41, 41, 41, 307, 303, 285, 41,
539 static const YYINT grammar_dgoto[] = { 33,
540 87, 35, 36, 37, 38, 39, 40, 69, 70, 41,
541 42, 119, 120, 100, 101, 102, 103, 104, 43, 44,
542 59, 60, 45, 46, 47, 48, 49, 50, 51, 52,
543 77, 53, 127, 109, 128, 97, 94, 143, 72, 98,
546 static const YYINT grammar_sindex[] = { -2,
547 -3, 27, -239, -177, 0, 0, 0, 0, -274, 0,
548 0, 0, 0, -246, 0, 0, 0, 0, 0, 0,
549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
550 -266, 0, 0, 455, 0, 0, 0, 0, 0, 0,
551 0, -35, -245, 128, 0, 0, -245, -2, 0, 0,
552 0, 0, 642, 0, 0, 0, -15, 0, -12, -239,
553 0, 590, 0, -27, 0, 0, 0, 0, -10, 0,
554 -11, 534, -72, 0, -237, -232, 0, -35, -232, 0,
555 0, 0, 642, 0, 0, 0, 455, 0, 0, 0,
556 0, 27, 0, 534, 0, 0, -222, 617, 209, 34,
557 39, 0, 44, 42, 0, 0, 0, 0, 27, -11,
558 0, -200, -196, -195, 0, 174, 0, 0, 0, -33,
559 243, 0, 561, 0, -177, 0, 33, 49, 0, 0,
560 0, 0, 53, 55, 417, 0, -33, 0, 0, 0,
561 0, 27, -188, 0, 0, 0, 57, 0, 0, 0,
563 static const YYINT grammar_rindex[] = { 99,
564 0, 0, 275, 0, 0, -38, 0, 0, 481, 0,
565 0, 0, 0, 509, 0, 0, 0, 0, 0, 0,
566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
568 0, 30, 0, 0, 0, 0, 0, 101, 0, 0,
569 0, 0, 0, 0, 0, 0, 0, 0, 343, 309,
570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
571 98, -182, 62, 0, 0, 133, 0, 64, 379, 0,
572 0, 0, -5, 0, 0, 0, 0, 0, 0, 0,
573 0, 0, 0, -182, 0, 0, 0, -180, -19, 0,
574 65, 0, 0, 68, 0, 0, 0, 0, 51, 9,
575 0, 0, 0, 0, 0, 0, 0, 0, 0, -13,
576 19, 0, 0, 0, 0, 0, 0, 52, 0, 0,
577 0, 0, 0, 0, 0, 0, 35, 0, 0, 0,
578 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
581 static const YYINT grammar_cindex[] = { 0,
582 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
584 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
586 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
587 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
588 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
589 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
593 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
594 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
595 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
596 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
599 static const YYINT grammar_gindex[] = { 0,
600 11, -17, 0, 0, 13, 0, 0, 0, 20, 8,
601 -43, -1, -8, -89, 0, -9, 0, 0, 0, -44,
602 0, 0, 4, 0, 0, 0, 70, -53, 0, 0,
603 -18, 0, 0, 0, 0, 22, 0, 0, 0, 0,
606 #define YYTABLESIZE 924
607 static const YYINT grammar_table[] = { 58,
608 78, 58, 58, 58, 73, 58, 135, 61, 88, 57,
609 34, 5, 56, 62, 85, 58, 68, 63, 96, 7,
610 58, 98, 78, 64, 98, 84, 134, 107, 80, 3,
611 107, 90, 17, 92, 17, 4, 17, 2, 75, 3,
612 96, 71, 30, 89, 115, 147, 76, 106, 91, 93,
613 79, 75, 70, 17, 121, 55, 32, 107, 34, 105,
614 108, 114, 105, 83, 4, 68, 2, 70, 3, 68,
615 80, 121, 86, 80, 122, 106, 105, 78, 106, 5,
616 56, 68, 123, 99, 124, 125, 129, 130, 80, 131,
617 80, 141, 142, 144, 110, 145, 149, 150, 1, 110,
618 2, 30, 99, 32, 79, 92, 118, 79, 100, 21,
619 22, 111, 137, 139, 133, 113, 126, 81, 0, 0,
620 0, 0, 79, 57, 79, 0, 99, 0, 140, 0,
621 0, 0, 0, 99, 0, 0, 0, 0, 0, 0,
622 0, 70, 0, 0, 0, 99, 0, 0, 0, 148,
623 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
624 0, 0, 0, 0, 0, 4, 0, 2, 0, 0,
625 65, 0, 65, 65, 65, 0, 65, 0, 0, 0,
626 0, 0, 0, 0, 5, 6, 7, 8, 65, 10,
627 11, 65, 13, 66, 15, 16, 17, 18, 19, 20,
628 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
629 0, 4, 0, 116, 132, 3, 0, 0, 58, 58,
630 58, 58, 58, 58, 58, 78, 58, 58, 58, 58,
631 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
632 58, 58, 58, 58, 58, 78, 4, 74, 116, 136,
633 3, 17, 78, 1, 5, 6, 7, 8, 9, 10,
634 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
635 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
636 4, 54, 116, 5, 56, 0, 31, 80, 80, 80,
637 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
638 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
639 80, 80, 88, 80, 88, 88, 88, 0, 88, 0,
640 80, 79, 79, 79, 79, 79, 79, 79, 79, 79,
641 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
642 79, 79, 79, 79, 79, 79, 89, 79, 89, 89,
643 89, 0, 89, 0, 79, 25, 25, 25, 25, 25,
644 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
645 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
646 86, 25, 86, 86, 5, 56, 86, 0, 25, 65,
647 65, 65, 65, 65, 65, 65, 0, 65, 65, 65,
648 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
649 65, 65, 65, 65, 65, 65, 75, 0, 75, 75,
650 75, 0, 75, 0, 0, 0, 0, 0, 0, 0,
651 5, 6, 7, 8, 65, 10, 11, 75, 13, 66,
652 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
653 25, 26, 27, 28, 29, 30, 117, 146, 0, 0,
654 0, 0, 0, 0, 0, 5, 6, 7, 8, 65,
655 10, 11, 0, 13, 66, 15, 16, 17, 18, 19,
656 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
657 30, 117, 4, 0, 2, 0, 3, 0, 0, 5,
658 56, 0, 0, 0, 0, 0, 0, 0, 0, 0,
659 0, 0, 0, 67, 0, 0, 0, 0, 41, 0,
660 41, 0, 41, 0, 0, 117, 0, 0, 0, 0,
661 0, 88, 88, 0, 0, 0, 0, 0, 0, 41,
662 0, 0, 0, 0, 0, 0, 45, 0, 45, 0,
663 45, 0, 0, 0, 0, 0, 0, 88, 0, 0,
664 0, 0, 0, 0, 0, 89, 89, 45, 0, 0,
665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
667 0, 89, 0, 0, 0, 0, 0, 0, 0, 86,
668 86, 0, 0, 0, 0, 0, 0, 0, 0, 0,
669 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
670 0, 0, 0, 0, 0, 86, 0, 0, 0, 0,
671 0, 0, 0, 0, 0, 75, 75, 75, 75, 75,
672 75, 75, 0, 75, 75, 75, 75, 75, 75, 75,
673 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
674 75, 75, 0, 0, 0, 0, 0, 0, 0, 0,
675 0, 0, 0, 0, 82, 7, 8, 65, 10, 11,
676 0, 13, 66, 15, 16, 17, 18, 19, 20, 21,
677 22, 23, 24, 25, 26, 27, 28, 29, 30, 0,
678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
679 0, 5, 6, 7, 8, 65, 10, 11, 0, 13,
680 66, 15, 16, 17, 18, 19, 20, 21, 22, 23,
681 24, 25, 26, 27, 28, 29, 30, 41, 41, 41,
682 41, 41, 41, 41, 0, 41, 41, 41, 41, 41,
683 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
684 41, 41, 41, 0, 0, 45, 45, 45, 45, 45,
685 45, 45, 0, 45, 45, 45, 45, 45, 45, 45,
686 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
687 45, 82, 7, 8, 65, 10, 11, 12, 13, 14,
688 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
689 25, 26, 27, 28, 29, 30, 0, 0, 82, 7,
690 8, 65, 10, 11, 95, 13, 66, 15, 16, 17,
691 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
692 28, 29, 30, 0, 0, 0, 138, 82, 7, 8,
693 65, 10, 11, 12, 13, 14, 15, 16, 17, 18,
694 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
695 29, 30, 0, 75, 82, 7, 8, 65, 10, 11,
696 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
697 22, 23, 24, 25, 26, 27, 28, 29, 30, 82,
698 7, 8, 65, 10, 11, 0, 13, 66, 15, 16,
699 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
702 static const YYINT grammar_check[] = { 38,
703 44, 40, 41, 42, 40, 44, 40, 4, 62, 2,
704 0, 257, 258, 288, 59, 3, 34, 264, 72, 259,
705 59, 41, 61, 290, 44, 41, 116, 41, 47, 42,
706 44, 59, 38, 44, 40, 38, 42, 40, 284, 42,
707 94, 34, 282, 62, 98, 135, 43, 285, 59, 61,
708 47, 284, 44, 59, 99, 59, 59, 76, 48, 41,
709 79, 284, 44, 53, 38, 83, 40, 59, 42, 87,
710 41, 116, 60, 44, 41, 41, 73, 121, 44, 257,
711 258, 99, 44, 73, 41, 44, 287, 284, 59, 285,
712 61, 59, 44, 41, 87, 41, 285, 41, 0, 92,
713 0, 284, 41, 284, 41, 41, 99, 44, 41, 59,
714 59, 92, 121, 123, 116, 94, 109, 48, -1, -1,
715 -1, -1, 59, 116, 61, -1, 116, -1, 125, -1,
716 -1, -1, -1, 123, -1, -1, -1, -1, -1, -1,
717 -1, 44, -1, -1, -1, 135, -1, -1, -1, 142,
718 -1, -1, -1, -1, -1, -1, 59, -1, -1, -1,
719 -1, -1, -1, -1, -1, 38, -1, 40, -1, -1,
720 38, -1, 40, 41, 42, -1, 44, -1, -1, -1,
721 -1, -1, -1, -1, 257, 258, 259, 260, 261, 262,
722 263, 59, 265, 266, 267, 268, 269, 270, 271, 272,
723 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
724 -1, 38, -1, 40, 41, 42, -1, -1, 257, 258,
725 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
726 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
727 279, 280, 281, 282, 283, 284, 38, 283, 40, 283,
728 42, 257, 291, 256, 257, 258, 259, 260, 261, 262,
729 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
730 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
731 38, 285, 40, 257, 258, -1, 289, 258, 259, 260,
732 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
733 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
734 281, 282, 38, 284, 40, 41, 42, -1, 44, -1,
735 291, 258, 259, 260, 261, 262, 263, 264, 265, 266,
736 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
737 277, 278, 279, 280, 281, 282, 38, 284, 40, 41,
738 42, -1, 44, -1, 291, 258, 259, 260, 261, 262,
739 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
740 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
741 38, 284, 40, 41, 257, 258, 44, -1, 291, 257,
742 258, 259, 260, 261, 262, 263, -1, 265, 266, 267,
743 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
744 278, 279, 280, 281, 282, 283, 38, -1, 40, 41,
745 42, -1, 44, -1, -1, -1, -1, -1, -1, -1,
746 257, 258, 259, 260, 261, 262, 263, 59, 265, 266,
747 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
748 277, 278, 279, 280, 281, 282, 283, 41, -1, -1,
749 -1, -1, -1, -1, -1, 257, 258, 259, 260, 261,
750 262, 263, -1, 265, 266, 267, 268, 269, 270, 271,
751 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
752 282, 283, 38, -1, 40, -1, 42, -1, -1, 257,
753 258, -1, -1, -1, -1, -1, -1, -1, -1, -1,
754 -1, -1, -1, 59, -1, -1, -1, -1, 38, -1,
755 40, -1, 42, -1, -1, 283, -1, -1, -1, -1,
756 -1, 257, 258, -1, -1, -1, -1, -1, -1, 59,
757 -1, -1, -1, -1, -1, -1, 38, -1, 40, -1,
758 42, -1, -1, -1, -1, -1, -1, 283, -1, -1,
759 -1, -1, -1, -1, -1, 257, 258, 59, -1, -1,
760 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
761 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
762 -1, 283, -1, -1, -1, -1, -1, -1, -1, 257,
763 258, -1, -1, -1, -1, -1, -1, -1, -1, -1,
764 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
765 -1, -1, -1, -1, -1, 283, -1, -1, -1, -1,
766 -1, -1, -1, -1, -1, 257, 258, 259, 260, 261,
767 262, 263, -1, 265, 266, 267, 268, 269, 270, 271,
768 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
769 282, 283, -1, -1, -1, -1, -1, -1, -1, -1,
770 -1, -1, -1, -1, 258, 259, 260, 261, 262, 263,
771 -1, 265, 266, 267, 268, 269, 270, 271, 272, 273,
772 274, 275, 276, 277, 278, 279, 280, 281, 282, -1,
773 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
774 -1, 257, 258, 259, 260, 261, 262, 263, -1, 265,
775 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
776 276, 277, 278, 279, 280, 281, 282, 257, 258, 259,
777 260, 261, 262, 263, -1, 265, 266, 267, 268, 269,
778 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
779 280, 281, 282, -1, -1, 257, 258, 259, 260, 261,
780 262, 263, -1, 265, 266, 267, 268, 269, 270, 271,
781 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
782 282, 258, 259, 260, 261, 262, 263, 264, 265, 266,
783 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
784 277, 278, 279, 280, 281, 282, -1, -1, 258, 259,
785 260, 261, 262, 263, 291, 265, 266, 267, 268, 269,
786 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
787 280, 281, 282, -1, -1, -1, 286, 258, 259, 260,
788 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
789 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
790 281, 282, -1, 284, 258, 259, 260, 261, 262, 263,
791 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
792 274, 275, 276, 277, 278, 279, 280, 281, 282, 258,
793 259, 260, 261, 262, 263, -1, 265, 266, 267, 268,
794 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
801 #define YYMAXTOKEN 291
802 #define YYUNDFTOKEN 335
803 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
805 static const char *const grammar_name[] = {
807 "$end",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
808 0,"'&'",0,"'('","')'","'*'",0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,0,"';'",0,"'='",0,
809 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
810 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
811 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
812 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
813 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"error",
814 "T_IDENTIFIER","T_TYPEDEF_NAME","T_DEFINE_NAME","T_AUTO","T_EXTERN",
815 "T_REGISTER","T_STATIC","T_TYPEDEF","T_INLINE","T_EXTENSION","T_CHAR",
816 "T_DOUBLE","T_FLOAT","T_INT","T_VOID","T_LONG","T_SHORT","T_SIGNED",
817 "T_UNSIGNED","T_ENUM","T_STRUCT","T_UNION","T_Bool","T_Complex","T_Imaginary",
818 "T_TYPE_QUALIFIER","T_BRACKETS","T_LBRACE","T_MATCHRBRACE","T_ELLIPSIS",
819 "T_INITIALIZER","T_STRING_LITERAL","T_ASM","T_ASMARG","T_VA_DCL","$accept",
820 "program","decl_specifiers","decl_specifier","storage_class","type_specifier",
821 "type_qualifier","struct_or_union_specifier","enum_specifier",
822 "init_declarator_list","init_declarator","declarator","direct_declarator",
823 "abs_declarator","direct_abs_declarator","parameter_type_list","parameter_list",
824 "parameter_declaration","opt_identifier_list","identifier_list",
825 "struct_or_union","pointer","opt_type_qualifiers","type_qualifier_list",
826 "any_id","identifier_or_ref","enumeration","translation_unit",
827 "external_declaration","declaration","function_definition",
828 "linkage_specification","braces","any_typedef","opt_declarator_list","$$1",
829 "declarator_list","opt_declaration_list","$$2","$$3","$$4","declaration_list",
830 "$$5","illegal-symbol",
832 static const char *const grammar_rule[] = {
835 "program : translation_unit",
836 "translation_unit : external_declaration",
837 "translation_unit : translation_unit external_declaration",
838 "external_declaration : declaration",
839 "external_declaration : function_definition",
840 "external_declaration : ';'",
841 "external_declaration : linkage_specification",
842 "external_declaration : T_ASM T_ASMARG ';'",
843 "external_declaration : error T_MATCHRBRACE",
844 "external_declaration : error ';'",
845 "braces : T_LBRACE T_MATCHRBRACE",
846 "linkage_specification : T_EXTERN T_STRING_LITERAL braces",
847 "linkage_specification : T_EXTERN T_STRING_LITERAL declaration",
848 "declaration : decl_specifiers ';'",
849 "declaration : decl_specifiers init_declarator_list ';'",
851 "declaration : any_typedef decl_specifiers $$1 opt_declarator_list ';'",
852 "any_typedef : T_EXTENSION T_TYPEDEF",
853 "any_typedef : T_TYPEDEF",
854 "opt_declarator_list :",
855 "opt_declarator_list : declarator_list",
856 "declarator_list : declarator",
857 "declarator_list : declarator_list ',' declarator",
860 "function_definition : decl_specifiers declarator $$2 opt_declaration_list T_LBRACE $$3 T_MATCHRBRACE",
862 "function_definition : declarator $$4 opt_declaration_list T_LBRACE T_MATCHRBRACE",
863 "opt_declaration_list :",
864 "opt_declaration_list : T_VA_DCL",
865 "opt_declaration_list : declaration_list",
866 "declaration_list : declaration",
867 "declaration_list : declaration_list declaration",
868 "decl_specifiers : decl_specifier",
869 "decl_specifiers : decl_specifiers decl_specifier",
870 "decl_specifier : storage_class",
871 "decl_specifier : type_specifier",
872 "decl_specifier : type_qualifier",
873 "storage_class : T_AUTO",
874 "storage_class : T_EXTERN",
875 "storage_class : T_REGISTER",
876 "storage_class : T_STATIC",
877 "storage_class : T_INLINE",
878 "storage_class : T_EXTENSION",
879 "type_specifier : T_CHAR",
880 "type_specifier : T_DOUBLE",
881 "type_specifier : T_FLOAT",
882 "type_specifier : T_INT",
883 "type_specifier : T_LONG",
884 "type_specifier : T_SHORT",
885 "type_specifier : T_SIGNED",
886 "type_specifier : T_UNSIGNED",
887 "type_specifier : T_VOID",
888 "type_specifier : T_Bool",
889 "type_specifier : T_Complex",
890 "type_specifier : T_Imaginary",
891 "type_specifier : T_TYPEDEF_NAME",
892 "type_specifier : struct_or_union_specifier",
893 "type_specifier : enum_specifier",
894 "type_qualifier : T_TYPE_QUALIFIER",
895 "type_qualifier : T_DEFINE_NAME",
896 "struct_or_union_specifier : struct_or_union any_id braces",
897 "struct_or_union_specifier : struct_or_union braces",
898 "struct_or_union_specifier : struct_or_union any_id",
899 "struct_or_union : T_STRUCT",
900 "struct_or_union : T_UNION",
901 "init_declarator_list : init_declarator",
902 "init_declarator_list : init_declarator_list ',' init_declarator",
903 "init_declarator : declarator",
905 "init_declarator : declarator '=' $$5 T_INITIALIZER",
906 "enum_specifier : enumeration any_id braces",
907 "enum_specifier : enumeration braces",
908 "enum_specifier : enumeration any_id",
909 "enumeration : T_ENUM",
910 "any_id : T_IDENTIFIER",
911 "any_id : T_TYPEDEF_NAME",
912 "declarator : pointer direct_declarator",
913 "declarator : direct_declarator",
914 "direct_declarator : identifier_or_ref",
915 "direct_declarator : '(' declarator ')'",
916 "direct_declarator : direct_declarator T_BRACKETS",
917 "direct_declarator : direct_declarator '(' parameter_type_list ')'",
918 "direct_declarator : direct_declarator '(' opt_identifier_list ')'",
919 "pointer : '*' opt_type_qualifiers",
920 "pointer : '*' opt_type_qualifiers pointer",
921 "opt_type_qualifiers :",
922 "opt_type_qualifiers : type_qualifier_list",
923 "type_qualifier_list : type_qualifier",
924 "type_qualifier_list : type_qualifier_list type_qualifier",
925 "parameter_type_list : parameter_list",
926 "parameter_type_list : parameter_list ',' T_ELLIPSIS",
927 "parameter_list : parameter_declaration",
928 "parameter_list : parameter_list ',' parameter_declaration",
929 "parameter_declaration : decl_specifiers declarator",
930 "parameter_declaration : decl_specifiers abs_declarator",
931 "parameter_declaration : decl_specifiers",
932 "opt_identifier_list :",
933 "opt_identifier_list : identifier_list",
934 "identifier_list : any_id",
935 "identifier_list : identifier_list ',' any_id",
936 "identifier_or_ref : any_id",
937 "identifier_or_ref : '&' any_id",
938 "abs_declarator : pointer",
939 "abs_declarator : pointer direct_abs_declarator",
940 "abs_declarator : direct_abs_declarator",
941 "direct_abs_declarator : '(' abs_declarator ')'",
942 "direct_abs_declarator : direct_abs_declarator T_BRACKETS",
943 "direct_abs_declarator : T_BRACKETS",
944 "direct_abs_declarator : direct_abs_declarator '(' parameter_type_list ')'",
945 "direct_abs_declarator : direct_abs_declarator '(' ')'",
946 "direct_abs_declarator : '(' parameter_type_list ')'",
947 "direct_abs_declarator : '(' ')'",
959 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
960 YYLTYPE yyloc; /* position returned by actions */
961 YYLTYPE yylloc; /* position from the lexer */
964 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
965 #ifndef YYLLOC_DEFAULT
966 #define YYLLOC_DEFAULT(loc, rhs, n) \
971 (loc).first_line = ((rhs)[-1]).last_line; \
972 (loc).first_column = ((rhs)[-1]).last_column; \
973 (loc).last_line = ((rhs)[-1]).last_line; \
974 (loc).last_column = ((rhs)[-1]).last_column; \
978 (loc).first_line = ((rhs)[ 0 ]).first_line; \
979 (loc).first_column = ((rhs)[ 0 ]).first_column; \
980 (loc).last_line = ((rhs)[n-1]).last_line; \
981 (loc).last_column = ((rhs)[n-1]).last_column; \
984 #endif /* YYLLOC_DEFAULT */
985 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
988 #ifndef YYLVQUEUEGROWTH
989 #define YYLVQUEUEGROWTH 32
991 #endif /* YYBTYACC */
993 /* define the initial stack-sizes */
996 #define YYMAXDEPTH YYSTACKSIZE
999 #define YYSTACKSIZE YYMAXDEPTH
1001 #define YYSTACKSIZE 10000
1002 #define YYMAXDEPTH 10000
1006 #ifndef YYINITSTACKSIZE
1007 #define YYINITSTACKSIZE 200
1017 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1024 struct YYParseState_s
1026 struct YYParseState_s *save; /* Previously saved parser state */
1027 YYSTACKDATA yystack; /* saved parser stack */
1028 int state; /* saved parser state */
1029 int errflag; /* saved error recovery status */
1030 int lexeme; /* saved index of the conflict lexeme in the lexical queue */
1031 YYINT ctry; /* saved index in yyctable[] for this conflict */
1033 typedef struct YYParseState_s YYParseState;
1034 #endif /* YYBTYACC */
1035 /* variables for the parser stack */
1036 static YYSTACKDATA yystack;
1039 /* Current parser state */
1040 static YYParseState *yyps = 0;
1042 /* yypath != NULL: do the full parse, starting at *yypath parser state. */
1043 static YYParseState *yypath = 0;
1045 /* Base of the lexical value queue */
1046 static YYSTYPE *yylvals = 0;
1048 /* Current position at lexical value queue */
1049 static YYSTYPE *yylvp = 0;
1051 /* End position of lexical value queue */
1052 static YYSTYPE *yylve = 0;
1054 /* The last allocated position at the lexical value queue */
1055 static YYSTYPE *yylvlim = 0;
1057 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1058 /* Base of the lexical position queue */
1059 static YYLTYPE *yylpsns = 0;
1061 /* Current position at lexical position queue */
1062 static YYLTYPE *yylpp = 0;
1064 /* End position of lexical position queue */
1065 static YYLTYPE *yylpe = 0;
1067 /* The last allocated position at the lexical position queue */
1068 static YYLTYPE *yylplim = 0;
1071 /* Current position at lexical token queue */
1072 static short *yylexp = 0;
1074 static short *yylexemes = 0;
1075 #endif /* YYBTYACC */
1076 #line 1014 "grammar.y"
1079 #define BEGIN yy_start = 1 + 2 *
1087 #define CPP_INLINE 7
1089 extern char *yytext;
1090 extern FILE *yyin, *yyout;
1092 static int curly; /* number of curly brace nesting levels */
1093 static int ly_count; /* number of occurances of %% */
1094 static int inc_depth; /* include nesting level */
1095 static SymbolTable *included_files; /* files already included */
1096 static int yy_start = 0; /* start state number */
1098 #define grammar_error(s) yaccError(s)
1101 yaccError (const char *msg)
1104 put_error(); /* tell what line we're on, and what file */
1105 fprintf(stderr, "%s at token '%s'\n", msg, yytext);
1108 /* Initialize the table of type qualifier keywords recognized by the lexical
1114 static const char *keywords[] = {
1123 #if defined(MSDOS) || defined(OS2)
1168 "__builtin_va_list",
1181 /* Initialize type qualifier table. */
1182 type_qualifiers = new_symbol_table();
1183 for (i = 0; i < sizeof(keywords)/sizeof(keywords[0]); ++i) {
1184 new_symbol(type_qualifiers, keywords[i], NULL, DS_NONE);
1188 /* Process the C source file. Write function prototypes to the standard
1189 * output. Convert function definitions and write the converted source
1190 * code to a temporary file.
1193 process_file (FILE *infile, char *name)
1197 if (strlen(name) > 2) {
1198 s = name + strlen(name) - 2;
1201 if (*s == 'l' || *s == 'y')
1203 #if defined(MSDOS) || defined(OS2)
1204 if (*s == 'L' || *s == 'Y')
1210 included_files = new_symbol_table();
1211 typedef_names = new_symbol_table();
1212 define_names = new_symbol_table();
1218 include_file(strcpy(base_file, name), func_style != FUNC_NONE);
1219 if (file_comments) {
1221 if (lintLibrary()) {
1222 put_blankline(stdout);
1226 put_string(stdout, "/* ");
1227 put_string(stdout, cur_file_name());
1228 put_string(stdout, " */\n");
1231 free_symbol_table(define_names);
1232 free_symbol_table(typedef_names);
1233 free_symbol_table(included_files);
1240 free_symbol_table (type_qualifiers);
1242 if (yy_current_buffer != 0)
1243 yy_delete_buffer(yy_current_buffer);
1247 #line 1248 "grammar.tab.c"
1249 /* For use in generated program */
1250 #define yydepth (int)(yystack.s_mark - yystack.s_base)
1252 #define yytrial (yyps->save)
1253 #endif /* YYBTYACC */
1256 #include <stdio.h> /* needed for printf */
1259 #include <stdlib.h> /* needed for malloc, etc */
1260 #include <string.h> /* needed for memset */
1262 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
1263 static int yygrowstack(YYSTACKDATA *data)
1269 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1273 if ((newsize = data->stacksize) == 0)
1274 newsize = YYINITSTACKSIZE;
1275 else if (newsize >= YYMAXDEPTH)
1277 else if ((newsize *= 2) > YYMAXDEPTH)
1278 newsize = YYMAXDEPTH;
1280 i = (int) (data->s_mark - data->s_base);
1281 newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
1285 data->s_base = newss;
1286 data->s_mark = newss + i;
1288 newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
1292 data->l_base = newvs;
1293 data->l_mark = newvs + i;
1295 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1296 newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));
1300 data->p_base = newps;
1301 data->p_mark = newps + i;
1304 data->stacksize = newsize;
1305 data->s_last = data->s_base + newsize - 1;
1309 fprintf(stderr, "%sdebug: stack size increased to %d\n", YYPREFIX, newsize);
1314 #if YYPURE || defined(YY_NO_LEAKS)
1315 static void yyfreestack(YYSTACKDATA *data)
1319 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1322 memset(data, 0, sizeof(*data));
1325 #define yyfreestack(data) /* nothing */
1326 #endif /* YYPURE || defined(YY_NO_LEAKS) */
1329 static YYParseState *
1330 yyNewState(unsigned size)
1332 YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));
1333 if (p == NULL) return NULL;
1335 p->yystack.stacksize = size;
1338 p->yystack.s_base = NULL;
1339 p->yystack.l_base = NULL;
1340 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1341 p->yystack.p_base = NULL;
1345 p->yystack.s_base = (short *) malloc(size * sizeof(short));
1346 if (p->yystack.s_base == NULL) return NULL;
1347 p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));
1348 if (p->yystack.l_base == NULL) return NULL;
1349 memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));
1350 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1351 p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));
1352 if (p->yystack.p_base == NULL) return NULL;
1353 memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));
1360 yyFreeState(YYParseState *p)
1362 yyfreestack(&p->yystack);
1365 #endif /* YYBTYACC */
1367 #define YYABORT goto yyabort
1368 #define YYREJECT goto yyabort
1369 #define YYACCEPT goto yyaccept
1370 #define YYERROR goto yyerrlab
1372 #define YYVALID do { if (yyps->save) goto yyvalid; } while(0)
1373 #define YYVALID_NESTED do { if (yyps->save && \
1374 yyps->save->save == 0) goto yyvalid; } while(0)
1375 #endif /* YYBTYACC */
1380 int yym, yyn, yystate, yyresult;
1383 YYParseState *yyerrctx = NULL;
1384 #endif /* YYBTYACC */
1385 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1386 YYLTYPE yyerror_loc_range[2]; /* position of error start & end */
1391 if ((yys = getenv("YYDEBUG")) != 0)
1394 if (yyn >= '0' && yyn <= '9')
1395 yydebug = yyn - '0';
1398 fprintf(stderr, "%sdebug[<# of symbols on state stack>]\n", YYPREFIX);
1402 yyps = yyNewState(0); if (yyps == 0) goto yyenomem;
1404 #endif /* YYBTYACC */
1411 memset(&yystack, 0, sizeof(yystack));
1414 if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1415 yystack.s_mark = yystack.s_base;
1416 yystack.l_mark = yystack.l_base;
1417 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1418 yystack.p_mark = yystack.p_base;
1421 *yystack.s_mark = 0;
1424 if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
1431 /* we're currently re-reading tokens */
1433 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1441 /* in trial mode; save scanner results for future parse attempts */
1442 if (yylvp == yylvlim)
1443 { /* Enlarge lexical value queue */
1444 int p = yylvp - yylvals;
1445 int s = yylvlim - yylvals;
1447 s += YYLVQUEUEGROWTH;
1448 if ((yylexemes = (short *) realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem;
1449 if ((yylvals = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;
1450 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1451 if ((yylpsns = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;
1453 yylvp = yylve = yylvals + p;
1454 yylvlim = yylvals + s;
1455 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1456 yylpp = yylpe = yylpsns + p;
1457 yylplim = yylpsns + s;
1459 yylexp = yylexemes + p;
1461 *yylexp = (short) YYLEX;
1464 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1471 /* normal operation, no conflict encountered */
1472 #endif /* YYBTYACC */
1476 #endif /* YYBTYACC */
1477 if (yychar < 0) yychar = YYEOF;
1478 /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
1482 yys = yyname[YYTRANSLATE(yychar)];
1483 fprintf(stderr, "%s[%d]: state %d, reading token %d (%s)",
1484 YYDEBUGSTR, yydepth, yystate, yychar, yys);
1485 #ifdef YYSTYPE_TOSTRING
1488 #endif /* YYBTYACC */
1489 fprintf(stderr, " <%s>", YYSTYPE_TOSTRING(yychar, yylval));
1491 fputc('\n', stderr);
1497 /* Do we have a conflict? */
1498 if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1499 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1508 fprintf(stderr, "%s[%d]: CONFLICT in state %d: following successful trial parse\n",
1509 YYDEBUGSTR, yydepth, yystate);
1511 /* Switch to the next conflict context */
1513 yypath = save->save;
1516 if (save->state != yystate) YYABORT;
1523 /* Unresolved conflict - start/continue trial parse */
1528 fprintf(stderr, "%s[%d]: CONFLICT in state %d. ", YYDEBUGSTR, yydepth, yystate);
1530 fputs("ALREADY in conflict, continuing trial parse.\n", stderr);
1532 fputs("Starting trial parse.\n", stderr);
1535 save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
1536 if (save == NULL) goto yyenomem;
1537 save->save = yyps->save;
1538 save->state = yystate;
1539 save->errflag = yyerrflag;
1540 save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base);
1541 memcpy (save->yystack.s_base, yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1542 save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base);
1543 memcpy (save->yystack.l_base, yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1544 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1545 save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base);
1546 memcpy (save->yystack.p_base, yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1548 ctry = yytable[yyn];
1549 if (yyctable[ctry] == -1)
1552 if (yydebug && yychar >= YYEOF)
1553 fprintf(stderr, "%s[%d]: backtracking 1 token\n", YYDEBUGSTR, yydepth);
1558 if (yyps->save == NULL)
1560 /* If this is a first conflict in the stack, start saving lexemes */
1563 yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short));
1564 if (yylexemes == NULL) goto yyenomem;
1565 yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));
1566 if (yylvals == NULL) goto yyenomem;
1567 yylvlim = yylvals + YYLVQUEUEGROWTH;
1568 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1569 yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));
1570 if (yylpsns == NULL) goto yyenomem;
1571 yylplim = yylpsns + YYLVQUEUEGROWTH;
1576 yylvp = yylve = yylvals;
1577 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1578 yylpp = yylpe = yylpsns;
1581 if (yychar >= YYEOF)
1584 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1587 *yylexp = (short) yychar;
1592 if (yychar >= YYEOF)
1595 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1601 save->lexeme = yylvp - yylvals;
1604 if (yytable[yyn] == ctry)
1608 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
1609 YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);
1614 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1619 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
1621 yystate = yyctable[ctry];
1622 *++yystack.s_mark = (short) yystate;
1623 *++yystack.l_mark = yylval;
1624 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1625 *++yystack.p_mark = yylloc;
1628 if (yyerrflag > 0) --yyerrflag;
1633 yyn = yyctable[ctry];
1636 } /* End of code dealing with conflicts */
1637 #endif /* YYBTYACC */
1638 if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1639 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1643 fprintf(stderr, "%s[%d]: state %d, shifting to state %d\n",
1644 YYDEBUGSTR, yydepth, yystate, yytable[yyn]);
1646 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1647 yystate = yytable[yyn];
1648 *++yystack.s_mark = yytable[yyn];
1649 *++yystack.l_mark = yylval;
1650 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1651 *++yystack.p_mark = yylloc;
1654 if (yyerrflag > 0) --yyerrflag;
1657 if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
1658 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
1663 if (yyerrflag != 0) goto yyinrecovery;
1676 YYParseState *save = yyps->save;
1679 fprintf(stderr, "%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\n",
1680 YYDEBUGSTR, yydepth, yystate, yyps->save->state,
1681 (int)(yylvp - yylvals - yyps->save->lexeme));
1683 /* Memorize most forward-looking error state in case it's really an error. */
1684 if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)
1686 /* Free old saved error context state */
1687 if (yyerrctx) yyFreeState(yyerrctx);
1688 /* Create and fill out new saved error context state */
1689 yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));
1690 if (yyerrctx == NULL) goto yyenomem;
1691 yyerrctx->save = yyps->save;
1692 yyerrctx->state = yystate;
1693 yyerrctx->errflag = yyerrflag;
1694 yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);
1695 memcpy (yyerrctx->yystack.s_base, yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1696 yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);
1697 memcpy (yyerrctx->yystack.l_base, yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1698 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1699 yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);
1700 memcpy (yyerrctx->yystack.p_base, yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1702 yyerrctx->lexeme = yylvp - yylvals;
1704 yylvp = yylvals + save->lexeme;
1705 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1706 yylpp = yylpsns + save->lexeme;
1708 yylexp = yylexemes + save->lexeme;
1710 yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);
1711 memcpy (yystack.s_base, save->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1712 yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);
1713 memcpy (yystack.l_base, save->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1714 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1715 yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);
1716 memcpy (yystack.p_base, save->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1718 ctry = ++save->ctry;
1719 yystate = save->state;
1720 /* We tried shift, try reduce now */
1721 if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;
1722 yyps->save = save->save;
1726 /* Nothing left on the stack -- error */
1731 fprintf(stderr, "%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\n",
1734 /* Restore state as it was in the most forward-advanced error */
1735 yylvp = yylvals + yyerrctx->lexeme;
1736 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1737 yylpp = yylpsns + yyerrctx->lexeme;
1739 yylexp = yylexemes + yyerrctx->lexeme;
1740 yychar = yylexp[-1];
1742 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1745 yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);
1746 memcpy (yystack.s_base, yyerrctx->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
1747 yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);
1748 memcpy (yystack.l_base, yyerrctx->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
1749 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1750 yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);
1751 memcpy (yystack.p_base, yyerrctx->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
1753 yystate = yyerrctx->state;
1754 yyFreeState(yyerrctx);
1759 if (yynewerrflag == 0) goto yyinrecovery;
1760 #endif /* YYBTYACC */
1762 YYERROR_CALL("syntax error");
1763 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1764 yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */
1779 if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
1780 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
1784 fprintf(stderr, "%s[%d]: state %d, error recovery shifting to state %d\n",
1785 YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);
1787 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
1788 yystate = yytable[yyn];
1789 *++yystack.s_mark = yytable[yyn];
1790 *++yystack.l_mark = yylval;
1791 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1792 /* lookahead position is error end position */
1793 yyerror_loc_range[1] = yylloc;
1794 YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */
1795 *++yystack.p_mark = yyloc;
1803 fprintf(stderr, "%s[%d]: error recovery discarding state %d\n",
1804 YYDEBUGSTR, yydepth, *yystack.s_mark);
1806 if (yystack.s_mark <= yystack.s_base) goto yyabort;
1807 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1808 /* the current TOS position is the error start position */
1809 yyerror_loc_range[0] = *yystack.p_mark;
1811 #if defined(YYDESTRUCT_CALL)
1814 #endif /* YYBTYACC */
1815 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1816 YYDESTRUCT_CALL("error: discarding state",
1817 yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);
1819 YYDESTRUCT_CALL("error: discarding state",
1820 yystos[*yystack.s_mark], yystack.l_mark);
1821 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1822 #endif /* defined(YYDESTRUCT_CALL) */
1825 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1833 if (yychar == YYEOF) goto yyabort;
1837 yys = yyname[YYTRANSLATE(yychar)];
1838 fprintf(stderr, "%s[%d]: state %d, error recovery discarding token %d (%s)\n",
1839 YYDEBUGSTR, yydepth, yystate, yychar, yys);
1842 #if defined(YYDESTRUCT_CALL)
1845 #endif /* YYBTYACC */
1846 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1847 YYDESTRUCT_CALL("error: discarding token", yychar, &yylval, &yylloc);
1849 YYDESTRUCT_CALL("error: discarding token", yychar, &yylval);
1850 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
1851 #endif /* defined(YYDESTRUCT_CALL) */
1861 fprintf(stderr, "%s[%d]: state %d, reducing by rule %d (%s)",
1862 YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);
1863 #ifdef YYSTYPE_TOSTRING
1866 #endif /* YYBTYACC */
1871 for (i = yym; i > 0; i--)
1873 if (i != yym) fputs(", ", stderr);
1874 fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],
1875 yystack.l_mark[1-i]), stderr);
1880 fputc('\n', stderr);
1884 yyval = yystack.l_mark[1-yym];
1886 memset(&yyval, 0, sizeof yyval);
1887 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
1889 /* Perform position reduction */
1890 memset(&yyloc, 0, sizeof(yyloc));
1893 #endif /* YYBTYACC */
1895 YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);
1896 /* just in case YYERROR is invoked within the action, save
1897 the start of the rhs as the error start position */
1898 yyerror_loc_range[0] = yystack.p_mark[1-yym];
1905 #line 377 "grammar.y"
1911 #line 381 "grammar.y"
1917 #line 392 "grammar.y"
1919 /* Provide an empty action here so bison will not complain about
1920 * incompatible types in the default action it normally would
1926 #line 399 "grammar.y"
1932 #line 406 "grammar.y"
1935 if (types_out && want_typedef()) {
1936 gen_declarations(&yystack.l_mark[-1].decl_spec, (DeclaratorList *)0);
1940 free_decl_spec(&yystack.l_mark[-1].decl_spec);
1945 #line 417 "grammar.y"
1947 if (func_params != NULL) {
1948 set_param_types(func_params, &yystack.l_mark[-2].decl_spec, &yystack.l_mark[-1].decl_list);
1950 gen_declarations(&yystack.l_mark[-2].decl_spec, &yystack.l_mark[-1].decl_list);
1954 free_decl_list(&yystack.l_mark[-1].decl_list);
1956 free_decl_spec(&yystack.l_mark[-2].decl_spec);
1961 #line 431 "grammar.y"
1963 cur_decl_spec_flags = yystack.l_mark[0].decl_spec.flags;
1964 free_decl_spec(&yystack.l_mark[0].decl_spec);
1968 #line 436 "grammar.y"
1974 #line 443 "grammar.y"
1980 #line 447 "grammar.y"
1986 #line 459 "grammar.y"
1988 int flags = cur_decl_spec_flags;
1990 /* If the typedef is a pointer type, then reset the short type
1991 * flags so it does not get promoted.
1993 if (strcmp(yystack.l_mark[0].declarator->text, yystack.l_mark[0].declarator->name) != 0)
1994 flags &= ~(DS_CHAR | DS_SHORT | DS_FLOAT);
1995 new_symbol(typedef_names, yystack.l_mark[0].declarator->name, NULL, flags);
1996 free_declarator(yystack.l_mark[0].declarator);
2000 #line 471 "grammar.y"
2002 int flags = cur_decl_spec_flags;
2004 if (strcmp(yystack.l_mark[0].declarator->text, yystack.l_mark[0].declarator->name) != 0)
2005 flags &= ~(DS_CHAR | DS_SHORT | DS_FLOAT);
2006 new_symbol(typedef_names, yystack.l_mark[0].declarator->name, NULL, flags);
2007 free_declarator(yystack.l_mark[0].declarator);
2011 #line 483 "grammar.y"
2013 check_untagged(&yystack.l_mark[-1].decl_spec);
2014 if (yystack.l_mark[0].declarator->func_def == FUNC_NONE) {
2015 yyerror("syntax error");
2018 func_params = &(yystack.l_mark[0].declarator->head->params);
2019 func_params->begin_comment = cur_file->begin_comment;
2020 func_params->end_comment = cur_file->end_comment;
2024 #line 494 "grammar.y"
2026 /* If we're converting to K&R and we've got a nominally K&R
2027 * function which has a parameter which is ANSI (i.e., a prototyped
2028 * function pointer), then we must override the deciphered value of
2029 * 'func_def' so that the parameter will be converted.
2031 if (func_style == FUNC_TRADITIONAL
2033 && yystack.l_mark[-3].declarator->head->func_def == func_style) {
2034 yystack.l_mark[-3].declarator->head->func_def = FUNC_BOTH;
2039 if (cur_file->convert)
2040 gen_func_definition(&yystack.l_mark[-4].decl_spec, yystack.l_mark[-3].declarator);
2041 gen_prototype(&yystack.l_mark[-4].decl_spec, yystack.l_mark[-3].declarator);
2045 free_decl_spec(&yystack.l_mark[-4].decl_spec);
2046 free_declarator(yystack.l_mark[-3].declarator);
2050 #line 519 "grammar.y"
2052 if (yystack.l_mark[0].declarator->func_def == FUNC_NONE) {
2053 yyerror("syntax error");
2056 func_params = &(yystack.l_mark[0].declarator->head->params);
2057 func_params->begin_comment = cur_file->begin_comment;
2058 func_params->end_comment = cur_file->end_comment;
2062 #line 529 "grammar.y"
2068 new_decl_spec(&decl_spec, dft_decl_spec(), yystack.l_mark[-4].declarator->begin, DS_NONE);
2069 if (cur_file->convert)
2070 gen_func_definition(&decl_spec, yystack.l_mark[-4].declarator);
2071 gen_prototype(&decl_spec, yystack.l_mark[-4].declarator);
2075 free_decl_spec(&decl_spec);
2076 free_declarator(yystack.l_mark[-4].declarator);
2080 #line 560 "grammar.y"
2082 join_decl_specs(&yyval.decl_spec, &yystack.l_mark[-1].decl_spec, &yystack.l_mark[0].decl_spec);
2083 free(yystack.l_mark[-1].decl_spec.text);
2084 free(yystack.l_mark[0].decl_spec.text);
2088 #line 575 "grammar.y"
2090 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
2094 #line 579 "grammar.y"
2096 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_EXTERN);
2100 #line 583 "grammar.y"
2102 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
2106 #line 587 "grammar.y"
2108 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_STATIC);
2112 #line 591 "grammar.y"
2114 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_INLINE);
2118 #line 595 "grammar.y"
2120 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_JUNK);
2124 #line 602 "grammar.y"
2126 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_CHAR);
2130 #line 606 "grammar.y"
2132 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
2136 #line 610 "grammar.y"
2138 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_FLOAT);
2142 #line 614 "grammar.y"
2144 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
2148 #line 618 "grammar.y"
2150 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
2154 #line 622 "grammar.y"
2156 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_SHORT);
2160 #line 626 "grammar.y"
2162 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
2166 #line 630 "grammar.y"
2168 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
2172 #line 634 "grammar.y"
2174 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
2178 #line 638 "grammar.y"
2180 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_CHAR);
2184 #line 642 "grammar.y"
2186 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
2190 #line 646 "grammar.y"
2192 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
2196 #line 650 "grammar.y"
2199 s = find_symbol(typedef_names, yystack.l_mark[0].text.text);
2201 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, s->flags);
2205 #line 662 "grammar.y"
2207 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, DS_NONE);
2211 #line 666 "grammar.y"
2213 /* This rule allows the <pointer> nonterminal to scan #define
2214 * names as if they were type modifiers.
2217 s = find_symbol(define_names, yystack.l_mark[0].text.text);
2219 new_decl_spec(&yyval.decl_spec, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin, s->flags);
2223 #line 679 "grammar.y"
2226 if ((s = implied_typedef()) == 0)
2227 (void)sprintf(s = buf, "%s %s", yystack.l_mark[-2].text.text, yystack.l_mark[-1].text.text);
2228 new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-2].text.begin, DS_NONE);
2232 #line 686 "grammar.y"
2235 if ((s = implied_typedef()) == 0)
2236 (void)sprintf(s = buf, "%s {}", yystack.l_mark[-1].text.text);
2237 new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-1].text.begin, DS_NONE);
2241 #line 693 "grammar.y"
2243 (void)sprintf(buf, "%s %s", yystack.l_mark[-1].text.text, yystack.l_mark[0].text.text);
2244 new_decl_spec(&yyval.decl_spec, buf, yystack.l_mark[-1].text.begin, DS_NONE);
2248 #line 701 "grammar.y"
2250 imply_typedef(yyval.text.text);
2254 #line 705 "grammar.y"
2256 imply_typedef(yyval.text.text);
2260 #line 712 "grammar.y"
2262 new_decl_list(&yyval.decl_list, yystack.l_mark[0].declarator);
2266 #line 716 "grammar.y"
2268 add_decl_list(&yyval.decl_list, &yystack.l_mark[-2].decl_list, yystack.l_mark[0].declarator);
2272 #line 723 "grammar.y"
2274 if (yystack.l_mark[0].declarator->func_def != FUNC_NONE && func_params == NULL &&
2275 func_style == FUNC_TRADITIONAL && cur_file->convert) {
2276 gen_func_declarator(yystack.l_mark[0].declarator);
2277 fputs(cur_text(), cur_file->tmp_file);
2279 cur_declarator = yyval.declarator;
2283 #line 732 "grammar.y"
2285 if (yystack.l_mark[-1].declarator->func_def != FUNC_NONE && func_params == NULL &&
2286 func_style == FUNC_TRADITIONAL && cur_file->convert) {
2287 gen_func_declarator(yystack.l_mark[-1].declarator);
2288 fputs(" =", cur_file->tmp_file);
2293 #line 744 "grammar.y"
2296 if ((s = implied_typedef()) == 0)
2297 (void)sprintf(s = buf, "enum %s", yystack.l_mark[-1].text.text);
2298 new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-2].text.begin, DS_NONE);
2302 #line 751 "grammar.y"
2305 if ((s = implied_typedef()) == 0)
2306 (void)sprintf(s = buf, "%s {}", yystack.l_mark[-1].text.text);
2307 new_decl_spec(&yyval.decl_spec, s, yystack.l_mark[-1].text.begin, DS_NONE);
2311 #line 758 "grammar.y"
2313 (void)sprintf(buf, "enum %s", yystack.l_mark[0].text.text);
2314 new_decl_spec(&yyval.decl_spec, buf, yystack.l_mark[-1].text.begin, DS_NONE);
2318 #line 766 "grammar.y"
2320 imply_typedef("enum");
2321 yyval.text = yystack.l_mark[0].text;
2325 #line 779 "grammar.y"
2327 yyval.declarator = yystack.l_mark[0].declarator;
2328 (void)sprintf(buf, "%s%s", yystack.l_mark[-1].text.text, yyval.declarator->text);
2329 free(yyval.declarator->text);
2330 yyval.declarator->text = xstrdup(buf);
2331 yyval.declarator->begin = yystack.l_mark[-1].text.begin;
2332 yyval.declarator->pointer = TRUE;
2336 #line 792 "grammar.y"
2338 yyval.declarator = new_declarator(yystack.l_mark[0].text.text, yystack.l_mark[0].text.text, yystack.l_mark[0].text.begin);
2342 #line 796 "grammar.y"
2344 yyval.declarator = yystack.l_mark[-1].declarator;
2345 (void)sprintf(buf, "(%s)", yyval.declarator->text);
2346 free(yyval.declarator->text);
2347 yyval.declarator->text = xstrdup(buf);
2348 yyval.declarator->begin = yystack.l_mark[-2].text.begin;
2352 #line 804 "grammar.y"
2354 yyval.declarator = yystack.l_mark[-1].declarator;
2355 (void)sprintf(buf, "%s%s", yyval.declarator->text, yystack.l_mark[0].text.text);
2356 free(yyval.declarator->text);
2357 yyval.declarator->text = xstrdup(buf);
2361 #line 811 "grammar.y"
2363 yyval.declarator = new_declarator("%s()", yystack.l_mark[-3].declarator->name, yystack.l_mark[-3].declarator->begin);
2364 yyval.declarator->params = yystack.l_mark[-1].param_list;
2365 yyval.declarator->func_stack = yystack.l_mark[-3].declarator;
2366 yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
2367 yyval.declarator->func_def = FUNC_ANSI;
2371 #line 819 "grammar.y"
2373 yyval.declarator = new_declarator("%s()", yystack.l_mark[-3].declarator->name, yystack.l_mark[-3].declarator->begin);
2374 yyval.declarator->params = yystack.l_mark[-1].param_list;
2375 yyval.declarator->func_stack = yystack.l_mark[-3].declarator;
2376 yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
2377 yyval.declarator->func_def = FUNC_TRADITIONAL;
2381 #line 830 "grammar.y"
2383 (void)sprintf(yyval.text.text, "*%s", yystack.l_mark[0].text.text);
2384 yyval.text.begin = yystack.l_mark[-1].text.begin;
2388 #line 835 "grammar.y"
2390 (void)sprintf(yyval.text.text, "*%s%s", yystack.l_mark[-1].text.text, yystack.l_mark[0].text.text);
2391 yyval.text.begin = yystack.l_mark[-2].text.begin;
2395 #line 843 "grammar.y"
2397 strcpy(yyval.text.text, "");
2398 yyval.text.begin = 0L;
2402 #line 852 "grammar.y"
2404 (void)sprintf(yyval.text.text, "%s ", yystack.l_mark[0].decl_spec.text);
2405 yyval.text.begin = yystack.l_mark[0].decl_spec.begin;
2406 free(yystack.l_mark[0].decl_spec.text);
2410 #line 858 "grammar.y"
2412 (void)sprintf(yyval.text.text, "%s%s ", yystack.l_mark[-1].text.text, yystack.l_mark[0].decl_spec.text);
2413 yyval.text.begin = yystack.l_mark[-1].text.begin;
2414 free(yystack.l_mark[0].decl_spec.text);
2418 #line 868 "grammar.y"
2420 add_ident_list(&yyval.param_list, &yystack.l_mark[-2].param_list, "...");
2424 #line 875 "grammar.y"
2426 new_param_list(&yyval.param_list, yystack.l_mark[0].parameter);
2430 #line 879 "grammar.y"
2432 add_param_list(&yyval.param_list, &yystack.l_mark[-2].param_list, yystack.l_mark[0].parameter);
2436 #line 886 "grammar.y"
2438 check_untagged(&yystack.l_mark[-1].decl_spec);
2439 yyval.parameter = new_parameter(&yystack.l_mark[-1].decl_spec, yystack.l_mark[0].declarator);
2443 #line 891 "grammar.y"
2445 check_untagged(&yystack.l_mark[-1].decl_spec);
2446 yyval.parameter = new_parameter(&yystack.l_mark[-1].decl_spec, yystack.l_mark[0].declarator);
2450 #line 896 "grammar.y"
2452 check_untagged(&yystack.l_mark[0].decl_spec);
2453 yyval.parameter = new_parameter(&yystack.l_mark[0].decl_spec, (Declarator *)0);
2457 #line 904 "grammar.y"
2459 new_ident_list(&yyval.param_list);
2463 #line 912 "grammar.y"
2465 new_ident_list(&yyval.param_list);
2466 add_ident_list(&yyval.param_list, &yyval.param_list, yystack.l_mark[0].text.text);
2470 #line 917 "grammar.y"
2472 add_ident_list(&yyval.param_list, &yystack.l_mark[-2].param_list, yystack.l_mark[0].text.text);
2476 #line 924 "grammar.y"
2478 yyval.text = yystack.l_mark[0].text;
2482 #line 928 "grammar.y"
2485 if (lintLibrary()) { /* Lint doesn't grok C++ ref variables */
2486 yyval.text = yystack.l_mark[0].text;
2489 (void)sprintf(yyval.text.text, "&%s", yystack.l_mark[0].text.text);
2490 yyval.text.begin = yystack.l_mark[-1].text.begin;
2494 #line 941 "grammar.y"
2496 yyval.declarator = new_declarator(yystack.l_mark[0].text.text, "", yystack.l_mark[0].text.begin);
2500 #line 945 "grammar.y"
2502 yyval.declarator = yystack.l_mark[0].declarator;
2503 (void)sprintf(buf, "%s%s", yystack.l_mark[-1].text.text, yyval.declarator->text);
2504 free(yyval.declarator->text);
2505 yyval.declarator->text = xstrdup(buf);
2506 yyval.declarator->begin = yystack.l_mark[-1].text.begin;
2510 #line 957 "grammar.y"
2512 yyval.declarator = yystack.l_mark[-1].declarator;
2513 (void)sprintf(buf, "(%s)", yyval.declarator->text);
2514 free(yyval.declarator->text);
2515 yyval.declarator->text = xstrdup(buf);
2516 yyval.declarator->begin = yystack.l_mark[-2].text.begin;
2520 #line 965 "grammar.y"
2522 yyval.declarator = yystack.l_mark[-1].declarator;
2523 (void)sprintf(buf, "%s%s", yyval.declarator->text, yystack.l_mark[0].text.text);
2524 free(yyval.declarator->text);
2525 yyval.declarator->text = xstrdup(buf);
2529 #line 972 "grammar.y"
2531 yyval.declarator = new_declarator(yystack.l_mark[0].text.text, "", yystack.l_mark[0].text.begin);
2535 #line 976 "grammar.y"
2537 yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-3].declarator->begin);
2538 yyval.declarator->params = yystack.l_mark[-1].param_list;
2539 yyval.declarator->func_stack = yystack.l_mark[-3].declarator;
2540 yyval.declarator->head = (yystack.l_mark[-3].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-3].declarator->head;
2541 yyval.declarator->func_def = FUNC_ANSI;
2545 #line 984 "grammar.y"
2547 yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-2].declarator->begin);
2548 yyval.declarator->func_stack = yystack.l_mark[-2].declarator;
2549 yyval.declarator->head = (yystack.l_mark[-2].declarator->func_stack == NULL) ? yyval.declarator : yystack.l_mark[-2].declarator->head;
2550 yyval.declarator->func_def = FUNC_ANSI;
2554 #line 991 "grammar.y"
2558 d = new_declarator("", "", yystack.l_mark[-2].text.begin);
2559 yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-2].text.begin);
2560 yyval.declarator->params = yystack.l_mark[-1].param_list;
2561 yyval.declarator->func_stack = d;
2562 yyval.declarator->head = yyval.declarator;
2563 yyval.declarator->func_def = FUNC_ANSI;
2567 #line 1002 "grammar.y"
2571 d = new_declarator("", "", yystack.l_mark[-1].text.begin);
2572 yyval.declarator = new_declarator("%s()", "", yystack.l_mark[-1].text.begin);
2573 yyval.declarator->func_stack = d;
2574 yyval.declarator->head = yyval.declarator;
2575 yyval.declarator->func_def = FUNC_ANSI;
2578 #line 2579 "grammar.tab.c"
2582 yystack.s_mark -= yym;
2583 yystate = *yystack.s_mark;
2584 yystack.l_mark -= yym;
2585 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2586 yystack.p_mark -= yym;
2589 if (yystate == 0 && yym == 0)
2594 fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
2595 #ifdef YYSTYPE_TOSTRING
2598 #endif /* YYBTYACC */
2599 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));
2601 fprintf(stderr, "shifting from state 0 to final state %d\n", YYFINAL);
2605 *++yystack.s_mark = YYFINAL;
2606 *++yystack.l_mark = yyval;
2607 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2608 *++yystack.p_mark = yyloc;
2616 /* we're currently re-reading tokens */
2618 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2626 /* in trial mode; save scanner results for future parse attempts */
2627 if (yylvp == yylvlim)
2628 { /* Enlarge lexical value queue */
2629 int p = yylvp - yylvals;
2630 int s = yylvlim - yylvals;
2632 s += YYLVQUEUEGROWTH;
2633 if ((yylexemes = (short *) realloc(yylexemes, s * sizeof(short))) == NULL)
2635 if ((yylvals = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)
2637 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2638 if ((yylpsns = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)
2641 yylvp = yylve = yylvals + p;
2642 yylvlim = yylvals + s;
2643 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2644 yylpp = yylpe = yylpsns + p;
2645 yylplim = yylpsns + s;
2647 yylexp = yylexemes + p;
2649 *yylexp = (short) YYLEX;
2652 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2659 /* normal operation, no conflict encountered */
2660 #endif /* YYBTYACC */
2664 #endif /* YYBTYACC */
2665 if (yychar < 0) yychar = YYEOF;
2666 /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */
2670 yys = yyname[YYTRANSLATE(yychar)];
2671 fprintf(stderr, "%s[%d]: state %d, reading %d (%s)\n",
2672 YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);
2676 if (yychar == YYEOF) goto yyaccept;
2679 if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
2680 yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
2681 yystate = yytable[yyn];
2683 yystate = yydgoto[yym];
2687 fprintf(stderr, "%s[%d]: after reduction, ", YYDEBUGSTR, yydepth);
2688 #ifdef YYSTYPE_TOSTRING
2691 #endif /* YYBTYACC */
2692 fprintf(stderr, "result is <%s>, ", YYSTYPE_TOSTRING(yystos[yystate], yyval));
2694 fprintf(stderr, "shifting from state %d to state %d\n", *yystack.s_mark, yystate);
2697 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
2698 *++yystack.s_mark = (short) yystate;
2699 *++yystack.l_mark = yyval;
2700 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2701 *++yystack.p_mark = yyloc;
2706 /* Reduction declares that this path is valid. Set yypath and do a full parse */
2708 if (yypath) YYABORT;
2711 YYParseState *save = yyps->save;
2712 yyps->save = save->save;
2713 save->save = yypath;
2718 fprintf(stderr, "%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\n",
2719 YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));
2723 yyFreeState(yyerrctx);
2726 yylvp = yylvals + yypath->lexeme;
2727 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2728 yylpp = yylpsns + yypath->lexeme;
2730 yylexp = yylexemes + yypath->lexeme;
2732 yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);
2733 memcpy (yystack.s_base, yypath->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));
2734 yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);
2735 memcpy (yystack.l_base, yypath->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));
2736 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2737 yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);
2738 memcpy (yystack.p_base, yypath->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));
2740 yystate = yypath->state;
2742 #endif /* YYBTYACC */
2745 YYERROR_CALL("yacc stack overflow");
2749 YYERROR_CALL("memory exhausted");
2751 #endif /* YYBTYACC */
2761 if (yyps->save) goto yyvalid;
2762 #endif /* YYBTYACC */
2766 #if defined(YYDESTRUCT_CALL)
2767 if (yychar != YYEOF && yychar != YYEMPTY)
2768 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2769 YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval, &yylloc);
2771 YYDESTRUCT_CALL("cleanup: discarding token", yychar, &yylval);
2772 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
2776 #if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)
2779 for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)
2780 YYDESTRUCT_CALL("cleanup: discarding state",
2781 yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);
2783 for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)
2784 YYDESTRUCT_CALL("cleanup: discarding state",
2785 yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);
2786 #endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */
2788 #endif /* defined(YYDESTRUCT_CALL) */
2793 yyFreeState(yyerrctx);
2798 YYParseState *save = yyps;
2805 YYParseState *save = yypath;
2806 yypath = save->save;
2810 #endif /* YYBTYACC */
2811 yyfreestack(&yystack);