1#pragma lib "libl.a" 2int yylineno =1; 3# define YYU(x) x 4char yytext[YYLMAX]; 5struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; 6Uchar yysbuf[YYLMAX]; 7Uchar *yysptr = yysbuf; 8int *yyfnd; 9extern struct yysvf *yyestate; 10int yyprevious = YYNEWLINE; 11# ifdef LEXDEBUG 12extern void allprint(int); 13# endif 14yylook(void){ 15 struct yysvf *yystate, **lsp; 16 struct yywork *yyt; 17 struct yysvf *yyz; 18 int yych; 19 struct yywork *yyr; 20# ifdef LEXDEBUG 21 int debug; 22# endif 23 Uchar *yylastch; 24 /* start off machines */ 25# ifdef LEXDEBUG 26 debug = 0; 27# endif 28 if (!yymorfg) 29 yylastch = (Uchar*)yytext; 30 else { 31 yymorfg=0; 32 yylastch = (Uchar*)yytext+yyleng; 33 } 34 for(;;){ 35 lsp = yylstate; 36 yyestate = yystate = yybgin; 37 if (yyprevious==YYNEWLINE) yystate++; 38 for (;;){ 39# ifdef LEXDEBUG 40 if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1); 41# endif 42 yyt = yystate->yystoff; 43 if(yyt == yycrank){ /* may not be any transitions */ 44 yyz = yystate->yyother; 45 if(yyz == 0)break; 46 if(yyz->yystoff == yycrank)break; 47 } 48 *yylastch++ = yych = input(); 49 tryagain: 50# ifdef LEXDEBUG 51 if(debug){ 52 fprintf(yyout,"char "); 53 allprint(yych); 54 putchar('\n'); 55 } 56# endif 57 yyr = yyt; 58 if (yyt > yycrank){ 59 yyt = yyr + yych; 60 if (yyt <= yytop && yyt->verify+yysvec == yystate){ 61 if(yyt->advance+yysvec == YYLERR) /* error transitions */ 62 {unput(*--yylastch);break;} 63 *lsp++ = yystate = yyt->advance+yysvec; 64 goto contin; 65 } 66 } 67# ifdef YYOPTIM 68 else if(yyt < yycrank) { /* r < yycrank */ 69 yyt = yyr = yycrank+(yycrank-yyt); 70# ifdef LEXDEBUG 71 if(debug)fprintf(yyout,"compressed state\n"); 72# endif 73 yyt = yyt + yych; 74 if(yyt <= yytop && yyt->verify+yysvec == yystate){ 75 if(yyt->advance+yysvec == YYLERR) /* error transitions */ 76 {unput(*--yylastch);break;} 77 *lsp++ = yystate = yyt->advance+yysvec; 78 goto contin; 79 } 80 yyt = yyr + YYU(yymatch[yych]); 81# ifdef LEXDEBUG 82 if(debug){ 83 fprintf(yyout,"try fall back character "); 84 allprint(YYU(yymatch[yych])); 85 putchar('\n'); 86 } 87# endif 88 if(yyt <= yytop && yyt->verify+yysvec == yystate){ 89 if(yyt->advance+yysvec == YYLERR) /* error transition */ 90 {unput(*--yylastch);break;} 91 *lsp++ = yystate = yyt->advance+yysvec; 92 goto contin; 93 } 94 } 95 if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){ 96# ifdef LEXDEBUG 97 if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1); 98# endif 99 goto tryagain; 100 } 101# endif 102 else 103 {unput(*--yylastch);break;} 104 contin: 105# ifdef LEXDEBUG 106 if(debug){ 107 fprintf(yyout,"state %d char ",yystate-yysvec-1); 108 allprint(yych); 109 putchar('\n'); 110 } 111# endif 112 ; 113 } 114# ifdef LEXDEBUG 115 if(debug){ 116 fprintf(yyout,"stopped at %d with ",lsp>yylstate?*(lsp-1)-yysvec-1:0); 117 allprint(yych); 118 putchar('\n'); 119 } 120# endif 121 while (lsp-- > yylstate){ 122 *yylastch-- = 0; 123 if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ 124 yyolsp = lsp; 125 if(yyextra[*yyfnd]){ /* must backup */ 126 while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ 127 lsp--; 128 unput(*yylastch--); 129 } 130 } 131 yyprevious = YYU(*yylastch); 132 yylsp = lsp; 133 yyleng = yylastch-(Uchar*)yytext+1; 134 yytext[yyleng] = 0; 135# ifdef LEXDEBUG 136 if(debug){ 137 fprintf(yyout,"\nmatch '%s'", yytext); 138 fprintf(yyout," action %d\n",*yyfnd); 139 } 140# endif 141 return(*yyfnd++); 142 } 143 unput(*yylastch); 144 } 145 if (yytext[0] == 0 /* && feof(yyin) */) 146 { 147 yysptr=yysbuf; 148 return(0); 149 } 150 yyprevious = input(); 151 yytext[0] = yyprevious; 152 if (yyprevious>0) 153 output(yyprevious); 154 yylastch = (Uchar*)yytext; 155# ifdef LEXDEBUG 156 if(debug)putchar('\n'); 157# endif 158 } 159 } 160yyback(int *p, int m) 161{ 162if (p==0) return(0); 163while (*p) 164 { 165 if (*p++ == m) 166 return(1); 167 } 168return(0); 169} 170 /* the following are only used in the lex library */ 171yyinput(void){ 172 return(input()); 173} 174void 175yyoutput(int c) 176{ 177 output(c); 178} 179void 180yyunput(int c) 181{ 182 unput(c); 183} 184