#pragma lib     "libl.a"
int yylineno =1;
# define YYU(x) x
char yytext[YYLMAX];
struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
Uchar yysbuf[YYLMAX];
Uchar *yysptr = yysbuf;
int *yyfnd;
extern struct yysvf *yyestate;
int yyprevious = YYNEWLINE;
# ifdef LEXDEBUG
extern void allprint(int);
# endif
yylook(void){
       struct yysvf *yystate, **lsp;
       struct yywork *yyt;
       struct yysvf *yyz;
       int yych;
       struct yywork *yyr;
# ifdef LEXDEBUG
       int debug;
# endif
       Uchar *yylastch;
       /* start off machines */
# ifdef LEXDEBUG
       debug = 0;
# endif
       if (!yymorfg)
               yylastch = (Uchar*)yytext;
       else {
               yymorfg=0;
               yylastch = (Uchar*)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){             /* may not be any transitions */
                               yyz = yystate->yyother;
                               if(yyz == 0)break;
                               if(yyz->yystoff == yycrank)break;
                               }
                       *yylastch++ = yych = input();
               tryagain:
# ifdef LEXDEBUG
                       if(debug){
                               fprintf(yyout,"char ");
                               allprint(yych);
                               putchar('\n');
                               }
# endif
                       yyr = yyt;
                       if (yyt > 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(yyt < 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>yylstate?*(lsp-1)-yysvec-1:0);
                       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-(Uchar*)yytext+1;
                               yytext[yyleng] = 0;
# ifdef LEXDEBUG
                               if(debug){
                                       fprintf(yyout,"\nmatch '%s'", yytext);
                                       fprintf(yyout," action %d\n",*yyfnd);
                                       }
# endif
                               return(*yyfnd++);
                               }
                       unput(*yylastch);
                       }
               if (yytext[0] == 0  /* && feof(yyin) */)
                       {
                       yysptr=yysbuf;
                       return(0);
                       }
               yyprevious = input();
               yytext[0] = yyprevious;
               if (yyprevious>0)
                       output(yyprevious);
               yylastch = (Uchar*)yytext;
# ifdef LEXDEBUG
               if(debug)putchar('\n');
# endif
               }
       }
yyback(int *p, int m)
{
if (p==0) return(0);
while (*p)
       {
       if (*p++ == m)
               return(1);
       }
return(0);
}
       /* the following are only used in the lex library */
yyinput(void){
       return(input());
}
void
yyoutput(int c)
{
       output(c);
}
void
yyunput(int c)
{
       unput(c);
}