Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

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