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