diff options
Diffstat (limited to 'utils/yacc/yaccpar')
| -rw-r--r-- | utils/yacc/yaccpar | 241 |
1 files changed, 0 insertions, 241 deletions
diff --git a/utils/yacc/yaccpar b/utils/yacc/yaccpar deleted file mode 100644 index 79a8d4e0..00000000 --- a/utils/yacc/yaccpar +++ /dev/null @@ -1,241 +0,0 @@ -#define YYFLAG -1000 -#define yyclearin yychar = -1 -#define yyerrok yyerrflag = 0 - -#ifdef yydebug -#include "y.debug" -#else -#define yydebug 0 -char* yytoknames[1]; /* for debugging */ -char* yystates[1]; /* for debugging */ -#endif - -/* parser for yacc output */ - -int yynerrs = 0; /* number of errors */ -int yyerrflag = 0; /* error recovery flag */ - -extern int fprint(int, char*, ...); -extern int sprint(char*, char*, ...); - -char* -yytokname(int yyc) -{ - static char x[16]; - - if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0])) - if(yytoknames[yyc-1]) - return yytoknames[yyc-1]; - sprint(x, "<%d>", yyc); - return x; -} - -char* -yystatname(int yys) -{ - static char x[16]; - - if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0])) - if(yystates[yys]) - return yystates[yys]; - sprint(x, "<%d>\n", yys); - return x; -} - -long -yylex1(void) -{ - long yychar; - long *t3p; - int c; - - yychar = yylex(); - if(yychar <= 0) { - c = yytok1[0]; - goto out; - } - if(yychar < sizeof(yytok1)/sizeof(yytok1[0])) { - c = yytok1[yychar]; - goto out; - } - if(yychar >= YYPRIVATE) - if(yychar < YYPRIVATE+sizeof(yytok2)/sizeof(yytok2[0])) { - c = yytok2[yychar-YYPRIVATE]; - goto out; - } - for(t3p=yytok3;; t3p+=2) { - c = t3p[0]; - if(c == yychar) { - c = t3p[1]; - goto out; - } - if(c == 0) - break; - } - c = 0; - -out: - if(c == 0) - c = yytok2[1]; /* unknown char */ - if(yydebug >= 3) - fprint(2, "lex %.4lux %s\n", yychar, yytokname(c)); - return c; -} - -int -yyparse(void) -{ - struct - { - YYSTYPE yyv; - int yys; - } yys[YYMAXDEPTH], *yyp, *yypt; - short *yyxi; - int yyj, yym, yystate, yyn, yyg; - long yychar; - YYSTYPE save1, save2; - int save3, save4; - - save1 = yylval; - save2 = yyval; - save3 = yynerrs; - save4 = yyerrflag; - - yystate = 0; - yychar = -1; - yynerrs = 0; - yyerrflag = 0; - yyp = &yys[-1]; - goto yystack; - -ret0: - yyn = 0; - goto ret; - -ret1: - yyn = 1; - goto ret; - -ret: - yylval = save1; - yyval = save2; - yynerrs = save3; - yyerrflag = save4; - return yyn; - -yystack: - /* put a state and value onto the stack */ - if(yydebug >= 4) - fprint(2, "char %s in %s", yytokname(yychar), yystatname(yystate)); - - yyp++; - if(yyp >= &yys[YYMAXDEPTH]) { - yyerror("yacc stack overflow"); - goto ret1; - } - yyp->yys = yystate; - yyp->yyv = yyval; - -yynewstate: - yyn = yypact[yystate]; - if(yyn <= YYFLAG) - goto yydefault; /* simple state */ - if(yychar < 0) - yychar = yylex1(); - yyn += yychar; - if(yyn < 0 || yyn >= YYLAST) - goto yydefault; - yyn = yyact[yyn]; - if(yychk[yyn] == yychar) { /* valid shift */ - yychar = -1; - yyval = yylval; - yystate = yyn; - if(yyerrflag > 0) - yyerrflag--; - goto yystack; - } - -yydefault: - /* default state action */ - yyn = yydef[yystate]; - if(yyn == -2) { - if(yychar < 0) - yychar = yylex1(); - - /* look through exception table */ - for(yyxi=yyexca;; yyxi+=2) - if(yyxi[0] == -1 && yyxi[1] == yystate) - break; - for(yyxi += 2;; yyxi += 2) { - yyn = yyxi[0]; - if(yyn < 0 || yyn == yychar) - break; - } - yyn = yyxi[1]; - if(yyn < 0) - goto ret0; - } - if(yyn == 0) { - /* error ... attempt to resume parsing */ - switch(yyerrflag) { - case 0: /* brand new error */ - yyerror("syntax error"); - yynerrs++; - if(yydebug >= 1) { - fprint(2, "%s", yystatname(yystate)); - fprint(2, "saw %s\n", yytokname(yychar)); - } - - case 1: - case 2: /* incompletely recovered error ... try again */ - yyerrflag = 3; - - /* find a state where "error" is a legal shift action */ - while(yyp >= yys) { - yyn = yypact[yyp->yys] + YYERRCODE; - if(yyn >= 0 && yyn < YYLAST) { - yystate = yyact[yyn]; /* simulate a shift of "error" */ - if(yychk[yystate] == YYERRCODE) - goto yystack; - } - - /* the current yyp has no shift onn "error", pop stack */ - if(yydebug >= 2) - fprint(2, "error recovery pops state %d, uncovers %d\n", - yyp->yys, (yyp-1)->yys ); - yyp--; - } - /* there is no state on the stack with an error shift ... abort */ - goto ret1; - - case 3: /* no shift yet; clobber input char */ - if(yydebug >= 2) - fprint(2, "error recovery discards %s\n", yytokname(yychar)); - if(yychar == YYEOFCODE) - goto ret1; - yychar = -1; - goto yynewstate; /* try again in the same state */ - } - } - - /* reduction by production yyn */ - if(yydebug >= 2) - fprint(2, "reduce %d in:\n\t%s", yyn, yystatname(yystate)); - - yypt = yyp; - yyp -= yyr2[yyn]; - yyval = (yyp+1)->yyv; - yym = yyn; - - /* consult goto table to find next state */ - yyn = yyr1[yyn]; - yyg = yypgo[yyn]; - yyj = yyg + yyp->yys + 1; - - if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn) - yystate = yyact[yyg]; - switch(yym) { - $A - } - goto yystack; /* stack new state and value */ -} |
