home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_progs
/
txttools
/
valspeak.lzh
/
VALSPEAK
/
LEX.YY.C
next >
Wrap
C/C++ Source or Header
|
1991-11-01
|
19KB
|
1,086 lines
# include "stdio.h"
# define U(x) x
# define NLSTATE yyprevious=YYNEWLINE
# define BEGIN yybgin = yysvec + 1 +
# define INITIAL 0
# define YYLERR yysvec
# define YYSTATE (yyestate-yysvec-1)
# define YYOPTIM 1
# define YYLMAX 200
# define output(c) putc(c,yyout)
# define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
# define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
# define yymore() (yymorfg=1)
# define ECHO fprintf(yyout, "%s",yytext)
# define REJECT { nstr = yyreject(); goto yyfussy;}
int yyleng; extern char yytext[];
int yymorfg;
extern char *yysptr, yysbuf[];
int yytchar;
FILE *yyin = {stdin}, *yyout = {stdout};
extern int yylineno;
struct yysvf {
struct yywork *yystoff;
struct yysvf *yyother;
int *yystops;};
struct yysvf *yyestate;
extern struct yysvf yysvec[], *yybgin;
# define YYNEWLINE 10
yylex(){
int nstr; extern int yyprevious;
while((nstr = yylook()) >= 0)
yyfussy: switch(nstr){
case 0:
if(yywrap()) return(0); break;
case 1:
printf(" mean");
break;
case 2:
printf(" bitchin'est");
break;
case 3:
printf(" bod");
break;
case 4:
printf(" drag");
break;
case 5:
printf(" rod ");
break;
case 6:
printf(" grodie");
break;
case 7:
printf(" grodie to thuh max");
break;
case 8:
printf(" munchies");
break;
case 9:
printf(" chick");
break;
case 10:
printf(" bitchin'");
break;
case 11:
printf(" awesum");
break;
case 12:
printf(" grodie");
break;
case 13:
printf(" dude");
break;
case 14:
printf(" that chick ");
break;
case 15:
printf(" that chick.");
break;
case 16:
printf(" that dude ");
break;
case 17:
printf(" that dude.");
break;
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
{
ECHO;
switch(rand() % 6)
{
case 0:
printf("like, ya know, "); break;
case 1:
printf(""); break;
case 2:
printf("like wow! "); break;
case 3:
printf("ya know, like, "); break;
case 4:
printf(""); break;
case 5:
printf(""); break;
}
}
break;
case 29:
printf(" pad");
break;
case 30:
printf(" cool");
break;
case 31:
printf(" awesum");
break;
case 32:
printf(" blow");
break;
case 33:
printf(" nerd ");
break;
case 34:
{
switch(rand() % 6)
{
case 0:
printf(" if you're a Pisces "); break;
case 1:
printf(" if the moon is full "); break;
case 2:
printf(" if the vibes are right "); break;
case 3:
printf(" when you get the feeling "); break;
case 4:
printf(" maybe "); break;
case 5:
printf(" maybe "); break;
}
}
break;
case 35:
printf(" party");
break;
case 36:
printf(" flick");
break;
case 37:
printf(" tunes ");
break;
case 38:
printf(" keen");
break;
case 39:
printf(" class");
break;
case 40:
printf(" just no way");
break;
case 41:
printf(" guys");
break;
case 42:
printf(" totally");
break;
case 43:
printf(" freaky");
break;
case 44:
printf(" thuh ");
break;
case 45:
printf(" super");
break;
case 46:
printf(" want");
break;
case 47:
printf(" far out");
break;
case 48:
printf(" fer shure");
break;
case 49:
printf("Man, ");
break;
case 50:
printf("That dude ");
break;
case 51:
printf("I can dig");
break;
case 52:
printf("Like, no way,");
break;
case 53:
printf("Man");
break;
case 54:
printf("That fox ");
break;
case 55:
printf("Like, ya know, this");
break;
case 56:
printf("Like, there");
break;
case 57:
printf("Us guys ");
break;
case 58:
printf("Like,");
break;
case 59:
{
switch(rand() % 6)
{
case 0:
printf(", like, "); break;
case 1:
printf(", fer shure, "); break;
case 2:
printf(", like, wow, "); break;
case 3:
printf(", oh, baby, "); break;
case 4:
printf(", man, "); break;
case 5:
printf(", mostly, "); break;
}
}
break;
case 60:
{
switch(rand() % 3)
{
case 0:
printf("! Gag me with a SPOOOOON!"); break;
case 1:
printf("! Gag me with a pitchfork!"); break;
case 2:
printf("! Oh, wow!");
}
}
break;
case 61:
printf("in'");
break;
case 62:
ECHO;
break;
case -1:
break;
default:
fprintf(yyout,"bad switch yylook %d",nstr);
} return(0); }
/* end of yylex */
main()
{
#ifdef AMIGA
srand(12345);
#else
srand(getpid());
#endif
yylex();
}
#ifdef AMIGA
yywrap ()
{
return (1);
}
#endif
int yyvstop[] = {
0,
62,
0,
62,
0,
60,
62,
0,
62,
0,
62,
0,
62,
0,
62,
0,
62,
0,
62,
0,
62,
0,
62,
0,
62,
0,
62,
0,
59,
0,
50,
0,
52,
0,
53,
0,
57,
0,
61,
0,
1,
0,
2,
0,
13,
0,
28,
0,
48,
0,
49,
0,
54,
0,
55,
0,
58,
0,
3,
0,
4,
0,
5,
0,
8,
0,
9,
0,
10,
0,
14,
0,
15,
0,
16,
0,
17,
0,
33,
0,
38,
0,
39,
0,
44,
0,
45,
0,
46,
0,
24,
0,
56,
0,
6,
0,
11,
0,
12,
0,
29,
0,
31,
0,
32,
0,
36,
0,
47,
0,
51,
0,
7,
0,
34,
0,
37,
0,
40,
0,
41,
0,
42,
0,
18,
0,
35,
0,
43,
0,
25,
0,
26,
0,
19,
0,
27,
0,
22,
0,
30,
0,
23,
0,
20,
0,
21,
0,
0};
# define YYTYPE int
struct yywork { YYTYPE verify, advance; } yycrank[] = {
0,0, 0,0, 1,3, 0,0,
0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, 1,0,
0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, 2,0,
0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, 0,0,
0,0, 1,4, 1,5, 6,33,
9,36, 0,0, 0,0, 0,0,
0,0, 2,4, 2,5, 0,0,
0,0, 1,6, 0,0, 0,0,
0,0, 0,0, 0,0, 0,0,
0,0, 2,6, 0,0, 0,0,
0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, 1,7,
35,81, 0,0, 0,0, 0,0,
0,0, 1,8, 1,9, 2,7,
41,88, 0,0, 0,0, 1,10,
0,0, 2,8, 2,9, 37,83,
1,11, 1,12, 0,0, 2,10,
1,13, 0,0, 1,14, 0,0,
2,11, 2,12, 0,0, 0,0,
2,13, 59,109, 2,14, 0,0,
0,0, 0,0, 0,0, 17,47,
8,35, 13,41, 1,15, 11,38,
11,39, 12,40, 14,42, 4,16,
4,17, 4,18, 2,15, 4,19,
4,20, 4,21, 4,22, 10,37,
7,34, 4,23, 4,24, 4,25,
15,43, 4,26, 18,48, 4,27,
4,28, 4,29, 16,44, 4,30,
4,31, 19,49, 4,32, 22,58,
20,51, 21,55, 16,45, 19,50,
22,59, 21,56, 20,52, 26,69,
16,46, 20,53, 23,60, 21,57,
20,54, 24,62, 23,61, 25,66,
27,70, 24,63, 28,71, 25,67,
29,73, 30,74, 32,79, 34,80,
31,75, 25,68, 36,82, 24,64,
31,76, 38,84, 28,72, 39,85,
31,77, 24,65, 42,89, 40,86,
43,90, 44,91, 31,78, 40,87,
45,92, 46,93, 47,95, 48,97,
49,98, 50,99, 47,96, 51,100,
52,101, 53,102, 54,104, 55,105,
56,106, 57,107, 58,108, 46,94,
60,110, 61,111, 62,112, 53,103,
63,114, 64,115, 65,116, 66,117,
67,118, 68,119, 69,120, 70,121,
71,122, 62,113, 72,123, 73,124,
74,125, 75,126, 76,128, 77,129,
78,130, 79,131, 75,127, 80,132,
82,133, 84,134, 86,135, 87,136,
89,137, 93,138, 94,139, 95,140,
96,142, 97,143, 98,144, 99,145,
100,146, 101,147, 95,141, 102,148,
103,149, 105,150, 106,152, 107,154,
108,155, 110,156, 111,157, 112,158,
113,159, 114,160, 115,161, 116,162,
117,163, 118,164, 119,165, 105,151,
106,153, 120,166, 121,167, 122,168,
123,169, 124,170, 125,171, 126,172,
127,173, 128,175, 129,176, 130,177,
133,178, 135,179, 140,180, 141,181,
143,182, 144,183, 148,184, 149,185,
154,186, 155,187, 156,188, 157,189,
159,190, 160,191, 161,192, 162,193,
165,194, 166,195, 167,196, 168,197,
169,198, 174,199, 175,200, 176,201,
177,202, 178,203, 180,204, 181,205,
183,206, 187,207, 190,208, 191,209,
193,210, 194,211, 195,212, 196,213,
197,214, 198,215, 199,216, 201,217,
202,218, 204,219, 205,220, 207,221,
209,222, 214,223, 215,225, 216,226,
217,227, 218,228, 220,229, 221,230,
223,231, 224,233, 227,234, 228,235,
229,236, 230,237, 223,232, 231,238,
232,239, 233,240, 235,241, 237,242,
238,243, 239,244, 240,245, 242,246,
244,247, 245,248, 247,250, 248,251,
249,252, 250,253, 127,174, 245,249,
251,254, 252,255, 253,256, 255,257,
256,258, 257,259, 258,260, 259,261,
260,262, 261,263, 263,264, 264,265,
265,266, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, 0,0,
0,0, 0,0, 0,0, 214,224,
0,0};
struct yysvf yysvec[] = {
0, 0, 0,
yycrank+-1, 0, 0,
yycrank+-9, yysvec+1, 0,
yycrank+0, 0, yyvstop+1,
yycrank+13, 0, yyvstop+3,
yycrank+0, 0, yyvstop+5,
yycrank+3, 0, yyvstop+8,
yycrank+3, 0, yyvstop+10,
yycrank+3, 0, yyvstop+12,
yycrank+4, 0, yyvstop+14,
yycrank+8, 0, yyvstop+16,
yycrank+3, 0, yyvstop+18,
yycrank+5, 0, yyvstop+20,
yycrank+4, 0, yyvstop+22,
yycrank+9, 0, yyvstop+24,
yycrank+14, 0, yyvstop+26,
yycrank+33, 0, 0,
yycrank+6, 0, 0,
yycrank+21, 0, 0,
yycrank+28, 0, 0,
yycrank+31, 0, 0,
yycrank+36, 0, 0,
yycrank+25, 0, 0,
yycrank+49, 0, 0,
yycrank+52, 0, 0,
yycrank+50, 0, 0,
yycrank+42, 0, 0,
yycrank+51, 0, 0,
yycrank+50, 0, 0,
yycrank+52, 0, 0,
yycrank+56, 0, 0,
yycrank+63, 0, 0,
yycrank+57, 0, 0,
yycrank+0, 0, yyvstop+28,
yycrank+43, 0, 0,
yycrank+36, 0, 0,
yycrank+54, 0, 0,
yycrank+39, 0, 0,
yycrank+64, 0, 0,
yycrank+53, 0, 0,
yycrank+70, 0, 0,
yycrank+44, 0, 0,
yycrank+55, 0, 0,
yycrank+69, 0, 0,
yycrank+73, 0, 0,
yycrank+73, 0, 0,
yycrank+77, 0, 0,
yycrank+68, 0, 0,
yycrank+65, 0, 0,
yycrank+72, 0, 0,
yycrank+70, 0, 0,
yycrank+69, 0, 0,
yycrank+73, 0, 0,
yycrank+84, 0, 0,
yycrank+65, 0, 0,
yycrank+73, 0, 0,
yycrank+79, 0, 0,
yycrank+72, 0, 0,
yycrank+74, 0, 0,
yycrank+65, 0, 0,
yycrank+78, 0, 0,
yycrank+96, 0, 0,
yycrank+84, 0, 0,
yycrank+95, 0, 0,
yycrank+79, 0, 0,
yycrank+83, 0, 0,
yycrank+102, 0, 0,
yycrank+101, 0, 0,
yycrank+169, 0, 0,
yycrank+91, 0, 0,
yycrank+106, 0, 0,
yycrank+93, 0, 0,
yycrank+92, 0, 0,
yycrank+106, 0, 0,
yycrank+94, 0, 0,
yycrank+99, 0, 0,
yycrank+105, 0, 0,
yycrank+103, 0, 0,
yycrank+102, 0, 0,
yycrank+98, 0, 0,
yycrank+183, 0, 0,
yycrank+0, 0, yyvstop+30,
yycrank+111, 0, 0,
yycrank+0, 0, yyvstop+32,
yycrank+185, 0, 0,
yycrank+0, 0, yyvstop+34,
yycrank+104, 0, 0,
yycrank+104, 0, 0,
yycrank+0, 0, yyvstop+36,
yycrank+176, 0, 0,
yycrank+0, 0, yyvstop+38,
yycrank+0, 0, yyvstop+40,
yycrank+0, 0, yyvstop+42,
yycrank+100, 0, 0,
yycrank+121, 0, 0,
yycrank+191, 0, 0,
yycrank+192, 0, 0,
yycrank+109, 0, 0,
yycrank+110, 0, 0,
yycrank+127, 0, 0,
yycrank+120, 0, 0,
yycrank+129, 0, 0,
yycrank+134, 0, 0,
yycrank+117, 0, 0,
yycrank+0, 0, yyvstop+44,
yycrank+201, 0, 0,
yycrank+202, 0, 0,
yycrank+120, 0, 0,
yycrank+135, 0, 0,
yycrank+0, 0, yyvstop+46,
yycrank+134, 0, 0,
yycrank+120, 0, 0,
yycrank+207, 0, 0,
yycrank+142, 0, 0,
yycrank+125, 0, 0,
yycrank+137, 0, 0,
yycrank+138, 0, 0,
yycrank+128, 0, 0,
yycrank+144, 0, 0,
yycrank+127, 0, 0,
yycrank+137, 0, 0,
yycrank+142, 0, 0,
yycrank+134, 0, 0,
yycrank+155, 0, 0,
yycrank+221, 0, 0,
yycrank+133, 0, 0,
yycrank+139, 0, 0,
yycrank+224, 0, 0,
yycrank+143, 0, 0,
yycrank+150, 0, 0,
yycrank+220, 0, 0,
yycrank+0, 0, yyvstop+48,
yycrank+0, 0, yyvstop+50,
yycrank+153, 0, 0,
yycrank+0, 0, yyvstop+52,
yycrank+160, 0, 0,
yycrank+0, 0, yyvstop+54,
yycrank+0, 0, yyvstop+56,
yycrank+0, 0, yyvstop+58,
yycrank+0, 0, yyvstop+60,
yycrank+164, 0, 0,
yycrank+147, 0, 0,
yycrank+0, 0, yyvstop+62,
yycrank+143, 0, 0,
yycrank+161, 0, 0,
yycrank+0, 0, yyvstop+64,
yycrank+0, 0, yyvstop+66,
yycrank+0, 0, yyvstop+68,
yycrank+150, 0, 0,
yycrank+152, 0, 0,
yycrank+0, 0, yyvstop+70,
yycrank+0, 0, yyvstop+72,
yycrank+0, 0, yyvstop+74,
yycrank+0, 0, yyvstop+76,
yycrank+167, 0, 0,
yycrank+155, 0, 0,
yycrank+169, 0, 0,
yycrank+170, 0, 0,
yycrank+0, 0, yyvstop+78,
yycrank+171, 0, 0,
yycrank+168, 0, 0,
yycrank+173, 0, 0,
yycrank+176, 0, 0,
yycrank+0, 0, yyvstop+80,
yycrank+0, 0, yyvstop+82,
yycrank+179, 0, 0,
yycrank+169, 0, 0,
yycrank+170, 0, 0,
yycrank+171, 0, 0,
yycrank+170, 0, 0,
yycrank+0, 0, yyvstop+84,
yycrank+0, 0, yyvstop+86,
yycrank+0, 0, yyvstop+88,
yycrank+0, 0, yyvstop+90,
yycrank+242, 0, 0,
yycrank+182, 0, 0,
yycrank+251, 0, 0,
yycrank+168, 0, 0,
yycrank+184, 0, 0,
yycrank+0, 0, yyvstop+92,
yycrank+185, 0, 0,
yycrank+255, 0, 0,
yycrank+0, 0, yyvstop+94,
yycrank+167, 0, 0,
yycrank+0, 0, yyvstop+96,
yycrank+0, 0, yyvstop+98,
yycrank+0, 0, yyvstop+100,
yycrank+188, 0, 0,
yycrank+0, 0, yyvstop+102,
yycrank+0, 0, yyvstop+104,
yycrank+258, 0, 0,
yycrank+181, 0, 0,
yycrank+0, 0, yyvstop+106,
yycrank+260, 0, 0,
yycrank+172, 0, 0,
yycrank+193, 0, 0,
yycrank+174, 0, 0,
yycrank+196, 0, 0,
yycrank+194, 0, 0,
yycrank+182, 0, 0,
yycrank+0, 0, yyvstop+108,
yycrank+201, 0, 0,
yycrank+268, 0, 0,
yycrank+0, 0, yyvstop+110,
yycrank+269, 0, 0,
yycrank+204, 0, 0,
yycrank+0, 0, yyvstop+112,
yycrank+188, 0, 0,
yycrank+0, 0, yyvstop+114,
yycrank+201, 0, 0,
yycrank+0, 0, yyvstop+116,
yycrank+0, 0, yyvstop+118,
yycrank+0, 0, yyvstop+120,
yycrank+0, 0, yyvstop+122,
yycrank+273, 0, 0,
yycrank+205, 0, 0,
yycrank+275, 0, 0,
yycrank+207, 0, 0,
yycrank+211, 0, 0,
yycrank+0, 0, yyvstop+124,
yycrank+209, 0, 0,
yycrank+195, 0, 0,
yycrank+0, 0, yyvstop+126,
yycrank+214, 0, 0,
yycrank+274, 0, 0,
yycrank+0, 0, yyvstop+128,
yycrank+0, 0, yyvstop+130,
yycrank+282, 0, 0,
yycrank+214, 0, 0,
yycrank+284, 0, 0,
yycrank+212, 0, 0,
yycrank+218, 0, 0,
yycrank+223, 0, 0,
yycrank+205, 0, 0,
yycrank+0, 0, yyvstop+132,
yycrank+290, 0, 0,
yycrank+0, 0, yyvstop+134,
yycrank+213, 0, 0,
yycrank+292, 0, 0,
yycrank+207, 0, 0,
yycrank+294, 0, 0,
yycrank+0, 0, yyvstop+136,
yycrank+224, 0, 0,
yycrank+0, 0, yyvstop+138,
yycrank+227, 0, 0,
yycrank+231, 0, 0,
yycrank+0, 0, yyvstop+140,
yycrank+298, 0, 0,
yycrank+230, 0, 0,
yycrank+235, 0, 0,
yycrank+235, 0, 0,
yycrank+304, 0, 0,
yycrank+219, 0, 0,
yycrank+237, 0, 0,
yycrank+0, 0, yyvstop+142,
yycrank+238, 0, 0,
yycrank+239, 0, 0,
yycrank+309, 0, 0,
yycrank+232, 0, 0,
yycrank+245, 0, 0,
yycrank+312, 0, 0,
yycrank+244, 0, 0,
yycrank+0, 0, yyvstop+144,
yycrank+245, 0, 0,
yycrank+237, 0, 0,
yycrank+316, 0, 0,
yycrank+0, 0, yyvstop+146,
0, 0, 0};
struct yywork *yytop = yycrank+383;
struct yysvf *yybgin = yysvec+1;
char yymatch[] = {
00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,012 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
0};
char yyextra[] = {
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0};
/* @(#)ncform 1.2 */
int yylineno =1;
# define YYU(x) x
# define NLSTATE yyprevious=YYNEWLINE
char yytext[YYLMAX];
struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
char yysbuf[YYLMAX];
char *yysptr = yysbuf;
int *yyfnd;
extern struct yysvf *yyestate;
int yyprevious = YYNEWLINE;
yylook(){
register struct yysvf *yystate, **lsp;
register struct yywork *yyt;
struct yysvf *yyz;
int yych, yyfirst;
struct yywork *yyr;
# ifdef LEXDEBUG
int debug;
# endif
char *yylastch;
/* start off machines */
# ifdef LEXDEBUG
debug = 0;
# endif
yyfirst=1;
if (!yymorfg)
yylastch = yytext;
else {
yymorfg=0;
yylastch = yytext+yyleng;
}
for(;;){
lsp = yylstate;
yyestate = yystate = yybgin;
if (yyprevious==YYNEWLINE) yystate++;
for (;;){
# ifdef LEXDEBUG
if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
# endif
yyt = yystate->yystoff;
if(yyt == yycrank && !yyfirst){ /* may not be any transitions */
yyz = yystate->yyother;
if(yyz == 0)break;
if(yyz->yystoff == yycrank)break;
}
*yylastch++ = yych = input();
yyfirst=0;
tryagain:
# ifdef LEXDEBUG
if(debug){
fprintf(yyout,"char ");
allprint(yych);
putchar('\n');
}
# endif
yyr = yyt;
if ( (int)yyt > (int)yycrank){
yyt = yyr + yych;
if (yyt <= yytop && yyt->verify+yysvec == yystate){
if(yyt->advance+yysvec == YYLERR) /* error transitions */
{unput(*--yylastch);break;}
*lsp++ = yystate = yyt->advance+yysvec;
goto contin;
}
}
# ifdef YYOPTIM
else if((int)yyt < (int)yycrank) { /* r < yycrank */
yyt = yyr = yycrank+(yycrank-yyt);
# ifdef LEXDEBUG
if(debug)fprintf(yyout,"compressed state\n");
# endif
yyt = yyt + yych;
if(yyt <= yytop && yyt->verify+yysvec == yystate){
if(yyt->advance+yysvec == YYLERR) /* error transitions */
{unput(*--yylastch);break;}
*lsp++ = yystate = yyt->advance+yysvec;
goto contin;
}
yyt = yyr + YYU(yymatch[yych]);
# ifdef LEXDEBUG
if(debug){
fprintf(yyout,"try fall back character ");
allprint(YYU(yymatch[yych]));
putchar('\n');
}
# endif
if(yyt <= yytop && yyt->verify+yysvec == yystate){
if(yyt->advance+yysvec == YYLERR) /* error transition */
{unput(*--yylastch);break;}
*lsp++ = yystate = yyt->advance+yysvec;
goto contin;
}
}
if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
# ifdef LEXDEBUG
if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
# endif
goto tryagain;
}
# endif
else
{unput(*--yylastch);break;}
contin:
# ifdef LEXDEBUG
if(debug){
fprintf(yyout,"state %d char ",yystate-yysvec-1);
allprint(yych);
putchar('\n');
}
# endif
;
}
# ifdef LEXDEBUG
if(debug){
fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
allprint(yych);
putchar('\n');
}
# endif
while (lsp-- > yylstate){
*yylastch-- = 0;
if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
yyolsp = lsp;
if(yyextra[*yyfnd]){ /* must backup */
while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
lsp--;
unput(*yylastch--);
}
}
yyprevious = YYU(*yylastch);
yylsp = lsp;
yyleng = yylastch-yytext+1;
yytext[yyleng] = 0;
# ifdef LEXDEBUG
if(debug){
fprintf(yyout,"\nmatch ");
sprint(yytext);
fprintf(yyout," action %d\n",*yyfnd);
}
# endif
return(*yyfnd++);
}
unput(*yylastch);
}
if (yytext[0] == 0 /* && feof(yyin) */)
{
yysptr=yysbuf;
return(0);
}
yyprevious = yytext[0] = input();
if (yyprevious>0)
output(yyprevious);
yylastch=yytext;
# ifdef LEXDEBUG
if(debug)putchar('\n');
# endif
}
}
yyback(p, m)
int *p;
{
if (p==0) return(0);
while (*p)
{
if (*p++ == m)
return(1);
}
return(0);
}
/* the following are only used in the lex library */
yyinput(){
return(input());
}
yyoutput(c)
int c; {
output(c);
}
yyunput(c)
int c; {
unput(c);
}