1*3e12c5d1SDavid du Colombier #include <u.h> 2*3e12c5d1SDavid du Colombier #include <libc.h> 3*3e12c5d1SDavid du Colombier #include <stdio.h> 4*3e12c5d1SDavid du Colombier 5*3e12c5d1SDavid du Colombier extern FILE* yyout; 6*3e12c5d1SDavid du Colombier extern FILE* yyin; 7*3e12c5d1SDavid du Colombier extern int yyprevious, *yyfnd; 8*3e12c5d1SDavid du Colombier extern char yyextra[]; 9*3e12c5d1SDavid du Colombier extern char yytext[]; 10*3e12c5d1SDavid du Colombier extern int yyleng; 11*3e12c5d1SDavid du Colombier 12*3e12c5d1SDavid du Colombier extern 13*3e12c5d1SDavid du Colombier struct 14*3e12c5d1SDavid du Colombier { 15*3e12c5d1SDavid du Colombier int *yyaa, *yybb; 16*3e12c5d1SDavid du Colombier int *yystops; 17*3e12c5d1SDavid du Colombier } *yylstate [], **yylsp, **yyolsp; 18*3e12c5d1SDavid du Colombier 19*3e12c5d1SDavid du Colombier int yyback(int *p, int m); 20*3e12c5d1SDavid du Colombier int yyinput(void); 21*3e12c5d1SDavid du Colombier void yyoutput(int c); 22*3e12c5d1SDavid du Colombier void yyunput(int c); 23*3e12c5d1SDavid du Colombier 24*3e12c5d1SDavid du Colombier int yyracc(int m)25*3e12c5d1SDavid du Colombieryyracc(int m) 26*3e12c5d1SDavid du Colombier { 27*3e12c5d1SDavid du Colombier 28*3e12c5d1SDavid du Colombier yyolsp = yylsp; 29*3e12c5d1SDavid du Colombier if(yyextra[m]) { 30*3e12c5d1SDavid du Colombier while(yyback((*yylsp)->yystops, -m) != 1 && yylsp > yylstate) { 31*3e12c5d1SDavid du Colombier yylsp--; 32*3e12c5d1SDavid du Colombier yyunput(yytext[--yyleng]); 33*3e12c5d1SDavid du Colombier } 34*3e12c5d1SDavid du Colombier } 35*3e12c5d1SDavid du Colombier yyprevious = yytext[yyleng-1]; 36*3e12c5d1SDavid du Colombier yytext[yyleng] = 0; 37*3e12c5d1SDavid du Colombier return m; 38*3e12c5d1SDavid du Colombier } 39*3e12c5d1SDavid du Colombier 40*3e12c5d1SDavid du Colombier int yyreject(void)41*3e12c5d1SDavid du Colombieryyreject(void) 42*3e12c5d1SDavid du Colombier { 43*3e12c5d1SDavid du Colombier for(; yylsp < yyolsp; yylsp++) 44*3e12c5d1SDavid du Colombier yytext[yyleng++] = yyinput(); 45*3e12c5d1SDavid du Colombier if(*yyfnd > 0) 46*3e12c5d1SDavid du Colombier return yyracc(*yyfnd++); 47*3e12c5d1SDavid du Colombier while(yylsp-- > yylstate) { 48*3e12c5d1SDavid du Colombier yyunput(yytext[yyleng-1]); 49*3e12c5d1SDavid du Colombier yytext[--yyleng] = 0; 50*3e12c5d1SDavid du Colombier if(*yylsp != 0 && (yyfnd = (*yylsp)->yystops) && *yyfnd > 0) 51*3e12c5d1SDavid du Colombier return yyracc(*yyfnd++); 52*3e12c5d1SDavid du Colombier } 53*3e12c5d1SDavid du Colombier if(yytext[0] == 0) 54*3e12c5d1SDavid du Colombier return 0; 55*3e12c5d1SDavid du Colombier yyoutput(yyprevious = yyinput()); 56*3e12c5d1SDavid du Colombier yyleng = 0; 57*3e12c5d1SDavid du Colombier return -1; 58*3e12c5d1SDavid du Colombier } 59