btyaccpar.c revision 268899
1193326Sed/* This file generated automatically using 2193326Sed * @Id: skel2c,v 1.3 2014/04/06 19:48:04 tom Exp @ 3193326Sed */ 4193326Sed 5193326Sed/* @Id: btyaccpar.skel,v 1.1 2014/04/02 22:44:41 tom Exp @ */ 6193326Sed 7193326Sed#include "defs.h" 8193326Sed 9193326Sed/* If the skeleton is changed, the banner should be changed so that */ 10193326Sed/* the altered version can be easily distinguished from the original. */ 11193326Sed/* */ 12193326Sed/* The #defines included with the banner are there because they are */ 13193326Sed/* useful in subsequent code. The macros #defined in the header or */ 14193326Sed/* the body either are not useful outside of semantic actions or */ 15218893Sdim/* are conditional. */ 16234353Sdim 17234353Sdimconst char *const banner[] = 18249423Sdim{ 19212904Sdim "/* original parser id follows */", 20249423Sdim "/* yysccsid[] = \"@(#)yaccpar 1.9 (Berkeley) 02/21/93\" */", 21226633Sdim "/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */", 22198893Srdivacky "", 23198893Srdivacky "#define YYBYACC 1", 24193326Sed CONCAT1("#define YYMAJOR ", YYMAJOR), 25193326Sed CONCAT1("#define YYMINOR ", YYMINOR), 26221345Sdim#ifdef YYPATCH 27221345Sdim CONCAT1("#define YYPATCH ", YYPATCH), 28221345Sdim#endif 29221345Sdim "", 30221345Sdim "#define YYEMPTY (-1)", 31221345Sdim "#define yyclearin (yychar = YYEMPTY)", 32221345Sdim "#define yyerrok (yyerrflag = 0)", 33221345Sdim "#define YYRECOVERING() (yyerrflag != 0)", 34226633Sdim "#define YYENOMEM (-2)", 35221345Sdim "#define YYEOF 0", 36221345Sdim 0 37221345Sdim}; 38221345Sdim 39239462Sdimconst char *const xdecls[] = 40221345Sdim{ 41221345Sdim "", 42226633Sdim "extern int YYPARSE_DECL();", 43221345Sdim 0 44221345Sdim}; 45221345Sdim 46221345Sdimconst char *const tables[] = 47221345Sdim{ 48221345Sdim "extern const YYINT yylhs[];", 49221345Sdim "extern const YYINT yylen[];", 50221345Sdim "extern const YYINT yydefred[];", 51221345Sdim "extern const YYINT yystos[];", 52221345Sdim "extern const YYINT yydgoto[];", 53221345Sdim "extern const YYINT yysindex[];", 54221345Sdim "extern const YYINT yyrindex[];", 55221345Sdim#if defined(YYBTYACC) 56221345Sdim "#if YYBTYACC", 57221345Sdim "extern const YYINT yycindex[];", 58221345Sdim "#endif /* YYBTYACC */", 59221345Sdim#endif /* defined(YYBTYACC) */ 60221345Sdim "extern const YYINT yygindex[];", 61221345Sdim "extern const YYINT yytable[];", 62221345Sdim "extern const YYINT yycheck[];", 63226633Sdim#if defined(YYBTYACC) 64221345Sdim "#if YYBTYACC", 65221345Sdim "extern const YYINT yyctable[];", 66221345Sdim "#endif /* YYBTYACC */", 67221345Sdim#endif /* defined(YYBTYACC) */ 68221345Sdim "", 69221345Sdim "#if YYDEBUG", 70221345Sdim "extern const char *const yyname[];", 71221345Sdim "extern const char *const yyrule[];", 72221345Sdim "#endif", 73221345Sdim 0 74226633Sdim}; 75226633Sdim 76226633Sdimconst char *const global_vars[] = 77226633Sdim{ 78226633Sdim "", 79226633Sdim "int yydebug;", 80226633Sdim "int yynerrs;", 81226633Sdim 0 82226633Sdim}; 83239462Sdim 84226633Sdimconst char *const impure_vars[] = 85226633Sdim{ 86226633Sdim "", 87226633Sdim "int yyerrflag;", 88226633Sdim "int yychar;", 89226633Sdim "YYSTYPE yyval;", 90226633Sdim "YYSTYPE yylval;", 91226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 92226633Sdim "YYLTYPE yyloc; /* position returned by actions */", 93226633Sdim "YYLTYPE yylloc; /* position from the lexer */", 94226633Sdim "#endif", 95226633Sdim 0 96226633Sdim}; 97226633Sdim 98226633Sdimconst char *const hdr_defs[] = 99243830Sdim{ 100243830Sdim "", 101243830Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 102249423Sdim "#ifndef YYLLOC_DEFAULT", 103243830Sdim "#define YYLLOC_DEFAULT(loc, rhs, n) \\", 104243830Sdim "do \\", 105243830Sdim "{ \\", 106243830Sdim " if (n == 0) \\", 107243830Sdim " { \\", 108243830Sdim " (loc).first_line = ((rhs)[-1]).last_line; \\", 109243830Sdim " (loc).first_column = ((rhs)[-1]).last_column; \\", 110243830Sdim " (loc).last_line = ((rhs)[-1]).last_line; \\", 111243830Sdim " (loc).last_column = ((rhs)[-1]).last_column; \\", 112243830Sdim " } \\", 113243830Sdim " else \\", 114243830Sdim " { \\", 115243830Sdim " (loc).first_line = ((rhs)[ 0 ]).first_line; \\", 116243830Sdim " (loc).first_column = ((rhs)[ 0 ]).first_column; \\", 117243830Sdim " (loc).last_line = ((rhs)[n-1]).last_line; \\", 118243830Sdim " (loc).last_column = ((rhs)[n-1]).last_column; \\", 119243830Sdim " } \\", 120243830Sdim "} while (0)", 121243830Sdim "#endif /* YYLLOC_DEFAULT */", 122243830Sdim "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */", 123243830Sdim#if defined(YYBTYACC) 124243830Sdim "#if YYBTYACC", 125243830Sdim "", 126243830Sdim "#ifndef YYLVQUEUEGROWTH", 127243830Sdim "#define YYLVQUEUEGROWTH 32", 128243830Sdim "#endif", 129243830Sdim "#endif /* YYBTYACC */", 130243830Sdim#endif /* defined(YYBTYACC) */ 131243830Sdim "", 132243830Sdim "/* define the initial stack-sizes */", 133243830Sdim "#ifdef YYSTACKSIZE", 134243830Sdim "#undef YYMAXDEPTH", 135243830Sdim "#define YYMAXDEPTH YYSTACKSIZE", 136243830Sdim "#else", 137243830Sdim "#ifdef YYMAXDEPTH", 138198092Srdivacky "#define YYSTACKSIZE YYMAXDEPTH", 139193326Sed "#else", 140198092Srdivacky "#define YYSTACKSIZE 10000", 141198092Srdivacky "#define YYMAXDEPTH 10000", 142198092Srdivacky "#endif", 143198092Srdivacky "#endif", 144193326Sed "", 145193326Sed "#ifndef YYINITSTACKSIZE", 146193326Sed "#define YYINITSTACKSIZE 200", 147193326Sed "#endif", 148193326Sed "", 149193326Sed "typedef struct {", 150193326Sed " unsigned stacksize;", 151198092Srdivacky " short *s_base;", 152193326Sed " short *s_mark;", 153198092Srdivacky " short *s_last;", 154198092Srdivacky " YYSTYPE *l_base;", 155198092Srdivacky " YYSTYPE *l_mark;", 156198092Srdivacky "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 157198092Srdivacky " YYLTYPE *p_base;", 158198092Srdivacky " YYLTYPE *p_mark;", 159198092Srdivacky "#endif", 160198092Srdivacky "} YYSTACKDATA;", 161198092Srdivacky#if defined(YYBTYACC) 162198092Srdivacky "#if YYBTYACC", 163198092Srdivacky "", 164204643Srdivacky "struct YYParseState_s", 165204643Srdivacky "{", 166204643Srdivacky " struct YYParseState_s *save; /* Previously saved parser state */", 167204643Srdivacky " YYSTACKDATA yystack; /* saved parser stack */", 168204643Srdivacky " int state; /* saved parser state */", 169204643Srdivacky " int errflag; /* saved error recovery status */", 170204643Srdivacky " int lexeme; /* saved index of the conflict lexeme in the lexical queue */", 171204643Srdivacky " YYINT ctry; /* saved index in yyctable[] for this conflict */", 172249423Sdim "};", 173249423Sdim "typedef struct YYParseState_s YYParseState;", 174249423Sdim "#endif /* YYBTYACC */", 175249423Sdim#endif /* defined(YYBTYACC) */ 176249423Sdim 0 177249423Sdim}; 178249423Sdim 179204643Srdivackyconst char *const hdr_vars[] = 180198092Srdivacky{ 181212904Sdim "/* variables for the parser stack */", 182204643Srdivacky "static YYSTACKDATA yystack;", 183221345Sdim#if defined(YYBTYACC) 184249423Sdim "#if YYBTYACC", 185249423Sdim "", 186234353Sdim "/* Current parser state */", 187193326Sed "static YYParseState *yyps = 0;", 188193326Sed "", 189193326Sed "/* yypath != NULL: do the full parse, starting at *yypath parser state. */", 190249423Sdim "static YYParseState *yypath = 0;", 191219077Sdim "", 192219077Sdim "/* Base of the lexical value queue */", 193219077Sdim "static YYSTYPE *yylvals = 0;", 194193326Sed "", 195204643Srdivacky "/* Current position at lexical value queue */", 196193326Sed "static YYSTYPE *yylvp = 0;", 197193326Sed "", 198249423Sdim "/* End position of lexical value queue */", 199249423Sdim "static YYSTYPE *yylve = 0;", 200249423Sdim "", 201193326Sed "/* The last allocated position at the lexical value queue */", 202193326Sed "static YYSTYPE *yylvlim = 0;", 203193326Sed "", 204193326Sed "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 205193326Sed "/* Base of the lexical position queue */", 206193326Sed "static YYLTYPE *yylpsns = 0;", 207193326Sed "", 208198092Srdivacky "/* Current position at lexical position queue */", 209193326Sed "static YYLTYPE *yylpp = 0;", 210219077Sdim "", 211219077Sdim "/* End position of lexical position queue */", 212243830Sdim "static YYLTYPE *yylpe = 0;", 213243830Sdim "", 214243830Sdim "/* The last allocated position at the lexical position queue */", 215193326Sed "static YYLTYPE *yylplim = 0;", 216193326Sed "#endif", 217193326Sed "", 218204643Srdivacky "/* Current position at lexical token queue */", 219204643Srdivacky "static short *yylexp = 0;", 220204643Srdivacky "", 221204643Srdivacky "static short *yylexemes = 0;", 222204643Srdivacky "#endif /* YYBTYACC */", 223204643Srdivacky#endif /* defined(YYBTYACC) */ 224234353Sdim 0 225234353Sdim}; 226234353Sdim 227234353Sdimconst char *const body_vars[] = 228234353Sdim{ 229234353Sdim " int yyerrflag;", 230234353Sdim " int yychar;", 231234353Sdim " YYSTYPE yyval;", 232234353Sdim " YYSTYPE yylval;", 233234353Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 234234353Sdim " YYLTYPE yyloc; /* position returned by actions */", 235234353Sdim " YYLTYPE yylloc; /* position from the lexer */", 236234353Sdim "#endif", 237234353Sdim "", 238234353Sdim " /* variables for the parser stack */", 239234353Sdim " YYSTACKDATA yystack;", 240193326Sed#if defined(YYBTYACC) 241198092Srdivacky "#if YYBTYACC", 242198092Srdivacky "", 243198092Srdivacky " /* Current parser state */", 244198092Srdivacky " static YYParseState *yyps = 0;", 245198092Srdivacky "", 246198092Srdivacky " /* yypath != NULL: do the full parse, starting at *yypath parser state. */", 247198092Srdivacky " static YYParseState *yypath = 0;", 248198092Srdivacky "", 249198092Srdivacky " /* Base of the lexical value queue */", 250198092Srdivacky " static YYSTYPE *yylvals = 0;", 251198092Srdivacky "", 252212904Sdim " /* Current position at lexical value queue */", 253198092Srdivacky " static YYSTYPE *yylvp = 0;", 254198092Srdivacky "", 255198092Srdivacky " /* End position of lexical value queue */", 256198092Srdivacky " static YYSTYPE *yylve = 0;", 257210299Sed "", 258221345Sdim " /* The last allocated position at the lexical value queue */", 259221345Sdim " static YYSTYPE *yylvlim = 0;", 260221345Sdim "", 261221345Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 262226633Sdim " /* Base of the lexical position queue */", 263226633Sdim " static YYLTYPE *yylpsns = 0;", 264226633Sdim "", 265198092Srdivacky " /* Current position at lexical position queue */", 266198092Srdivacky " static YYLTYPE *yylpp = 0;", 267198092Srdivacky "", 268193326Sed " /* End position of lexical position queue */", 269195099Sed " static YYLTYPE *yylpe = 0;", 270195099Sed "", 271195099Sed " /* The last allocated position at the lexical position queue */", 272195099Sed " static YYLTYPE *yylplim = 0;", 273195099Sed "#endif", 274198092Srdivacky "", 275198092Srdivacky " /* Current position at lexical token queue */", 276198092Srdivacky " static short *yylexp = 0;", 277198092Srdivacky "", 278198092Srdivacky " static short *yylexemes = 0;", 279198092Srdivacky "#endif /* YYBTYACC */", 280199482Srdivacky#endif /* defined(YYBTYACC) */ 281195099Sed 0 282198893Srdivacky}; 283198893Srdivacky 284198893Srdivackyconst char *const body_1[] = 285199482Srdivacky{ 286198893Srdivacky "", 287198893Srdivacky "/* For use in generated program */", 288198893Srdivacky "#define yydepth (int)(yystack.s_mark - yystack.s_base)", 289198893Srdivacky#if defined(YYBTYACC) 290199482Srdivacky "#if YYBTYACC", 291199482Srdivacky "#define yytrial (yyps->save)", 292198893Srdivacky "#endif /* YYBTYACC */", 293199482Srdivacky#endif /* defined(YYBTYACC) */ 294198893Srdivacky "", 295199990Srdivacky "#if YYDEBUG", 296199990Srdivacky "#include <stdio.h> /* needed for printf */", 297198893Srdivacky "#endif", 298198893Srdivacky "", 299198893Srdivacky "#include <stdlib.h> /* needed for malloc, etc */", 300199482Srdivacky "#include <string.h> /* needed for memset */", 301198893Srdivacky "", 302198893Srdivacky "/* allocate initial stack or double stack size, up to YYMAXDEPTH */", 303198893Srdivacky "static int yygrowstack(YYSTACKDATA *data)", 304199482Srdivacky "{", 305195099Sed " int i;", 306193326Sed " unsigned newsize;", 307198092Srdivacky " short *newss;", 308199482Srdivacky " YYSTYPE *newvs;", 309199482Srdivacky "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 310199482Srdivacky " YYLTYPE *newps;", 311199482Srdivacky "#endif", 312199482Srdivacky "", 313199482Srdivacky " if ((newsize = data->stacksize) == 0)", 314199482Srdivacky " newsize = YYINITSTACKSIZE;", 315199482Srdivacky " else if (newsize >= YYMAXDEPTH)", 316199482Srdivacky " return YYENOMEM;", 317199482Srdivacky " else if ((newsize *= 2) > YYMAXDEPTH)", 318210299Sed " newsize = YYMAXDEPTH;", 319234353Sdim "", 320234353Sdim " i = (int) (data->s_mark - data->s_base);", 321234353Sdim " newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));", 322234353Sdim " if (newss == 0)", 323234353Sdim " return YYENOMEM;", 324234353Sdim "", 325234353Sdim " data->s_base = newss;", 326210299Sed " data->s_mark = newss + i;", 327210299Sed "", 328204643Srdivacky " newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));", 329198092Srdivacky " if (newvs == 0)", 330193326Sed " return YYENOMEM;", 331193326Sed "", 332198092Srdivacky " data->l_base = newvs;", 333193326Sed " data->l_mark = newvs + i;", 334198092Srdivacky "", 335193326Sed "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 336193326Sed " newps = (YYLTYPE *)realloc(data->p_base, newsize * sizeof(*newps));", 337193326Sed " if (newps == 0)", 338193326Sed " return YYENOMEM;", 339193326Sed "", 340193326Sed " data->p_base = newps;", 341224145Sdim " data->p_mark = newps + i;", 342204643Srdivacky "#endif", 343204643Srdivacky "", 344204643Srdivacky " data->stacksize = newsize;", 345204643Srdivacky " data->s_last = data->s_base + newsize - 1;", 346193326Sed "", 347249423Sdim "#if YYDEBUG", 348249423Sdim " if (yydebug)", 349249423Sdim " fprintf(stderr, \"%sdebug: stack size increased to %d\\n\", YYPREFIX, newsize);", 350221345Sdim "#endif", 351221345Sdim " return 0;", 352221345Sdim "}", 353221345Sdim "", 354221345Sdim "#if YYPURE || defined(YY_NO_LEAKS)", 355193326Sed "static void yyfreestack(YYSTACKDATA *data)", 356234353Sdim "{", 357221345Sdim " free(data->s_base);", 358243830Sdim " free(data->l_base);", 359221345Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 360221345Sdim " free(data->p_base);", 361221345Sdim "#endif", 362234353Sdim " memset(data, 0, sizeof(*data));", 363234353Sdim "}", 364221345Sdim "#else", 365221345Sdim "#define yyfreestack(data) /* nothing */", 366221345Sdim "#endif /* YYPURE || defined(YY_NO_LEAKS) */", 367221345Sdim#if defined(YYBTYACC) 368221345Sdim "#if YYBTYACC", 369221345Sdim "", 370221345Sdim "static YYParseState *", 371221345Sdim "yyNewState(unsigned size)", 372221345Sdim "{", 373221345Sdim " YYParseState *p = (YYParseState *) malloc(sizeof(YYParseState));", 374221345Sdim " if (p == NULL) return NULL;", 375195099Sed "", 376223017Sdim " p->yystack.stacksize = size;", 377221345Sdim " if (size == 0)", 378193326Sed " {", 379193326Sed " p->yystack.s_base = NULL;", 380195099Sed " p->yystack.l_base = NULL;", 381195099Sed "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 382195099Sed " p->yystack.p_base = NULL;", 383195099Sed "#endif", 384195099Sed " return p;", 385195099Sed " }", 386195099Sed " p->yystack.s_base = (short *) malloc(size * sizeof(short));", 387195099Sed " if (p->yystack.s_base == NULL) return NULL;", 388195099Sed " p->yystack.l_base = (YYSTYPE *) malloc(size * sizeof(YYSTYPE));", 389195099Sed " if (p->yystack.l_base == NULL) return NULL;", 390195099Sed " memset(p->yystack.l_base, 0, size * sizeof(YYSTYPE));", 391195099Sed "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 392195099Sed " p->yystack.p_base = (YYLTYPE *) malloc(size * sizeof(YYLTYPE));", 393200583Srdivacky " if (p->yystack.p_base == NULL) return NULL;", 394200583Srdivacky " memset(p->yystack.p_base, 0, size * sizeof(YYLTYPE));", 395200583Srdivacky "#endif", 396204643Srdivacky "", 397219077Sdim " return p;", 398219077Sdim "}", 399219077Sdim "", 400204643Srdivacky "static void", 401204643Srdivacky "yyFreeState(YYParseState *p)", 402204643Srdivacky "{", 403204643Srdivacky " yyfreestack(&p->yystack);", 404204643Srdivacky " free(p);", 405204643Srdivacky "}", 406206084Srdivacky "#endif /* YYBTYACC */", 407204643Srdivacky#endif /* defined(YYBTYACC) */ 408204643Srdivacky "", 409204643Srdivacky "#define YYABORT goto yyabort", 410204643Srdivacky "#define YYREJECT goto yyabort", 411200583Srdivacky "#define YYACCEPT goto yyaccept", 412200583Srdivacky "#define YYERROR goto yyerrlab", 413195099Sed#if defined(YYBTYACC) 414204643Srdivacky "#if YYBTYACC", 415210299Sed "#define YYVALID do { if (yyps->save) goto yyvalid; } while(0)", 416204643Srdivacky "#define YYVALID_NESTED do { if (yyps->save && \\", 417204643Srdivacky " yyps->save->save == 0) goto yyvalid; } while(0)", 418204643Srdivacky "#endif /* YYBTYACC */", 419204643Srdivacky#endif /* defined(YYBTYACC) */ 420204643Srdivacky "", 421249423Sdim "int", 422249423Sdim "YYPARSE_DECL()", 423249423Sdim "{", 424195099Sed 0 425195099Sed}; 426195099Sed 427200583Srdivackyconst char *const body_2[] = 428200583Srdivacky{ 429195099Sed " int yym, yyn, yystate, yyresult;", 430198092Srdivacky#if defined(YYBTYACC) 431243830Sdim "#if YYBTYACC", 432243830Sdim " int yynewerrflag;", 433219077Sdim " YYParseState *yyerrctx = NULL;", 434219077Sdim "#endif /* YYBTYACC */", 435219077Sdim#endif /* defined(YYBTYACC) */ 436219077Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 437219077Sdim " YYLTYPE yyerror_loc_range[2]; /* position of error start & end */", 438195099Sed "#endif", 439195099Sed "#if YYDEBUG", 440198092Srdivacky " const char *yys;", 441226633Sdim "", 442221345Sdim " if ((yys = getenv(\"YYDEBUG\")) != 0)", 443195099Sed " {", 444195099Sed " yyn = *yys;", 445195099Sed " if (yyn >= '0' && yyn <= '9')", 446195099Sed " yydebug = yyn - '0';", 447198893Srdivacky " }", 448198893Srdivacky " if (yydebug)", 449208600Srdivacky " fprintf(stderr, \"%sdebug[<# of symbols on state stack>]\\n\", YYPREFIX);", 450210299Sed "#endif", 451212904Sdim "", 452198893Srdivacky#if defined(YYBTYACC) 453198092Srdivacky "#if YYBTYACC", 454198092Srdivacky " yyps = yyNewState(0); if (yyps == 0) goto yyenomem;", 455208600Srdivacky " yyps->save = 0;", 456208600Srdivacky "#endif /* YYBTYACC */", 457234353Sdim#endif /* defined(YYBTYACC) */ 458195099Sed " yynerrs = 0;", 459195099Sed " yyerrflag = 0;", 460195099Sed " yychar = YYEMPTY;", 461195099Sed " yystate = 0;", 462195099Sed "", 463198893Srdivacky "#if YYPURE", 464234353Sdim " memset(&yystack, 0, sizeof(yystack));", 465234353Sdim "#endif", 466204643Srdivacky "", 467195099Sed " if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;", 468208600Srdivacky " yystack.s_mark = yystack.s_base;", 469208600Srdivacky " yystack.l_mark = yystack.l_base;", 470208600Srdivacky "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 471221345Sdim " yystack.p_mark = yystack.p_base;", 472208600Srdivacky "#endif", 473208600Srdivacky " yystate = 0;", 474208600Srdivacky " *yystack.s_mark = 0;", 475208600Srdivacky "", 476221345Sdim "yyloop:", 477234353Sdim " if ((yyn = yydefred[yystate]) != 0) goto yyreduce;", 478221345Sdim " if (yychar < 0)", 479221345Sdim " {", 480221345Sdim#if defined(YYBTYACC) 481208600Srdivacky "#if YYBTYACC", 482208600Srdivacky " do {", 483208600Srdivacky " if (yylvp < yylve)", 484210299Sed " {", 485210299Sed " /* we're currently re-reading tokens */", 486234353Sdim " yylval = *yylvp++;", 487210299Sed "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 488210299Sed " yylloc = *yylpp++;", 489210299Sed "#endif", 490210299Sed " yychar = *yylexp++;", 491234353Sdim " break;", 492234353Sdim " }", 493234353Sdim " if (yyps->save)", 494210299Sed " {", 495210299Sed " /* in trial mode; save scanner results for future parse attempts */", 496208600Srdivacky " if (yylvp == yylvlim)", 497210299Sed " { /* Enlarge lexical value queue */", 498208600Srdivacky " int p = yylvp - yylvals;", 499195099Sed " int s = yylvlim - yylvals;", 500195099Sed "", 501195099Sed " s += YYLVQUEUEGROWTH;", 502193326Sed " if ((yylexemes = (short *) realloc(yylexemes, s * sizeof(short))) == NULL) goto yyenomem;", 503193326Sed " if ((yylvals = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL) goto yyenomem;", 504193326Sed "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 505193326Sed " if ((yylpsns = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL) goto yyenomem;", 506198092Srdivacky "#endif", 507204643Srdivacky " yylvp = yylve = yylvals + p;", 508204643Srdivacky " yylvlim = yylvals + s;", 509204643Srdivacky "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 510204643Srdivacky " yylpp = yylpe = yylpsns + p;", 511204643Srdivacky " yylplim = yylpsns + s;", 512204643Srdivacky "#endif", 513204643Srdivacky " yylexp = yylexemes + p;", 514193326Sed " }", 515193326Sed " *yylexp = (short) YYLEX;", 516193326Sed " *yylvp++ = yylval;", 517193326Sed " yylve++;", 518193326Sed "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 519193326Sed " *yylpp++ = yylloc;", 520193326Sed " yylpe++;", 521193326Sed "#endif", 522193326Sed " yychar = *yylexp++;", 523193326Sed " break;", 524193326Sed " }", 525193326Sed " /* normal operation, no conflict encountered */", 526195341Sed "#endif /* YYBTYACC */", 527193326Sed#endif /* defined(YYBTYACC) */ 528193326Sed " yychar = YYLEX;", 529193326Sed#if defined(YYBTYACC) 530193326Sed "#if YYBTYACC", 531193326Sed " } while (0);", 532193326Sed "#endif /* YYBTYACC */", 533193326Sed#endif /* defined(YYBTYACC) */ 534193326Sed " if (yychar < 0) yychar = YYEOF;", 535193326Sed " /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */", 536193326Sed "#if YYDEBUG", 537193326Sed " if (yydebug)", 538193326Sed " {", 539193326Sed " yys = yyname[YYTRANSLATE(yychar)];", 540193326Sed " fprintf(stderr, \"%s[%d]: state %d, reading token %d (%s)\",", 541193326Sed " YYDEBUGSTR, yydepth, yystate, yychar, yys);", 542193326Sed "#ifdef YYSTYPE_TOSTRING", 543193326Sed#if defined(YYBTYACC) 544193326Sed "#if YYBTYACC", 545193326Sed " if (!yytrial)", 546193326Sed "#endif /* YYBTYACC */", 547193326Sed#endif /* defined(YYBTYACC) */ 548193326Sed " fprintf(stderr, \" <%s>\", YYSTYPE_TOSTRING(yychar, yylval));", 549193326Sed "#endif", 550193326Sed " fputc('\\n', stderr);", 551193326Sed " }", 552193326Sed "#endif", 553193326Sed " }", 554193326Sed#if defined(YYBTYACC) 555193326Sed "#if YYBTYACC", 556193326Sed "", 557193326Sed " /* Do we have a conflict? */", 558212904Sdim " if (((yyn = yycindex[yystate]) != 0) && (yyn += yychar) >= 0 &&", 559193326Sed " yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)", 560193326Sed " {", 561193326Sed " YYINT ctry;", 562193326Sed "", 563193326Sed " if (yypath)", 564234353Sdim " {", 565234353Sdim " YYParseState *save;", 566234353Sdim "#if YYDEBUG", 567198893Srdivacky " if (yydebug)", 568234353Sdim " fprintf(stderr, \"%s[%d]: CONFLICT in state %d: following successful trial parse\\n\",", 569234353Sdim " YYDEBUGSTR, yydepth, yystate);", 570234353Sdim "#endif", 571234353Sdim " /* Switch to the next conflict context */", 572212904Sdim " save = yypath;", 573234353Sdim " yypath = save->save;", 574198893Srdivacky " save->save = NULL;", 575193326Sed " ctry = save->ctry;", 576199990Srdivacky " if (save->state != yystate) YYABORT;", 577199990Srdivacky " yyFreeState(save);", 578199990Srdivacky "", 579212904Sdim " }", 580212904Sdim " else", 581234353Sdim " {", 582234353Sdim "", 583234353Sdim " /* Unresolved conflict - start/continue trial parse */", 584193326Sed " YYParseState *save;", 585193326Sed "#if YYDEBUG", 586226633Sdim " if (yydebug)", 587226633Sdim " {", 588226633Sdim " fprintf(stderr, \"%s[%d]: CONFLICT in state %d. \", YYDEBUGSTR, yydepth, yystate);", 589226633Sdim " if (yyps->save)", 590226633Sdim " fputs(\"ALREADY in conflict, continuing trial parse.\\n\", stderr);", 591226633Sdim " else", 592226633Sdim " fputs(\"Starting trial parse.\\n\", stderr);", 593226633Sdim " }", 594226633Sdim "#endif", 595226633Sdim " save = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));", 596226633Sdim " if (save == NULL) goto yyenomem;", 597226633Sdim " save->save = yyps->save;", 598226633Sdim " save->state = yystate;", 599226633Sdim " save->errflag = yyerrflag;", 600226633Sdim " save->yystack.s_mark = save->yystack.s_base + (yystack.s_mark - yystack.s_base);", 601226633Sdim " memcpy (save->yystack.s_base, yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));", 602226633Sdim " save->yystack.l_mark = save->yystack.l_base + (yystack.l_mark - yystack.l_base);", 603226633Sdim " memcpy (save->yystack.l_base, yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));", 604226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 605226633Sdim " save->yystack.p_mark = save->yystack.p_base + (yystack.p_mark - yystack.p_base);", 606226633Sdim " memcpy (save->yystack.p_base, yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));", 607226633Sdim "#endif", 608226633Sdim " ctry = yytable[yyn];", 609226633Sdim " if (yyctable[ctry] == -1)", 610226633Sdim " {", 611226633Sdim "#if YYDEBUG", 612226633Sdim " if (yydebug && yychar >= YYEOF)", 613226633Sdim " fprintf(stderr, \"%s[%d]: backtracking 1 token\\n\", YYDEBUGSTR, yydepth);", 614226633Sdim "#endif", 615226633Sdim " ctry++;", 616226633Sdim " }", 617226633Sdim " save->ctry = ctry;", 618226633Sdim " if (yyps->save == NULL)", 619226633Sdim " {", 620226633Sdim " /* If this is a first conflict in the stack, start saving lexemes */", 621249423Sdim " if (!yylexemes)", 622226633Sdim " {", 623226633Sdim " yylexemes = (short *) malloc((YYLVQUEUEGROWTH) * sizeof(short));", 624226633Sdim " if (yylexemes == NULL) goto yyenomem;", 625234353Sdim " yylvals = (YYSTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYSTYPE));", 626234353Sdim " if (yylvals == NULL) goto yyenomem;", 627234353Sdim " yylvlim = yylvals + YYLVQUEUEGROWTH;", 628226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 629226633Sdim " yylpsns = (YYLTYPE *) malloc((YYLVQUEUEGROWTH) * sizeof(YYLTYPE));", 630226633Sdim " if (yylpsns == NULL) goto yyenomem;", 631226633Sdim " yylplim = yylpsns + YYLVQUEUEGROWTH;", 632226633Sdim "#endif", 633226633Sdim " }", 634226633Sdim " if (yylvp == yylve)", 635226633Sdim " {", 636226633Sdim " yylvp = yylve = yylvals;", 637226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 638226633Sdim " yylpp = yylpe = yylpsns;", 639249423Sdim "#endif", 640226633Sdim " yylexp = yylexemes;", 641226633Sdim " if (yychar >= YYEOF)", 642226633Sdim " {", 643226633Sdim " *yylve++ = yylval;", 644226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 645226633Sdim " *yylpe++ = yylloc;", 646226633Sdim "#endif", 647226633Sdim " *yylexp = (short) yychar;", 648226633Sdim " yychar = YYEMPTY;", 649226633Sdim " }", 650226633Sdim " }", 651226633Sdim " }", 652226633Sdim " if (yychar >= YYEOF)", 653226633Sdim " {", 654226633Sdim " yylvp--;", 655226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 656234353Sdim " yylpp--;", 657234353Sdim "#endif", 658226633Sdim " yylexp--;", 659234353Sdim " yychar = YYEMPTY;", 660226633Sdim " }", 661226633Sdim " save->lexeme = yylvp - yylvals;", 662234353Sdim " yyps->save = save;", 663234353Sdim " }", 664234353Sdim " if (yytable[yyn] == ctry)", 665234353Sdim " {", 666234353Sdim "#if YYDEBUG", 667234353Sdim " if (yydebug)", 668226633Sdim " fprintf(stderr, \"%s[%d]: state %d, shifting to state %d\\n\",", 669226633Sdim " YYDEBUGSTR, yydepth, yystate, yyctable[ctry]);", 670234353Sdim "#endif", 671226633Sdim " if (yychar < 0)", 672226633Sdim " {", 673226633Sdim " yylvp++;", 674226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 675226633Sdim " yylpp++;", 676226633Sdim "#endif", 677249423Sdim " yylexp++;", 678249423Sdim " }", 679226633Sdim " if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)", 680226633Sdim " goto yyoverflow;", 681226633Sdim " yystate = yyctable[ctry];", 682226633Sdim " *++yystack.s_mark = (short) yystate;", 683226633Sdim " *++yystack.l_mark = yylval;", 684226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 685226633Sdim " *++yystack.p_mark = yylloc;", 686226633Sdim "#endif", 687226633Sdim " yychar = YYEMPTY;", 688226633Sdim " if (yyerrflag > 0) --yyerrflag;", 689226633Sdim " goto yyloop;", 690226633Sdim " }", 691226633Sdim " else", 692234353Sdim " {", 693226633Sdim " yyn = yyctable[ctry];", 694226633Sdim " goto yyreduce;", 695226633Sdim " }", 696234353Sdim " } /* End of code dealing with conflicts */", 697226633Sdim "#endif /* YYBTYACC */", 698226633Sdim#endif /* defined(YYBTYACC) */ 699226633Sdim " if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&", 700226633Sdim " yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)", 701226633Sdim " {", 702234353Sdim "#if YYDEBUG", 703239462Sdim " if (yydebug)", 704239462Sdim " fprintf(stderr, \"%s[%d]: state %d, shifting to state %d\\n\",", 705239462Sdim " YYDEBUGSTR, yydepth, yystate, yytable[yyn]);", 706239462Sdim "#endif", 707239462Sdim " if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;", 708239462Sdim " yystate = yytable[yyn];", 709239462Sdim " *++yystack.s_mark = yytable[yyn];", 710234353Sdim " *++yystack.l_mark = yylval;", 711234353Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 712234353Sdim " *++yystack.p_mark = yylloc;", 713234353Sdim "#endif", 714234353Sdim " yychar = YYEMPTY;", 715234353Sdim " if (yyerrflag > 0) --yyerrflag;", 716226633Sdim " goto yyloop;", 717234353Sdim " }", 718226633Sdim " if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&", 719226633Sdim " yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)", 720226633Sdim " {", 721234353Sdim " yyn = yytable[yyn];", 722234353Sdim " goto yyreduce;", 723234353Sdim " }", 724234353Sdim " if (yyerrflag != 0) goto yyinrecovery;", 725234353Sdim#if defined(YYBTYACC) 726234353Sdim "#if YYBTYACC", 727234353Sdim "", 728234353Sdim " yynewerrflag = 1;", 729234353Sdim " goto yyerrhandler;", 730234353Sdim " goto yyerrlab;", 731234353Sdim "", 732234353Sdim "yyerrlab:", 733226633Sdim " yynewerrflag = 0;", 734234353Sdim "yyerrhandler:", 735226633Sdim " while (yyps->save)", 736226633Sdim " {", 737226633Sdim " int ctry;", 738226633Sdim " YYParseState *save = yyps->save;", 739234353Sdim "#if YYDEBUG", 740234353Sdim " if (yydebug)", 741226633Sdim " fprintf(stderr, \"%s[%d]: ERROR in state %d, CONFLICT BACKTRACKING to state %d, %d tokens\\n\",", 742226633Sdim " YYDEBUGSTR, yydepth, yystate, yyps->save->state,", 743226633Sdim " (int)(yylvp - yylvals - yyps->save->lexeme));", 744226633Sdim "#endif", 745226633Sdim " /* Memorize most forward-looking error state in case it's really an error. */", 746226633Sdim " if (yyerrctx == NULL || yyerrctx->lexeme < yylvp - yylvals)", 747226633Sdim " {", 748234353Sdim " /* Free old saved error context state */", 749234353Sdim " if (yyerrctx) yyFreeState(yyerrctx);", 750234353Sdim " /* Create and fill out new saved error context state */", 751234353Sdim " yyerrctx = yyNewState((unsigned)(yystack.s_mark - yystack.s_base + 1));", 752234353Sdim " if (yyerrctx == NULL) goto yyenomem;", 753234353Sdim " yyerrctx->save = yyps->save;", 754234353Sdim " yyerrctx->state = yystate;", 755226633Sdim " yyerrctx->errflag = yyerrflag;", 756226633Sdim " yyerrctx->yystack.s_mark = yyerrctx->yystack.s_base + (yystack.s_mark - yystack.s_base);", 757226633Sdim " memcpy (yyerrctx->yystack.s_base, yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));", 758226633Sdim " yyerrctx->yystack.l_mark = yyerrctx->yystack.l_base + (yystack.l_mark - yystack.l_base);", 759226633Sdim " memcpy (yyerrctx->yystack.l_base, yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));", 760234353Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 761234353Sdim " yyerrctx->yystack.p_mark = yyerrctx->yystack.p_base + (yystack.p_mark - yystack.p_base);", 762234353Sdim " memcpy (yyerrctx->yystack.p_base, yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));", 763226633Sdim "#endif", 764226633Sdim " yyerrctx->lexeme = yylvp - yylvals;", 765226633Sdim " }", 766226633Sdim " yylvp = yylvals + save->lexeme;", 767226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 768226633Sdim " yylpp = yylpsns + save->lexeme;", 769226633Sdim "#endif", 770226633Sdim " yylexp = yylexemes + save->lexeme;", 771226633Sdim " yychar = YYEMPTY;", 772226633Sdim " yystack.s_mark = yystack.s_base + (save->yystack.s_mark - save->yystack.s_base);", 773234353Sdim " memcpy (yystack.s_base, save->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));", 774226633Sdim " yystack.l_mark = yystack.l_base + (save->yystack.l_mark - save->yystack.l_base);", 775226633Sdim " memcpy (yystack.l_base, save->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));", 776226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 777226633Sdim " yystack.p_mark = yystack.p_base + (save->yystack.p_mark - save->yystack.p_base);", 778226633Sdim " memcpy (yystack.p_base, save->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));", 779226633Sdim "#endif", 780226633Sdim " ctry = ++save->ctry;", 781226633Sdim " yystate = save->state;", 782234353Sdim " /* We tried shift, try reduce now */", 783226633Sdim " if ((yyn = yyctable[ctry]) >= 0) goto yyreduce;", 784226633Sdim " yyps->save = save->save;", 785226633Sdim " save->save = NULL;", 786226633Sdim " yyFreeState(save);", 787226633Sdim "", 788249423Sdim " /* Nothing left on the stack -- error */", 789226633Sdim " if (!yyps->save)", 790226633Sdim " {", 791226633Sdim "#if YYDEBUG", 792226633Sdim " if (yydebug)", 793226633Sdim " fprintf(stderr, \"%sdebug[%d,trial]: trial parse FAILED, entering ERROR mode\\n\",", 794226633Sdim " YYPREFIX, yydepth);", 795226633Sdim "#endif", 796226633Sdim " /* Restore state as it was in the most forward-advanced error */", 797226633Sdim " yylvp = yylvals + yyerrctx->lexeme;", 798226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 799226633Sdim " yylpp = yylpsns + yyerrctx->lexeme;", 800226633Sdim "#endif", 801226633Sdim " yylexp = yylexemes + yyerrctx->lexeme;", 802226633Sdim " yychar = yylexp[-1];", 803234353Sdim " yylval = yylvp[-1];", 804234353Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 805234353Sdim " yylloc = yylpp[-1];", 806234353Sdim "#endif", 807234353Sdim " yystack.s_mark = yystack.s_base + (yyerrctx->yystack.s_mark - yyerrctx->yystack.s_base);", 808234353Sdim " memcpy (yystack.s_base, yyerrctx->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));", 809226633Sdim " yystack.l_mark = yystack.l_base + (yyerrctx->yystack.l_mark - yyerrctx->yystack.l_base);", 810226633Sdim " memcpy (yystack.l_base, yyerrctx->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));", 811234353Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 812226633Sdim " yystack.p_mark = yystack.p_base + (yyerrctx->yystack.p_mark - yyerrctx->yystack.p_base);", 813226633Sdim " memcpy (yystack.p_base, yyerrctx->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));", 814226633Sdim "#endif", 815226633Sdim " yystate = yyerrctx->state;", 816249423Sdim " yyFreeState(yyerrctx);", 817226633Sdim " yyerrctx = NULL;", 818226633Sdim " }", 819243830Sdim " yynewerrflag = 1;", 820226633Sdim " }", 821226633Sdim " if (yynewerrflag == 0) goto yyinrecovery;", 822243830Sdim "#endif /* YYBTYACC */", 823226633Sdim#endif /* defined(YYBTYACC) */ 824226633Sdim "", 825226633Sdim " YYERROR_CALL(\"syntax error\");", 826249423Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 827226633Sdim " yyerror_loc_range[0] = yylloc; /* lookahead position is error start position */", 828226633Sdim "#endif", 829226633Sdim "", 830226633Sdim "#if !YYBTYACC", 831226633Sdim " goto yyerrlab;", 832226633Sdim "yyerrlab:", 833243830Sdim "#endif", 834243830Sdim " ++yynerrs;", 835226633Sdim "", 836226633Sdim "yyinrecovery:", 837226633Sdim " if (yyerrflag < 3)", 838226633Sdim " {", 839226633Sdim " yyerrflag = 3;", 840226633Sdim " for (;;)", 841226633Sdim " {", 842226633Sdim " if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&", 843226633Sdim " yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)", 844226633Sdim " {", 845226633Sdim "#if YYDEBUG", 846249423Sdim " if (yydebug)", 847249423Sdim " fprintf(stderr, \"%s[%d]: state %d, error recovery shifting to state %d\\n\",", 848226633Sdim " YYDEBUGSTR, yydepth, *yystack.s_mark, yytable[yyn]);", 849235864Sdim "#endif", 850234982Sdim " if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;", 851234982Sdim " yystate = yytable[yyn];", 852235864Sdim " *++yystack.s_mark = yytable[yyn];", 853226633Sdim " *++yystack.l_mark = yylval;", 854226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 855226633Sdim " /* lookahead position is error end position */", 856226633Sdim " yyerror_loc_range[1] = yylloc;", 857226633Sdim " YYLLOC_DEFAULT(yyloc, yyerror_loc_range, 2); /* position of error span */", 858249423Sdim " *++yystack.p_mark = yyloc;", 859226633Sdim "#endif", 860243830Sdim " goto yyloop;", 861243830Sdim " }", 862226633Sdim " else", 863239462Sdim " {", 864226633Sdim "#if YYDEBUG", 865243830Sdim " if (yydebug)", 866226633Sdim " fprintf(stderr, \"%s[%d]: error recovery discarding state %d\\n\",", 867239462Sdim " YYDEBUGSTR, yydepth, *yystack.s_mark);", 868226633Sdim "#endif", 869226633Sdim " if (yystack.s_mark <= yystack.s_base) goto yyabort;", 870226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 871226633Sdim " /* the current TOS position is the error start position */", 872226633Sdim " yyerror_loc_range[0] = *yystack.p_mark;", 873226633Sdim "#endif", 874243830Sdim "#if defined(YYDESTRUCT_CALL)", 875226633Sdim#if defined(YYBTYACC) 876243830Sdim "#if YYBTYACC", 877243830Sdim " if (!yytrial)", 878226633Sdim "#endif /* YYBTYACC */", 879243830Sdim#endif /* defined(YYBTYACC) */ 880226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 881226633Sdim " YYDESTRUCT_CALL(\"error: discarding state\",", 882243830Sdim " yystos[*yystack.s_mark], yystack.l_mark, yystack.p_mark);", 883243830Sdim "#else", 884243830Sdim " YYDESTRUCT_CALL(\"error: discarding state\",", 885226633Sdim " yystos[*yystack.s_mark], yystack.l_mark);", 886226633Sdim "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */", 887226633Sdim "#endif /* defined(YYDESTRUCT_CALL) */", 888226633Sdim " --yystack.s_mark;", 889226633Sdim " --yystack.l_mark;", 890226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 891226633Sdim " --yystack.p_mark;", 892243830Sdim "#endif", 893226633Sdim " }", 894226633Sdim " }", 895234353Sdim " }", 896234353Sdim " else", 897234353Sdim " {", 898234353Sdim " if (yychar == YYEOF) goto yyabort;", 899234353Sdim "#if YYDEBUG", 900234353Sdim " if (yydebug)", 901234353Sdim " {", 902234353Sdim " yys = yyname[YYTRANSLATE(yychar)];", 903234353Sdim " fprintf(stderr, \"%s[%d]: state %d, error recovery discarding token %d (%s)\\n\",", 904234353Sdim " YYDEBUGSTR, yydepth, yystate, yychar, yys);", 905234353Sdim " }", 906234353Sdim "#endif", 907234353Sdim "#if defined(YYDESTRUCT_CALL)", 908234353Sdim#if defined(YYBTYACC) 909234353Sdim "#if YYBTYACC", 910234353Sdim " if (!yytrial)", 911234353Sdim "#endif /* YYBTYACC */", 912239462Sdim#endif /* defined(YYBTYACC) */ 913234353Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 914234353Sdim " YYDESTRUCT_CALL(\"error: discarding token\", yychar, &yylval, &yylloc);", 915239462Sdim "#else", 916234353Sdim " YYDESTRUCT_CALL(\"error: discarding token\", yychar, &yylval);", 917234353Sdim "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */", 918234353Sdim "#endif /* defined(YYDESTRUCT_CALL) */", 919234353Sdim " yychar = YYEMPTY;", 920234353Sdim " goto yyloop;", 921243830Sdim " }", 922234353Sdim "", 923243830Sdim "yyreduce:", 924243830Sdim " yym = yylen[yyn];", 925243830Sdim "#if YYDEBUG", 926243830Sdim " if (yydebug)", 927243830Sdim " {", 928243830Sdim " fprintf(stderr, \"%s[%d]: state %d, reducing by rule %d (%s)\",", 929243830Sdim " YYDEBUGSTR, yydepth, yystate, yyn, yyrule[yyn]);", 930243830Sdim "#ifdef YYSTYPE_TOSTRING", 931243830Sdim#if defined(YYBTYACC) 932243830Sdim "#if YYBTYACC", 933243830Sdim " if (!yytrial)", 934243830Sdim "#endif /* YYBTYACC */", 935243830Sdim#endif /* defined(YYBTYACC) */ 936243830Sdim " if (yym > 0)", 937243830Sdim " {", 938243830Sdim " int i;", 939243830Sdim " fputc('<', stderr);", 940243830Sdim " for (i = yym; i > 0; i--)", 941243830Sdim " {", 942243830Sdim " if (i != yym) fputs(\", \", stderr);", 943234353Sdim " fputs(YYSTYPE_TOSTRING(yystos[yystack.s_mark[1-i]],", 944226633Sdim " yystack.l_mark[1-i]), stderr);", 945234353Sdim " }", 946226633Sdim " fputc('>', stderr);", 947234353Sdim " }", 948234353Sdim "#endif", 949234353Sdim " fputc('\\n', stderr);", 950234353Sdim " }", 951226633Sdim "#endif", 952234353Sdim " if (yym > 0)", 953226633Sdim " yyval = yystack.l_mark[1-yym];", 954234353Sdim " else", 955234353Sdim " memset(&yyval, 0, sizeof yyval);", 956226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 957234353Sdim "", 958234353Sdim " /* Perform position reduction */", 959226633Sdim " memset(&yyloc, 0, sizeof(yyloc));", 960226633Sdim#if defined(YYBTYACC) 961234353Sdim "#if YYBTYACC", 962234353Sdim " if (!yytrial)", 963234353Sdim "#endif /* YYBTYACC */", 964234353Sdim#endif /* defined(YYBTYACC) */ 965234353Sdim " {", 966234353Sdim " YYLLOC_DEFAULT(yyloc, &yystack.p_mark[1-yym], yym);", 967234353Sdim " /* just in case YYERROR is invoked within the action, save", 968234353Sdim " the start of the rhs as the error start position */", 969226633Sdim " yyerror_loc_range[0] = yystack.p_mark[1-yym];", 970226633Sdim " }", 971193326Sed "#endif", 972193326Sed "", 973193326Sed " switch (yyn)", 974193326Sed " {", 975193326Sed 0 976193326Sed}; 977193326Sed 978193326Sedconst char *const trailer[] = 979193326Sed{ 980212904Sdim " default:", 981193326Sed " break;", 982193326Sed " }", 983193326Sed " yystack.s_mark -= yym;", 984193326Sed " yystate = *yystack.s_mark;", 985226633Sdim " yystack.l_mark -= yym;", 986193326Sed "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 987193326Sed " yystack.p_mark -= yym;", 988193326Sed "#endif", 989193326Sed " yym = yylhs[yyn];", 990193326Sed " if (yystate == 0 && yym == 0)", 991193326Sed " {", 992193326Sed "#if YYDEBUG", 993193326Sed " if (yydebug)", 994193326Sed " {", 995221345Sdim " fprintf(stderr, \"%s[%d]: after reduction, \", YYDEBUGSTR, yydepth);", 996221345Sdim "#ifdef YYSTYPE_TOSTRING", 997243830Sdim#if defined(YYBTYACC) 998243830Sdim "#if YYBTYACC", 999243830Sdim " if (!yytrial)", 1000243830Sdim "#endif /* YYBTYACC */", 1001243830Sdim#endif /* defined(YYBTYACC) */ 1002221345Sdim " fprintf(stderr, \"result is <%s>, \", YYSTYPE_TOSTRING(yystos[YYFINAL], yyval));", 1003193326Sed "#endif", 1004193326Sed " fprintf(stderr, \"shifting from state 0 to final state %d\\n\", YYFINAL);", 1005193326Sed " }", 1006224145Sdim "#endif", 1007224145Sdim " yystate = YYFINAL;", 1008224145Sdim " *++yystack.s_mark = YYFINAL;", 1009224145Sdim " *++yystack.l_mark = yyval;", 1010224145Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 1011224145Sdim " *++yystack.p_mark = yyloc;", 1012224145Sdim "#endif", 1013224145Sdim " if (yychar < 0)", 1014193326Sed " {", 1015193326Sed#if defined(YYBTYACC) 1016193326Sed "#if YYBTYACC", 1017193326Sed " do {", 1018193326Sed " if (yylvp < yylve)", 1019226633Sdim " {", 1020226633Sdim " /* we're currently re-reading tokens */", 1021193326Sed " yylval = *yylvp++;", 1022226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 1023193326Sed " yylloc = *yylpp++;", 1024193326Sed "#endif", 1025212904Sdim " yychar = *yylexp++;", 1026198092Srdivacky " break;", 1027193326Sed " }", 1028226633Sdim " if (yyps->save)", 1029198092Srdivacky " {", 1030224145Sdim " /* in trial mode; save scanner results for future parse attempts */", 1031193326Sed " if (yylvp == yylvlim)", 1032224145Sdim " { /* Enlarge lexical value queue */", 1033193326Sed " int p = yylvp - yylvals;", 1034226633Sdim " int s = yylvlim - yylvals;", 1035226633Sdim "", 1036193326Sed " s += YYLVQUEUEGROWTH;", 1037243830Sdim " if ((yylexemes = (short *) realloc(yylexemes, s * sizeof(short))) == NULL)", 1038193326Sed " goto yyenomem;", 1039193326Sed " if ((yylvals = (YYSTYPE *) realloc(yylvals, s * sizeof(YYSTYPE))) == NULL)", 1040193326Sed " goto yyenomem;", 1041193326Sed "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 1042193326Sed " if ((yylpsns = (YYLTYPE *) realloc(yylpsns, s * sizeof(YYLTYPE))) == NULL)", 1043193326Sed " goto yyenomem;", 1044193326Sed "#endif", 1045193326Sed " yylvp = yylve = yylvals + p;", 1046212904Sdim " yylvlim = yylvals + s;", 1047193326Sed "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 1048193326Sed " yylpp = yylpe = yylpsns + p;", 1049193326Sed " yylplim = yylpsns + s;", 1050226633Sdim "#endif", 1051226633Sdim " yylexp = yylexemes + p;", 1052193326Sed " }", 1053193326Sed " *yylexp = (short) YYLEX;", 1054226633Sdim " *yylvp++ = yylval;", 1055193326Sed " yylve++;", 1056226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 1057193326Sed " *yylpp++ = yylloc;", 1058212904Sdim " yylpe++;", 1059193326Sed "#endif", 1060243830Sdim " yychar = *yylexp++;", 1061243830Sdim " break;", 1062243830Sdim " }", 1063243830Sdim " /* normal operation, no conflict encountered */", 1064243830Sdim "#endif /* YYBTYACC */", 1065243830Sdim#endif /* defined(YYBTYACC) */ 1066243830Sdim " yychar = YYLEX;", 1067243830Sdim#if defined(YYBTYACC) 1068243830Sdim "#if YYBTYACC", 1069243830Sdim " } while (0);", 1070243830Sdim "#endif /* YYBTYACC */", 1071243830Sdim#endif /* defined(YYBTYACC) */ 1072243830Sdim " if (yychar < 0) yychar = YYEOF;", 1073243830Sdim " /* if ((yychar = YYLEX) < 0) yychar = YYEOF; */", 1074243830Sdim "#if YYDEBUG", 1075243830Sdim " if (yydebug)", 1076193326Sed " {", 1077193326Sed " yys = yyname[YYTRANSLATE(yychar)];", 1078193326Sed " fprintf(stderr, \"%s[%d]: state %d, reading %d (%s)\\n\",", 1079193326Sed " YYDEBUGSTR, yydepth, YYFINAL, yychar, yys);", 1080226633Sdim " }", 1081226633Sdim "#endif", 1082218893Sdim " }", 1083193326Sed " if (yychar == YYEOF) goto yyaccept;", 1084193326Sed " goto yyloop;", 1085193326Sed " }", 1086212904Sdim " if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&", 1087193326Sed " yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)", 1088193326Sed " yystate = yytable[yyn];", 1089193326Sed " else", 1090193326Sed " yystate = yydgoto[yym];", 1091193326Sed "#if YYDEBUG", 1092193326Sed " if (yydebug)", 1093193326Sed " {", 1094226633Sdim " fprintf(stderr, \"%s[%d]: after reduction, \", YYDEBUGSTR, yydepth);", 1095226633Sdim "#ifdef YYSTYPE_TOSTRING", 1096218893Sdim#if defined(YYBTYACC) 1097218893Sdim "#if YYBTYACC", 1098221345Sdim " if (!yytrial)", 1099193326Sed "#endif /* YYBTYACC */", 1100193326Sed#endif /* defined(YYBTYACC) */ 1101193326Sed " fprintf(stderr, \"result is <%s>, \", YYSTYPE_TOSTRING(yystos[yystate], yyval));", 1102193326Sed "#endif", 1103193326Sed " fprintf(stderr, \"shifting from state %d to state %d\\n\", *yystack.s_mark, yystate);", 1104243830Sdim " }", 1105193326Sed "#endif", 1106193326Sed " if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;", 1107218893Sdim " *++yystack.s_mark = (short) yystate;", 1108218893Sdim " *++yystack.l_mark = yyval;", 1109218893Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 1110218893Sdim " *++yystack.p_mark = yyloc;", 1111218893Sdim "#endif", 1112218893Sdim " goto yyloop;", 1113218893Sdim#if defined(YYBTYACC) 1114218893Sdim "#if YYBTYACC", 1115218893Sdim "", 1116226633Sdim " /* Reduction declares that this path is valid. Set yypath and do a full parse */", 1117218893Sdim "yyvalid:", 1118218893Sdim " if (yypath) YYABORT;", 1119226633Sdim " while (yyps->save)", 1120218893Sdim " {", 1121218893Sdim " YYParseState *save = yyps->save;", 1122218893Sdim " yyps->save = save->save;", 1123218893Sdim " save->save = yypath;", 1124218893Sdim " yypath = save;", 1125218893Sdim " }", 1126218893Sdim "#if YYDEBUG", 1127218893Sdim " if (yydebug)", 1128226633Sdim " fprintf(stderr, \"%s[%d]: state %d, CONFLICT trial successful, backtracking to state %d, %d tokens\\n\",", 1129218893Sdim " YYDEBUGSTR, yydepth, yystate, yypath->state, (int)(yylvp - yylvals - yypath->lexeme));", 1130218893Sdim "#endif", 1131218893Sdim " if (yyerrctx)", 1132218893Sdim " {", 1133226633Sdim " yyFreeState(yyerrctx);", 1134226633Sdim " yyerrctx = NULL;", 1135226633Sdim " }", 1136218893Sdim " yylvp = yylvals + yypath->lexeme;", 1137218893Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 1138218893Sdim " yylpp = yylpsns + yypath->lexeme;", 1139218893Sdim "#endif", 1140218893Sdim " yylexp = yylexemes + yypath->lexeme;", 1141218893Sdim " yychar = YYEMPTY;", 1142218893Sdim " yystack.s_mark = yystack.s_base + (yypath->yystack.s_mark - yypath->yystack.s_base);", 1143218893Sdim " memcpy (yystack.s_base, yypath->yystack.s_base, (yystack.s_mark - yystack.s_base + 1) * sizeof(short));", 1144226633Sdim " yystack.l_mark = yystack.l_base + (yypath->yystack.l_mark - yypath->yystack.l_base);", 1145218893Sdim " memcpy (yystack.l_base, yypath->yystack.l_base, (yystack.l_mark - yystack.l_base + 1) * sizeof(YYSTYPE));", 1146226633Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 1147226633Sdim " yystack.p_mark = yystack.p_base + (yypath->yystack.p_mark - yypath->yystack.p_base);", 1148226633Sdim " memcpy (yystack.p_base, yypath->yystack.p_base, (yystack.p_mark - yystack.p_base + 1) * sizeof(YYLTYPE));", 1149218893Sdim "#endif", 1150218893Sdim " yystate = yypath->state;", 1151218893Sdim " goto yyloop;", 1152243830Sdim "#endif /* YYBTYACC */", 1153218893Sdim#endif /* defined(YYBTYACC) */ 1154218893Sdim "", 1155204643Srdivacky "yyoverflow:", 1156204643Srdivacky " YYERROR_CALL(\"yacc stack overflow\");", 1157204643Srdivacky#if defined(YYBTYACC) 1158204643Srdivacky "#if YYBTYACC", 1159204643Srdivacky " goto yyabort_nomem;", 1160204643Srdivacky "yyenomem:", 1161204643Srdivacky " YYERROR_CALL(\"memory exhausted\");", 1162204643Srdivacky "yyabort_nomem:", 1163204643Srdivacky "#endif /* YYBTYACC */", 1164204643Srdivacky#endif /* defined(YYBTYACC) */ 1165204643Srdivacky " yyresult = 2;", 1166204643Srdivacky " goto yyreturn;", 1167204643Srdivacky "", 1168204643Srdivacky "yyabort:", 1169212904Sdim " yyresult = 1;", 1170204643Srdivacky " goto yyreturn;", 1171204643Srdivacky "", 1172204643Srdivacky "yyaccept:", 1173212904Sdim#if defined(YYBTYACC) 1174204643Srdivacky "#if YYBTYACC", 1175204643Srdivacky " if (yyps->save) goto yyvalid;", 1176204643Srdivacky "#endif /* YYBTYACC */", 1177204643Srdivacky#endif /* defined(YYBTYACC) */ 1178204643Srdivacky " yyresult = 0;", 1179204643Srdivacky "", 1180204643Srdivacky "yyreturn:", 1181204643Srdivacky "#if defined(YYDESTRUCT_CALL)", 1182204643Srdivacky " if (yychar != YYEOF && yychar != YYEMPTY)", 1183204643Srdivacky "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 1184204643Srdivacky " YYDESTRUCT_CALL(\"cleanup: discarding token\", yychar, &yylval, &yylloc);", 1185204643Srdivacky "#else", 1186204643Srdivacky " YYDESTRUCT_CALL(\"cleanup: discarding token\", yychar, &yylval);", 1187204643Srdivacky "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */", 1188204643Srdivacky "", 1189204643Srdivacky " {", 1190234353Sdim " YYSTYPE *pv;", 1191234353Sdim "#if defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED)", 1192204643Srdivacky " YYLTYPE *pp;", 1193204643Srdivacky "", 1194204643Srdivacky " for (pv = yystack.l_base, pp = yystack.p_base; pv <= yystack.l_mark; ++pv, ++pp)", 1195204643Srdivacky " YYDESTRUCT_CALL(\"cleanup: discarding state\",", 1196204643Srdivacky " yystos[*(yystack.s_base + (pv - yystack.l_base))], pv, pp);", 1197204643Srdivacky "#else", 1198204643Srdivacky " for (pv = yystack.l_base; pv <= yystack.l_mark; ++pv)", 1199204643Srdivacky " YYDESTRUCT_CALL(\"cleanup: discarding state\",", 1200204643Srdivacky " yystos[*(yystack.s_base + (pv - yystack.l_base))], pv);", 1201204643Srdivacky "#endif /* defined(YYLTYPE) || defined(YYLTYPE_IS_DECLARED) */", 1202204643Srdivacky " }", 1203204643Srdivacky "#endif /* defined(YYDESTRUCT_CALL) */", 1204234353Sdim "", 1205234353Sdim#if defined(YYBTYACC) 1206234353Sdim "#if YYBTYACC", 1207234353Sdim " if (yyerrctx)", 1208234353Sdim " {", 1209234353Sdim " yyFreeState(yyerrctx);", 1210234353Sdim " yyerrctx = NULL;", 1211234353Sdim " }", 1212234353Sdim " while (yyps)", 1213234353Sdim " {", 1214234353Sdim " YYParseState *save = yyps;", 1215204643Srdivacky " yyps = save->save;", 1216204643Srdivacky " save->save = NULL;", 1217204643Srdivacky " yyFreeState(save);", 1218204643Srdivacky " }", 1219204643Srdivacky " while (yypath)", 1220204643Srdivacky " {", 1221204643Srdivacky " YYParseState *save = yypath;", 1222204643Srdivacky " yypath = save->save;", 1223204643Srdivacky " save->save = NULL;", 1224204643Srdivacky " yyFreeState(save);", 1225204643Srdivacky " }", 1226204643Srdivacky "#endif /* YYBTYACC */", 1227204643Srdivacky#endif /* defined(YYBTYACC) */ 1228204643Srdivacky " yyfreestack(&yystack);", 1229234353Sdim " return (yyresult);", 1230234353Sdim "}", 1231234353Sdim 0 1232234353Sdim}; 1233204643Srdivacky 1234204643Srdivackyvoid 1235212904Sdimwrite_section(FILE * fp, const char *const section[]) 1236212904Sdim{ 1237204643Srdivacky int i; 1238204643Srdivacky const char *s; 1239204643Srdivacky 1240204643Srdivacky for (i = 0; (s = section[i]) != 0; ++i) 1241204643Srdivacky { 1242193326Sed if (fp == code_file) 1243193326Sed ++outline; 1244193326Sed fprintf(fp, "%s\n", s); 1245193326Sed } 1246193326Sed} 1247212904Sdim