46 lines
929 B
C
46 lines
929 B
C
#ifndef lint
|
|
static char sccsid[] = "@(#)reject.c 1.1 92/07/30 SMI"; /* from S5R2 1.2 */
|
|
#endif
|
|
|
|
# include <stdio.h>
|
|
extern FILE *yyout, *yyin;
|
|
extern int yyprevious , *yyfnd;
|
|
extern char yyextra[];
|
|
extern char yytext[];
|
|
extern int yyleng;
|
|
extern struct {int *yyaa, *yybb; int *yystops;} *yylstate [], **yylsp, **yyolsp;
|
|
yyreject ()
|
|
{
|
|
for( ; yylsp < yyolsp; yylsp++)
|
|
yytext[yyleng++] = yyinput();
|
|
if (*yyfnd > 0)
|
|
return(yyracc(*yyfnd++));
|
|
while (yylsp-- > yylstate)
|
|
{
|
|
yyunput(yytext[yyleng-1]);
|
|
yytext[--yyleng] = 0;
|
|
if (*yylsp != 0 && (yyfnd= (*yylsp)->yystops) && *yyfnd > 0)
|
|
return(yyracc(*yyfnd++));
|
|
}
|
|
if (yytext[0] == 0)
|
|
return(0);
|
|
yyoutput(yyprevious = yyinput());
|
|
yyleng=0;
|
|
return(-1);
|
|
}
|
|
yyracc(m)
|
|
{
|
|
yyolsp = yylsp;
|
|
if (yyextra[m])
|
|
{
|
|
while (yyback((*yylsp)->yystops, -m) != 1 && yylsp>yylstate)
|
|
{
|
|
yylsp--;
|
|
yyunput(yytext[--yyleng]);
|
|
}
|
|
}
|
|
yyprevious = yytext[yyleng-1];
|
|
yytext[yyleng] = 0;
|
|
return(m);
|
|
}
|