# 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); }