1264790Sbapt/* This file generated automatically using 2264790Sbapt * @Id: skel2c,v 1.3 2014/04/06 19:48:04 tom Exp @ 3264790Sbapt */ 4264790Sbapt 5264790Sbapt/* @Id: yaccpar.skel,v 1.5 2014/04/07 21:51:00 tom Exp @ */ 6264790Sbapt 7264790Sbapt#include "defs.h" 8264790Sbapt 9264790Sbapt/* If the skeleton is changed, the banner should be changed so that */ 10264790Sbapt/* the altered version can be easily distinguished from the original. */ 11264790Sbapt/* */ 12264790Sbapt/* The #defines included with the banner are there because they are */ 13264790Sbapt/* useful in subsequent code. The macros #defined in the header or */ 14264790Sbapt/* the body either are not useful outside of semantic actions or */ 15264790Sbapt/* are conditional. */ 16264790Sbapt 17264790Sbaptconst char *const banner[] = 18264790Sbapt{ 19264790Sbapt "/* original parser id follows */", 20264790Sbapt "/* yysccsid[] = \"@(#)yaccpar 1.9 (Berkeley) 02/21/93\" */", 21264790Sbapt "/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */", 22264790Sbapt "", 23264790Sbapt "#define YYBYACC 1", 24264790Sbapt CONCAT1("#define YYMAJOR ", YYMAJOR), 25264790Sbapt CONCAT1("#define YYMINOR ", YYMINOR), 26264790Sbapt#ifdef YYPATCH 27264790Sbapt CONCAT1("#define YYPATCH ", YYPATCH), 28264790Sbapt#endif 29264790Sbapt "", 30264790Sbapt "#define YYEMPTY (-1)", 31264790Sbapt "#define yyclearin (yychar = YYEMPTY)", 32264790Sbapt "#define yyerrok (yyerrflag = 0)", 33264790Sbapt "#define YYRECOVERING() (yyerrflag != 0)", 34264790Sbapt "#define YYENOMEM (-2)", 35264790Sbapt "#define YYEOF 0", 36264790Sbapt 0 37264790Sbapt}; 38264790Sbapt 39264790Sbaptconst char *const xdecls[] = 40264790Sbapt{ 41264790Sbapt "", 42264790Sbapt "extern int YYPARSE_DECL();", 43264790Sbapt 0 44264790Sbapt}; 45264790Sbapt 46264790Sbaptconst char *const tables[] = 47264790Sbapt{ 48264790Sbapt "extern YYINT yylhs[];", 49264790Sbapt "extern YYINT yylen[];", 50264790Sbapt "extern YYINT yydefred[];", 51264790Sbapt "extern YYINT yydgoto[];", 52264790Sbapt "extern YYINT yysindex[];", 53264790Sbapt "extern YYINT yyrindex[];", 54264790Sbapt "extern YYINT yygindex[];", 55264790Sbapt "extern YYINT yytable[];", 56264790Sbapt "extern YYINT yycheck[];", 57264790Sbapt "", 58264790Sbapt "#if YYDEBUG", 59264790Sbapt "extern char *yyname[];", 60264790Sbapt "extern char *yyrule[];", 61264790Sbapt "#endif", 62264790Sbapt 0 63264790Sbapt}; 64264790Sbapt 65264790Sbaptconst char *const global_vars[] = 66264790Sbapt{ 67264790Sbapt "", 68264790Sbapt "int yydebug;", 69264790Sbapt "int yynerrs;", 70264790Sbapt 0 71264790Sbapt}; 72264790Sbapt 73264790Sbaptconst char *const impure_vars[] = 74264790Sbapt{ 75264790Sbapt "", 76264790Sbapt "int yyerrflag;", 77264790Sbapt "int yychar;", 78264790Sbapt "YYSTYPE yyval;", 79264790Sbapt "YYSTYPE yylval;", 80264790Sbapt 0 81264790Sbapt}; 82264790Sbapt 83264790Sbaptconst char *const hdr_defs[] = 84264790Sbapt{ 85264790Sbapt "", 86264790Sbapt "/* define the initial stack-sizes */", 87264790Sbapt "#ifdef YYSTACKSIZE", 88264790Sbapt "#undef YYMAXDEPTH", 89264790Sbapt "#define YYMAXDEPTH YYSTACKSIZE", 90264790Sbapt "#else", 91264790Sbapt "#ifdef YYMAXDEPTH", 92264790Sbapt "#define YYSTACKSIZE YYMAXDEPTH", 93264790Sbapt "#else", 94264790Sbapt "#define YYSTACKSIZE 10000", 95264790Sbapt "#define YYMAXDEPTH 10000", 96264790Sbapt "#endif", 97264790Sbapt "#endif", 98264790Sbapt "", 99264790Sbapt "#define YYINITSTACKSIZE 200", 100264790Sbapt "", 101264790Sbapt "typedef struct {", 102264790Sbapt " unsigned stacksize;", 103264790Sbapt " YYINT *s_base;", 104264790Sbapt " YYINT *s_mark;", 105264790Sbapt " YYINT *s_last;", 106264790Sbapt " YYSTYPE *l_base;", 107264790Sbapt " YYSTYPE *l_mark;", 108264790Sbapt "} YYSTACKDATA;", 109264790Sbapt 0 110264790Sbapt}; 111264790Sbapt 112264790Sbaptconst char *const hdr_vars[] = 113264790Sbapt{ 114264790Sbapt "/* variables for the parser stack */", 115264790Sbapt "static YYSTACKDATA yystack;", 116264790Sbapt 0 117264790Sbapt}; 118264790Sbapt 119264790Sbaptconst char *const body_vars[] = 120264790Sbapt{ 121264790Sbapt " int yyerrflag;", 122264790Sbapt " int yychar;", 123264790Sbapt " YYSTYPE yyval;", 124264790Sbapt " YYSTYPE yylval;", 125264790Sbapt "", 126264790Sbapt " /* variables for the parser stack */", 127264790Sbapt " YYSTACKDATA yystack;", 128264790Sbapt 0 129264790Sbapt}; 130264790Sbapt 131264790Sbaptconst char *const body_1[] = 132264790Sbapt{ 133264790Sbapt "", 134264790Sbapt "#if YYDEBUG", 135264790Sbapt "#include <stdio.h> /* needed for printf */", 136264790Sbapt "#endif", 137264790Sbapt "", 138264790Sbapt "#include <stdlib.h> /* needed for malloc, etc */", 139264790Sbapt "#include <string.h> /* needed for memset */", 140264790Sbapt "", 141264790Sbapt "/* allocate initial stack or double stack size, up to YYMAXDEPTH */", 142264790Sbapt "static int yygrowstack(YYSTACKDATA *data)", 143264790Sbapt "{", 144264790Sbapt " int i;", 145264790Sbapt " unsigned newsize;", 146264790Sbapt " YYINT *newss;", 147264790Sbapt " YYSTYPE *newvs;", 148264790Sbapt "", 149264790Sbapt " if ((newsize = data->stacksize) == 0)", 150264790Sbapt " newsize = YYINITSTACKSIZE;", 151264790Sbapt " else if (newsize >= YYMAXDEPTH)", 152264790Sbapt " return YYENOMEM;", 153264790Sbapt " else if ((newsize *= 2) > YYMAXDEPTH)", 154264790Sbapt " newsize = YYMAXDEPTH;", 155264790Sbapt "", 156264790Sbapt " i = (int) (data->s_mark - data->s_base);", 157264790Sbapt " newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));", 158264790Sbapt " if (newss == 0)", 159264790Sbapt " return YYENOMEM;", 160264790Sbapt "", 161264790Sbapt " data->s_base = newss;", 162264790Sbapt " data->s_mark = newss + i;", 163264790Sbapt "", 164264790Sbapt " newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));", 165264790Sbapt " if (newvs == 0)", 166264790Sbapt " return YYENOMEM;", 167264790Sbapt "", 168264790Sbapt " data->l_base = newvs;", 169264790Sbapt " data->l_mark = newvs + i;", 170264790Sbapt "", 171264790Sbapt " data->stacksize = newsize;", 172264790Sbapt " data->s_last = data->s_base + newsize - 1;", 173264790Sbapt " return 0;", 174264790Sbapt "}", 175264790Sbapt "", 176264790Sbapt "#if YYPURE || defined(YY_NO_LEAKS)", 177264790Sbapt "static void yyfreestack(YYSTACKDATA *data)", 178264790Sbapt "{", 179264790Sbapt " free(data->s_base);", 180264790Sbapt " free(data->l_base);", 181264790Sbapt " memset(data, 0, sizeof(*data));", 182264790Sbapt "}", 183264790Sbapt "#else", 184264790Sbapt "#define yyfreestack(data) /* nothing */", 185264790Sbapt "#endif", 186264790Sbapt "", 187264790Sbapt "#define YYABORT goto yyabort", 188264790Sbapt "#define YYREJECT goto yyabort", 189264790Sbapt "#define YYACCEPT goto yyaccept", 190264790Sbapt "#define YYERROR goto yyerrlab", 191264790Sbapt "", 192264790Sbapt "int", 193264790Sbapt "YYPARSE_DECL()", 194264790Sbapt "{", 195264790Sbapt 0 196264790Sbapt}; 197264790Sbapt 198264790Sbaptconst char *const body_2[] = 199264790Sbapt{ 200264790Sbapt " int yym, yyn, yystate;", 201264790Sbapt "#if YYDEBUG", 202264790Sbapt " const char *yys;", 203264790Sbapt "", 204264790Sbapt " if ((yys = getenv(\"YYDEBUG\")) != 0)", 205264790Sbapt " {", 206264790Sbapt " yyn = *yys;", 207264790Sbapt " if (yyn >= '0' && yyn <= '9')", 208264790Sbapt " yydebug = yyn - '0';", 209264790Sbapt " }", 210264790Sbapt "#endif", 211264790Sbapt "", 212264790Sbapt " yynerrs = 0;", 213264790Sbapt " yyerrflag = 0;", 214264790Sbapt " yychar = YYEMPTY;", 215264790Sbapt " yystate = 0;", 216264790Sbapt "", 217264790Sbapt "#if YYPURE", 218264790Sbapt " memset(&yystack, 0, sizeof(yystack));", 219264790Sbapt "#endif", 220264790Sbapt "", 221264790Sbapt " if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;", 222264790Sbapt " yystack.s_mark = yystack.s_base;", 223264790Sbapt " yystack.l_mark = yystack.l_base;", 224264790Sbapt " yystate = 0;", 225264790Sbapt " *yystack.s_mark = 0;", 226264790Sbapt "", 227264790Sbapt "yyloop:", 228264790Sbapt " if ((yyn = yydefred[yystate]) != 0) goto yyreduce;", 229264790Sbapt " if (yychar < 0)", 230264790Sbapt " {", 231264790Sbapt " if ((yychar = YYLEX) < 0) yychar = YYEOF;", 232264790Sbapt "#if YYDEBUG", 233264790Sbapt " if (yydebug)", 234264790Sbapt " {", 235264790Sbapt " yys = yyname[YYTRANSLATE(yychar)];", 236264790Sbapt " printf(\"%sdebug: state %d, reading %d (%s)\\n\",", 237264790Sbapt " YYPREFIX, yystate, yychar, yys);", 238264790Sbapt " }", 239264790Sbapt "#endif", 240264790Sbapt " }", 241264790Sbapt " if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&", 242264790Sbapt " yyn <= YYTABLESIZE && yycheck[yyn] == yychar)", 243264790Sbapt " {", 244264790Sbapt "#if YYDEBUG", 245264790Sbapt " if (yydebug)", 246264790Sbapt " printf(\"%sdebug: state %d, shifting to state %d\\n\",", 247264790Sbapt " YYPREFIX, yystate, yytable[yyn]);", 248264790Sbapt "#endif", 249264790Sbapt " if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)", 250264790Sbapt " {", 251264790Sbapt " goto yyoverflow;", 252264790Sbapt " }", 253264790Sbapt " yystate = yytable[yyn];", 254264790Sbapt " *++yystack.s_mark = yytable[yyn];", 255264790Sbapt " *++yystack.l_mark = yylval;", 256264790Sbapt " yychar = YYEMPTY;", 257264790Sbapt " if (yyerrflag > 0) --yyerrflag;", 258264790Sbapt " goto yyloop;", 259264790Sbapt " }", 260264790Sbapt " if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&", 261264790Sbapt " yyn <= YYTABLESIZE && yycheck[yyn] == yychar)", 262264790Sbapt " {", 263264790Sbapt " yyn = yytable[yyn];", 264264790Sbapt " goto yyreduce;", 265264790Sbapt " }", 266264790Sbapt " if (yyerrflag) goto yyinrecovery;", 267264790Sbapt "", 268264790Sbapt " YYERROR_CALL(\"syntax error\");", 269264790Sbapt "", 270264790Sbapt " goto yyerrlab;", 271264790Sbapt "", 272264790Sbapt "yyerrlab:", 273264790Sbapt " ++yynerrs;", 274264790Sbapt "", 275264790Sbapt "yyinrecovery:", 276264790Sbapt " if (yyerrflag < 3)", 277264790Sbapt " {", 278264790Sbapt " yyerrflag = 3;", 279264790Sbapt " for (;;)", 280264790Sbapt " {", 281264790Sbapt " if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&", 282264790Sbapt " yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)", 283264790Sbapt " {", 284264790Sbapt "#if YYDEBUG", 285264790Sbapt " if (yydebug)", 286264790Sbapt " printf(\"%sdebug: state %d, error recovery shifting\\", 287264790Sbapt " to state %d\\n\", YYPREFIX, *yystack.s_mark, yytable[yyn]);", 288264790Sbapt "#endif", 289264790Sbapt " if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)", 290264790Sbapt " {", 291264790Sbapt " goto yyoverflow;", 292264790Sbapt " }", 293264790Sbapt " yystate = yytable[yyn];", 294264790Sbapt " *++yystack.s_mark = yytable[yyn];", 295264790Sbapt " *++yystack.l_mark = yylval;", 296264790Sbapt " goto yyloop;", 297264790Sbapt " }", 298264790Sbapt " else", 299264790Sbapt " {", 300264790Sbapt "#if YYDEBUG", 301264790Sbapt " if (yydebug)", 302264790Sbapt " printf(\"%sdebug: error recovery discarding state %d\\n\",", 303264790Sbapt " YYPREFIX, *yystack.s_mark);", 304264790Sbapt "#endif", 305264790Sbapt " if (yystack.s_mark <= yystack.s_base) goto yyabort;", 306264790Sbapt " --yystack.s_mark;", 307264790Sbapt " --yystack.l_mark;", 308264790Sbapt " }", 309264790Sbapt " }", 310264790Sbapt " }", 311264790Sbapt " else", 312264790Sbapt " {", 313264790Sbapt " if (yychar == YYEOF) goto yyabort;", 314264790Sbapt "#if YYDEBUG", 315264790Sbapt " if (yydebug)", 316264790Sbapt " {", 317264790Sbapt " yys = yyname[YYTRANSLATE(yychar)];", 318264790Sbapt " printf(\"%sdebug: state %d, error recovery discards token %d (%s)\\n\",", 319264790Sbapt " YYPREFIX, yystate, yychar, yys);", 320264790Sbapt " }", 321264790Sbapt "#endif", 322264790Sbapt " yychar = YYEMPTY;", 323264790Sbapt " goto yyloop;", 324264790Sbapt " }", 325264790Sbapt "", 326264790Sbapt "yyreduce:", 327264790Sbapt "#if YYDEBUG", 328264790Sbapt " if (yydebug)", 329264790Sbapt " printf(\"%sdebug: state %d, reducing by rule %d (%s)\\n\",", 330264790Sbapt " YYPREFIX, yystate, yyn, yyrule[yyn]);", 331264790Sbapt "#endif", 332264790Sbapt " yym = yylen[yyn];", 333264790Sbapt " if (yym)", 334264790Sbapt " yyval = yystack.l_mark[1-yym];", 335264790Sbapt " else", 336264790Sbapt " memset(&yyval, 0, sizeof yyval);", 337264790Sbapt " switch (yyn)", 338264790Sbapt " {", 339264790Sbapt 0 340264790Sbapt}; 341264790Sbapt 342264790Sbaptconst char *const trailer[] = 343264790Sbapt{ 344264790Sbapt " }", 345264790Sbapt " yystack.s_mark -= yym;", 346264790Sbapt " yystate = *yystack.s_mark;", 347264790Sbapt " yystack.l_mark -= yym;", 348264790Sbapt " yym = yylhs[yyn];", 349264790Sbapt " if (yystate == 0 && yym == 0)", 350264790Sbapt " {", 351264790Sbapt "#if YYDEBUG", 352264790Sbapt " if (yydebug)", 353264790Sbapt " printf(\"%sdebug: after reduction, shifting from state 0 to\\", 354264790Sbapt " state %d\\n\", YYPREFIX, YYFINAL);", 355264790Sbapt "#endif", 356264790Sbapt " yystate = YYFINAL;", 357264790Sbapt " *++yystack.s_mark = YYFINAL;", 358264790Sbapt " *++yystack.l_mark = yyval;", 359264790Sbapt " if (yychar < 0)", 360264790Sbapt " {", 361264790Sbapt " if ((yychar = YYLEX) < 0) yychar = YYEOF;", 362264790Sbapt "#if YYDEBUG", 363264790Sbapt " if (yydebug)", 364264790Sbapt " {", 365264790Sbapt " yys = yyname[YYTRANSLATE(yychar)];", 366264790Sbapt " printf(\"%sdebug: state %d, reading %d (%s)\\n\",", 367264790Sbapt " YYPREFIX, YYFINAL, yychar, yys);", 368264790Sbapt " }", 369264790Sbapt "#endif", 370264790Sbapt " }", 371264790Sbapt " if (yychar == YYEOF) goto yyaccept;", 372264790Sbapt " goto yyloop;", 373264790Sbapt " }", 374264790Sbapt " if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&", 375264790Sbapt " yyn <= YYTABLESIZE && yycheck[yyn] == yystate)", 376264790Sbapt " yystate = yytable[yyn];", 377264790Sbapt " else", 378264790Sbapt " yystate = yydgoto[yym];", 379264790Sbapt "#if YYDEBUG", 380264790Sbapt " if (yydebug)", 381264790Sbapt " printf(\"%sdebug: after reduction, shifting from state %d \\", 382264790Sbapt "to state %d\\n\", YYPREFIX, *yystack.s_mark, yystate);", 383264790Sbapt "#endif", 384264790Sbapt " if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)", 385264790Sbapt " {", 386264790Sbapt " goto yyoverflow;", 387264790Sbapt " }", 388264790Sbapt " *++yystack.s_mark = (YYINT) yystate;", 389264790Sbapt " *++yystack.l_mark = yyval;", 390264790Sbapt " goto yyloop;", 391264790Sbapt "", 392264790Sbapt "yyoverflow:", 393264790Sbapt " YYERROR_CALL(\"yacc stack overflow\");", 394264790Sbapt "", 395264790Sbapt "yyabort:", 396264790Sbapt " yyfreestack(&yystack);", 397264790Sbapt " return (1);", 398264790Sbapt "", 399264790Sbapt "yyaccept:", 400264790Sbapt " yyfreestack(&yystack);", 401264790Sbapt " return (0);", 402264790Sbapt "}", 403264790Sbapt 0 404264790Sbapt}; 405264790Sbapt 406264790Sbaptvoid 407264790Sbaptwrite_section(FILE * fp, const char *const section[]) 408264790Sbapt{ 409264790Sbapt int i; 410264790Sbapt const char *s; 411264790Sbapt 412264790Sbapt for (i = 0; (s = section[i]) != 0; ++i) 413264790Sbapt { 414264790Sbapt if (fp == code_file) 415264790Sbapt ++outline; 416264790Sbapt fprintf(fp, "%s\n", s); 417264790Sbapt } 418264790Sbapt} 419