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