date and time created 88/12/12 20:54:57 by kfall
[unix-history] / usr / src / old / lex / libln / reject.c
CommitLineData
a59237a4 1/* @(#)reject.c 4.2 %G% */
e833799c
SL
2
3# include <stdio.h>
e833799c
SL
4extern FILE *yyout, *yyin;
5extern int yyprevious , *yyfnd;
6extern char yyextra[];
7extern char yytext[];
8extern int yyleng;
a59237a4
KB
9extern struct {int *yyaa, *yybb; int *yystops;} *yylstate [], **yylsp, **yyolsp;
10
11yyreject ()
12{
e833799c
SL
13for( ; yylsp < yyolsp; yylsp++)
14 yytext[yyleng++] = yyinput();
15if (*yyfnd > 0)
16 return(yyracc(*yyfnd++));
17while (yylsp-- > yylstate)
18 {
19 yyunput(yytext[yyleng-1]);
20 yytext[--yyleng] = 0;
21 if (*yylsp != 0 && (yyfnd= (*yylsp)->yystops) && *yyfnd > 0)
22 return(yyracc(*yyfnd++));
23 }
24if (yytext[0] == 0)
25 return(0);
26yyoutput(yyprevious = yyinput());
27yyleng=0;
28return(-1);
29}
30yyracc(m)
31{
32yyolsp = yylsp;
33if (yyextra[m])
34 {
35 while (yyback((*yylsp)->yystops, -m) != 1 && yylsp>yylstate)
36 {
37 yylsp--;
38 yyunput(yytext[--yyleng]);
39 }
40 }
41yyprevious = yytext[yyleng-1];
42yytext[yyleng] = 0;
43return(m);
44}