# include "stdio.h" # define U(x) ((x)&0377) # 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; #include "token.h" /* hash table functions, imported from table.c */ extern int hash_lookup(); extern int put_string(); int yyline=1, yycolumn=1; int yyval; # 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: {yycolumn+=yyleng; return(SEMInumber); } break; case 2: {yycolumn+=yyleng; return(COLONnumber); } break; case 3: {yycolumn+=yyleng; return(COMMAnumber); } break; case 4: {yycolumn+=yyleng; return(DOTnumber); } break; case 5: {yycolumn+=yyleng; return(LPARENnumber); } break; case 6: {yycolumn+=yyleng; return(RPARENnumber); } break; case 7: {yycolumn+=yyleng; return(LTnumber); } break; case 8: {yycolumn+=yyleng; return(GTnumber); } break; case 9: {yycolumn+=yyleng; return(EQnumber); } break; case 10: {yycolumn+=yyleng; return(MINUSnumber); } break; case 11: {yycolumn+=yyleng; return(PLUSnumber); } break; case 12: {yycolumn+=yyleng; return(TIMESnumber); } break; case 13: {yycolumn+=yyleng; return(DOTDOTnumber); } break; case 14: {yycolumn+=yyleng; return(COLEQnumber); } break; case 15: {yycolumn+=yyleng; return(LEnumber); } break; case 16: {yycolumn+=yyleng; return(GEnumber); } break; case 17: {yycolumn+=yyleng; return(NEnumber); } break; case 18: {yycolumn+=yyleng; return(ANDnumber); } break; case 19: {yycolumn+=yyleng; return(ARRAYnumber); } break; case 20: {yycolumn+=yyleng; return(BEGINnumber); } break; case 21: {yycolumn+=yyleng; return(CONSTnumber); } break; case 22: {yycolumn+=yyleng; return(DIVIDEnumber); } break; case 23: {yycolumn+=yyleng; return(DOWNTOnumber); } break; case 24: {yycolumn+=yyleng; return(ELSEnumber); } break; case 25: {yycolumn+=yyleng; return(ELSIFnumber); } break; case 26: {yycolumn+=yyleng; return(ENDnumber); } break; case 27: {yycolumn+=yyleng; return(ENDIFnumber); } break; case 28: {yycolumn+=yyleng; return(ENDLOOPnumber); } break; case 29: {yycolumn+=yyleng; return(ENDRECnumber); } break; case 30: {yycolumn+=yyleng; return(EXITnumber); } break; case 31: {yycolumn+=yyleng; return(FORnumber); } break; case 32: {yycolumn+=yyleng; return(FORWARDnumber); } break; case 33: {yycolumn+=yyleng; return(FUNCTIONnumber); } break; case 34: {yycolumn+=yyleng; return(IFnumber); } break; case 35: {yycolumn+=yyleng; return(ISnumber); } break; case 36: {yycolumn+=yyleng; return(LOOPnumber); } break; case 37: {yycolumn+=yyleng; return(NOTnumber); } break; case 38: {yycolumn+=yyleng; return(OFnumber); } break; case 39: {yycolumn+=yyleng; return(ORnumber); } break; case 40: {yycolumn+=yyleng; return(PROCEDUREnumber); } break; case 41: {yycolumn+=yyleng; return(PROGRAMnumber); } break; case 42: {yycolumn+=yyleng; return(RECORDnumber); } break; case 43: {yycolumn+=yyleng; return(REPEATnumber); } break; case 44: {yycolumn+=yyleng; return(RETURNnumber); } break; case 45: {yycolumn+=yyleng; return(THENnumber); } break; case 46: {yycolumn+=yyleng; return(TOnumber); } break; case 47: {yycolumn+=yyleng; return(TYPEnumber); } break; case 48: {yycolumn+=yyleng; return(UNTILnumber); } break; case 49: {yycolumn+=yyleng; return(VARnumber); } break; case 50: {yycolumn+=yyleng; return(WHILEnumber); } break; case 51: { yycolumn+=yyleng; yyval=hash_lookup(yytext); return(IDnumber); } break; case 52: {yycolumn+=yyleng; sscanf(yytext,"%d",&yyval); return(ICONSTnumber); } break; case 53: { int i,j; char c, temp[1000]; c=input(); if (c!='\'') { ReportError("unclosed string",yyline, yycolumn); unput(c); } else { unput(c); if (yytext[yyleng-1] == '\\') { yycolumn+=yyleng; i=yyleng-1; j=0; while(yytext[i]=='\\'){ i--;j++;} if (j%2 != 0) yymore(); else { input(); yycolumn+=1; if (yyleng==2) ReportError("invalid character '\'", yyline,yycolumn-2); else if (yyleng==3) { if(yytext[1]=='\\') { yyval='\\'; return(CCONSTnumber); } else { escape_seq_convert(yytext+1, temp); yyval=put_string(temp); free(temp); return(SCONSTnumber); } } else { escape_seq_convert(yytext+1, temp); yyval=put_string(temp); free(temp); return(SCONSTnumber); } } } else { input();yycolumn+=yyleng+1; if (yyleng==2) { yyval=yytext[1]; return(CCONSTnumber); } else if (yyleng==3) { if (yytext[1]=='\\') { switch(yytext[2]) { case 'n' : yyval='\n'; return(CCONSTnumber); case 't' : yyval='\t'; return(CCONSTnumber); case '\'': yyval='\''; return(CCONSTnumber); default : yyval=yytext[2]; return(CCONSTnumber); } } else { escape_seq_convert(yytext+1, temp); yyval=put_string(temp); free(temp); return(SCONSTnumber); } } else { escape_seq_convert(yytext+1, temp); yyval=put_string(temp); free(temp); return(SCONSTnumber); } } } } break; case 54: { process_comment(); } break; case 55: { yyline++; yycolumn=1; } break; case 56: yycolumn+=8; break; case 57: yycolumn+=1; break; case 58: { char temp[81]; sprintf(temp, "invalid character '%s'",yytext); ReportError(temp,yyline,yycolumn); yycolumn+=1; } break; case -1: break; default: fprintf(yyout,"bad switch yylook %d",nstr); } return(0); } /* end of yylex */ /* discard comments */ process_comment() { char c; int line, column; line = yyline; column = yycolumn; yycolumn += yyleng; while ((c=input()) != 0) switch(c) { case '\n': yycolumn=1; yyline++; break; case '\t': yycolumn += 8; break; case '*': if ((c=input()) == ')') { yycolumn += 2; return; } else { yycolumn++; unput(c); } break; default: yycolumn++; break; } ReportError("unclosed comment",line,column); } ReportError(message,line,column) char *message; int line, column; { printf("\nError: %s \tline %d column %d\n\n",message,line,column); } /* process escape sequences (get rid of the 1st '\') in s, put results in s1 */ escape_seq_convert(s,s1) char *s, *s1; { char *t, *t1; t = s; t1 = s1; while (*t != '\0') { if (*t != '\\') *t1 = *t; else { switch (*(++t)) { case 'n' : *t1 = '\n'; break; case 't' : *t1 = '\t'; break; case '\\' : *t1 = '\\'; break; case '\'' : *t1 = '\''; break; default : *t1 = *t; } } t++; t1++; } *t1='\0'; } /* int find_index(s) char *s; { int i,j,k; int index; struct hash_item *p1; to_upper(s); index=hash_func(s); p1=hash_table[index]; i=1; while ((p1!=NULL) && i) { if (strcmp(string_buff+p1->index, s) == 0) i=0; else p1=p1->next; } free(s); if (p1 == NULL) return(-1); else return(p1->index); } */ int yyvstop[] ={ 0, 58, 0, 56, 58, 0, 55, 0, 57, 58, 0, 53, 58, 0, 58, -5, 0, 6, 58, 0, 12, 58, 0, 11, 58, 0, 3, 58, 0, 10, 58, 0, 58, -4, 0, 52, 58, 0, 58, -2, 0, 1, 58, 0, 58, -7, 0, 9, 58, 0, 58, -8, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 51, 58, 0, 53, 0, 5, 0, 54, 0, 4, 0, 13, 0, 52, 0, 2, 0, 14, 0, 7, 0, 15, 0, 17, 0, 8, 0, 16, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 34, 51, 0, 35, 51, 0, 51, 0, 51, 0, 38, 51, 0, 39, 51, 0, 51, 0, 51, 0, 51, 0, 46, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 18, 51, 0, 51, 0, 51, 0, 51, 0, 22, 51, 0, 51, 0, 51, 0, 26, 51, 0, 51, 0, 31, 51, 0, 51, 0, 51, 0, 37, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 49, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 24, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 30, 51, 0, 51, 0, 51, 0, 36, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 45, 51, 0, 47, 51, 0, 51, 0, 51, 0, 19, 51, 0, 20, 51, 0, 51, 0, 51, 0, 25, 51, 0, 27, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 48, 51, 0, 50, 51, 0, 51, 0, 23, 51, 0, 51, 0, 29, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 42, 51, 0, 43, 51, 0, 44, 51, 0, 51, 0, 28, 51, 0, 32, 51, 0, 51, 0, 51, 0, 41, 51, 0, 21, 51, 0, 33, 51, 0, 51, 0, 40, 51, 0, 0}; # define YYTYPE unsigned char 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, 1,4, 1,5, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 38,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,6, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,7, 1,8, 1,9, 1,10, 1,11, 1,12, 1,13, 1,14, 38,0, 1,15, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,16, 1,17, 1,18, 1,19, 1,20, 0,0, 0,0, 1,21, 1,22, 1,23, 1,24, 1,25, 1,26, 1,27, 1,27, 1,28, 1,27, 2,4, 1,29, 1,27, 1,30, 1,31, 1,32, 0,0, 1,33, 1,27, 1,34, 1,35, 1,36, 1,37, 1,27, 1,27, 7,38, 22,54, 0,0, 0,0, 0,0, 0,0, 0,0, 27,51, 2,6, 7,0, 22,51, 27,51, 0,0, 0,0, 22,51, 0,0, 2,8, 2,9, 0,0, 2,11, 2,12, 2,13, 15,43, 15,43, 15,43, 15,43, 15,43, 15,43, 15,43, 15,43, 15,43, 15,43, 0,0, 22,54, 2,16, 2,17, 2,18, 0,0, 7,0, 27,51, 0,0, 7,38, 22,51, 27,51, 0,0, 7,38, 22,51, 7,38, 0,0, 0,0, 0,0, 0,0, 0,0, 8,39, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 7,38, 7,38, 8,39, 0,0, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 0,0, 7,38, 7,38, 7,38, 7,38, 7,38, 0,0, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 0,0, 0,0, 8,39, 0,0, 0,0, 8,40, 0,0, 0,0, 0,0, 8,39, 0,0, 8,39, 0,0, 0,0, 0,0, 0,0, 0,0, 14,41, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 8,39, 8,39, 14,41, 0,0, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 0,0, 8,39, 8,39, 8,39, 8,39, 8,39, 0,0, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 0,0, 0,0, 14,41, 0,0, 0,0, 14,41, 0,0, 0,0, 0,0, 14,42, 0,0, 14,41, 0,0, 0,0, 0,0, 0,0, 0,0, 16,44, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 14,41, 14,41, 16,44, 0,0, 14,41, 14,41, 14,41, 14,41, 14,41, 14,41, 14,41, 14,41, 14,41, 14,41, 0,0, 14,41, 14,41, 14,41, 14,41, 14,41, 0,0, 14,41, 14,41, 14,41, 14,41, 14,41, 14,41, 14,41, 14,41, 0,0, 0,0, 16,44, 0,0, 0,0, 16,44, 0,0, 0,0, 0,0, 16,44, 0,0, 16,44, 0,0, 0,0, 0,0, 0,0, 0,0, 18,46, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 16,45, 16,44, 18,46, 0,0, 16,44, 16,44, 16,44, 16,44, 16,44, 16,44, 16,44, 16,44, 16,44, 16,44, 0,0, 16,44, 16,44, 16,44, 16,44, 16,44, 0,0, 16,44, 16,44, 16,44, 16,44, 16,44, 16,44, 16,44, 16,44, 0,0, 0,0, 18,46, 0,0, 0,0, 18,46, 0,0, 0,0, 0,0, 18,46, 0,0, 18,46, 0,0, 0,0, 0,0, 0,0, 0,0, 20,49, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 18,47, 18,48, 20,49, 0,0, 18,46, 18,46, 18,46, 18,46, 18,46, 18,46, 18,46, 18,46, 18,46, 18,46, 0,0, 18,46, 18,46, 18,46, 18,46, 18,46, 0,0, 18,46, 18,46, 18,46, 18,46, 18,46, 18,46, 18,46, 18,46, 0,0, 0,0, 20,49, 0,0, 0,0, 20,49, 0,0, 0,0, 0,0, 20,49, 0,0, 20,49, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 20,50, 20,49, 0,0, 0,0, 20,49, 20,49, 20,49, 20,49, 20,49, 20,49, 20,49, 20,49, 20,49, 20,49, 0,0, 20,49, 20,49, 20,49, 20,49, 20,49, 0,0, 20,49, 20,49, 20,49, 20,49, 20,49, 20,49, 20,49, 20,49, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 0,0, 23,51, 23,55, 0,0, 0,0, 23,51, 0,0, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,52, 21,51, 21,51, 21,51, 21,53, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 23,51, 23,55, 0,0, 0,0, 23,51, 0,0, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,52, 21,51, 21,51, 21,51, 21,53, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 21,51, 24,56, 25,58, 0,0, 25,59, 0,0, 24,51, 24,57, 25,51, 28,63, 24,51, 26,51, 26,61, 0,0, 25,60, 26,51, 0,0, 28,51, 26,62, 29,51, 29,65, 28,51, 28,64, 29,51, 30,51, 30,66, 0,0, 32,51, 30,51, 0,0, 0,0, 32,69, 0,0, 24,56, 25,58, 0,0, 25,59, 0,0, 24,51, 24,57, 25,51, 28,63, 24,51, 26,51, 26,61, 0,0, 25,60, 26,51, 0,0, 28,51, 26,62, 29,51, 29,65, 28,51, 28,64, 29,51, 30,51, 30,66, 31,67, 32,51, 30,51, 35,74, 33,70, 32,69, 0,0, 35,51, 31,51, 34,71, 36,75, 52,77, 31,68, 33,51, 37,76, 34,51, 34,72, 33,51, 51,51, 34,51, 37,51, 52,51, 51,51, 36,51, 37,51, 52,51, 34,73, 36,51, 0,0, 53,51, 55,80, 0,0, 31,67, 53,78, 55,51, 35,74, 33,70, 0,0, 0,0, 35,51, 31,51, 34,71, 36,75, 52,77, 31,68, 33,51, 37,76, 34,51, 34,72, 33,51, 51,51, 34,51, 37,51, 52,51, 51,51, 36,51, 37,51, 52,51, 34,73, 36,51, 54,79, 53,51, 55,80, 0,0, 56,51, 53,78, 55,51, 54,51, 56,51, 57,51, 58,51, 54,51, 56,81, 57,51, 58,51, 58,83, 59,84, 61,51, 57,82, 60,85, 0,0, 61,86, 0,0, 62,87, 60,51, 63,51, 59,51, 62,51, 60,51, 63,51, 59,51, 64,51, 54,79, 65,51, 65,88, 64,51, 56,51, 65,51, 0,0, 54,51, 56,51, 57,51, 58,51, 54,51, 56,81, 57,51, 58,51, 58,83, 59,84, 61,51, 57,82, 60,85, 0,0, 61,86, 0,0, 62,87, 60,51, 63,51, 59,51, 62,51, 60,51, 63,51, 59,51, 64,51, 66,51, 65,51, 65,88, 64,51, 66,51, 65,51, 66,89, 67,51, 68,51, 69,51, 69,90, 67,51, 68,51, 69,51, 70,91, 71,94, 72,51, 73,51, 75,51, 73,95, 72,51, 73,51, 75,97, 0,0, 71,51, 70,51, 0,0, 70,92, 71,51, 70,51, 0,0, 70,93, 66,51, 0,0, 0,0, 0,0, 66,51, 0,0, 66,89, 67,51, 68,51, 69,51, 69,90, 67,51, 68,51, 69,51, 70,91, 71,94, 72,51, 73,51, 75,51, 73,95, 72,51, 73,51, 75,97, 78,99, 71,51, 70,51, 74,51, 70,92, 71,51, 70,51, 74,51, 70,93, 74,96, 76,98, 0,0, 77,51, 78,51, 0,0, 76,51, 77,51, 78,51, 79,100, 76,51, 80,51, 0,0, 81,51, 79,51, 80,51, 80,101, 81,51, 79,51, 0,0, 82,102, 0,0, 84,105, 78,99, 82,51, 84,106, 74,51, 84,51, 0,0, 0,0, 74,51, 84,107, 74,96, 76,98, 0,0, 77,51, 78,51, 0,0, 76,51, 77,51, 78,51, 79,100, 76,51, 80,51, 0,0, 81,51, 79,51, 80,51, 80,101, 81,51, 79,51, 83,103, 82,102, 0,0, 84,105, 83,104, 82,51, 84,106, 87,110, 84,51, 83,51, 85,51, 86,51, 84,107, 83,51, 85,51, 86,51, 85,108, 88,51, 87,51, 88,111, 86,109, 88,51, 87,51, 89,51, 91,51, 91,114, 0,0, 89,51, 91,51, 90,112, 93,51, 0,0, 83,103, 90,113, 93,51, 0,0, 83,104, 93,116, 0,0, 87,110, 90,51, 83,51, 85,51, 86,51, 90,51, 83,51, 85,51, 86,51, 85,108, 88,51, 87,51, 88,111, 86,109, 88,51, 87,51, 89,51, 91,51, 91,114, 92,115, 89,51, 91,51, 90,112, 93,51, 0,0, 94,117, 90,113, 93,51, 92,51, 94,51, 93,116, 95,118, 92,51, 90,51, 96,119, 0,0, 0,0, 90,51, 97,51, 96,51, 95,51, 0,0, 97,51, 96,51, 95,51, 99,51, 98,120, 0,0, 98,51, 99,51, 100,122, 92,115, 98,51, 0,0, 100,51, 0,0, 99,121, 94,117, 103,51, 0,0, 92,51, 94,51, 103,51, 95,118, 92,51, 0,0, 96,119, 0,0, 0,0, 0,0, 97,51, 96,51, 95,51, 0,0, 97,51, 96,51, 95,51, 99,51, 98,120, 101,51, 98,51, 99,51, 100,122, 101,51, 98,51, 101,123, 100,51, 102,51, 99,121, 104,125, 103,51, 102,51, 105,126, 102,124, 103,51, 106,51, 106,127, 104,51, 108,51, 106,51, 105,51, 104,51, 108,51, 107,128, 105,51, 109,129, 111,51, 0,0, 0,0, 0,0, 111,51, 101,51, 107,51, 0,0, 0,0, 101,51, 107,51, 101,123, 109,51, 102,51, 0,0, 104,125, 109,51, 102,51, 105,126, 102,124, 0,0, 106,51, 106,127, 104,51, 108,51, 106,51, 105,51, 104,51, 108,51, 107,128, 105,51, 109,129, 111,51, 110,51, 112,131, 0,0, 111,51, 110,51, 107,51, 110,130, 115,134, 113,51, 107,51, 112,51, 109,51, 113,132, 114,51, 112,51, 109,51, 0,0, 114,133, 116,51, 117,51, 115,51, 118,51, 116,135, 117,51, 115,51, 118,51, 0,0, 121,51, 119,136, 0,0, 119,51, 121,51, 110,51, 112,131, 119,51, 0,0, 110,51, 122,51, 110,130, 115,134, 113,51, 122,51, 112,51, 0,0, 113,132, 114,51, 112,51, 0,0, 123,138, 114,133, 116,51, 117,51, 115,51, 118,51, 116,135, 117,51, 115,51, 118,51, 120,137, 121,51, 119,136, 123,51, 119,51, 121,51, 125,51, 123,51, 119,51, 120,51, 125,51, 122,51, 0,0, 120,51, 126,51, 122,51, 124,51, 124,139, 126,51, 128,141, 124,51, 129,51, 123,138, 127,51, 127,140, 129,142, 131,144, 127,51, 130,143, 0,0, 128,51, 0,0, 120,137, 130,51, 128,51, 123,51, 131,51, 130,51, 125,51, 123,51, 131,51, 120,51, 125,51, 135,148, 0,0, 120,51, 126,51, 135,51, 124,51, 124,139, 126,51, 128,141, 124,51, 129,51, 132,145, 127,51, 127,140, 129,142, 131,144, 127,51, 130,143, 0,0, 128,51, 133,146, 0,0, 130,51, 128,51, 132,51, 131,51, 130,51, 134,51, 132,51, 131,51, 133,51, 134,51, 135,148, 134,147, 133,51, 136,51, 135,51, 137,51, 138,149, 136,51, 139,51, 137,51, 138,51, 132,145, 139,51, 140,51, 141,51, 140,150, 0,0, 140,51, 141,51, 0,0, 133,146, 0,0, 142,151, 0,0, 132,51, 143,51, 143,152, 134,51, 132,51, 143,51, 133,51, 134,51, 142,51, 134,147, 133,51, 136,51, 142,51, 137,51, 138,149, 136,51, 139,51, 137,51, 138,51, 0,0, 139,51, 140,51, 141,51, 140,150, 144,51, 140,51, 141,51, 0,0, 144,51, 0,0, 142,151, 144,153, 146,51, 143,51, 143,152, 0,0, 146,51, 143,51, 145,154, 145,51, 142,51, 147,51, 148,51, 145,51, 142,51, 147,51, 148,51, 149,51, 150,51, 0,0, 151,51, 149,51, 150,51, 149,155, 151,51, 152,156, 144,51, 153,51, 154,51, 152,51, 144,51, 153,157, 154,51, 144,153, 146,51, 155,51, 0,0, 0,0, 146,51, 155,51, 145,154, 145,51, 156,51, 147,51, 148,51, 145,51, 156,51, 147,51, 148,51, 149,51, 150,51, 0,0, 151,51, 149,51, 150,51, 149,155, 151,51, 152,156, 158,51, 153,51, 154,51, 152,51, 158,51, 153,157, 154,51, 0,0, 157,158, 155,51, 0,0, 0,0, 0,0, 155,51, 0,0, 0,0, 156,51, 157,51, 0,0, 0,0, 156,51, 157,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 158,51, 0,0, 0,0, 0,0, 158,51, 0,0, 0,0, 0,0, 157,158, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 157,51, 0,0, 0,0, 0,0, 157,51, 0,0, 0,0, 0,0, 0,0}; struct yysvf yysvec[] ={ 0, 0, 0, yycrank+-1, 0, 0, yycrank+-67, yysvec+1, 0, yycrank+0, 0, yyvstop+1, yycrank+0, 0, yyvstop+3, yycrank+0, 0, yyvstop+6, yycrank+0, 0, yyvstop+8, yycrank+-90, 0, yyvstop+11, yycrank+-143, 0, yyvstop+14, yycrank+0, 0, yyvstop+17, yycrank+0, 0, yyvstop+20, yycrank+0, 0, yyvstop+23, yycrank+0, 0, yyvstop+26, yycrank+0, 0, yyvstop+29, yycrank+-196, 0, yyvstop+32, yycrank+65, 0, yyvstop+35, yycrank+-249, 0, yyvstop+38, yycrank+0, 0, yyvstop+41, yycrank+-302, 0, yyvstop+44, yycrank+0, 0, yyvstop+47, yycrank+-355, 0, yyvstop+50, yycrank+397, 0, yyvstop+53, yycrank+23, yysvec+21, yyvstop+56, yycrank+378, yysvec+21, yyvstop+59, yycrank+447, yysvec+21, yyvstop+62, yycrank+445, yysvec+21, yyvstop+65, yycrank+452, yysvec+21, yyvstop+68, yycrank+20, yysvec+21, yyvstop+71, yycrank+458, yysvec+21, yyvstop+74, yycrank+460, yysvec+21, yyvstop+77, yycrank+465, yysvec+21, yyvstop+80, yycrank+507, yysvec+21, yyvstop+83, yycrank+468, yysvec+21, yyvstop+86, yycrank+512, yysvec+21, yyvstop+89, yycrank+514, yysvec+21, yyvstop+92, yycrank+502, yysvec+21, yyvstop+95, yycrank+522, yysvec+21, yyvstop+98, yycrank+519, yysvec+21, yyvstop+101, yycrank+-9, yysvec+7, yyvstop+104, yycrank+0, 0, yyvstop+106, yycrank+0, 0, yyvstop+108, yycrank+0, 0, yyvstop+110, yycrank+0, 0, yyvstop+112, yycrank+0, yysvec+15, yyvstop+114, yycrank+0, 0, yyvstop+116, yycrank+0, 0, yyvstop+118, yycrank+0, 0, yyvstop+120, yycrank+0, 0, yyvstop+122, yycrank+0, 0, yyvstop+124, yycrank+0, 0, yyvstop+126, yycrank+0, 0, yyvstop+128, yycrank+517, yysvec+21, yyvstop+130, yycrank+520, yysvec+21, yyvstop+132, yycrank+528, yysvec+21, yyvstop+134, yycrank+566, yysvec+21, yyvstop+136, yycrank+529, yysvec+21, yyvstop+138, yycrank+563, yysvec+21, yyvstop+140, yycrank+568, yysvec+21, yyvstop+142, yycrank+569, yysvec+21, yyvstop+144, yycrank+585, yysvec+21, yyvstop+146, yycrank+583, yysvec+21, yyvstop+148, yycrank+576, yysvec+21, yyvstop+150, yycrank+582, yysvec+21, yyvstop+152, yycrank+584, yysvec+21, yyvstop+154, yycrank+590, yysvec+21, yyvstop+157, yycrank+592, yysvec+21, yyvstop+160, yycrank+623, yysvec+21, yyvstop+162, yycrank+630, yysvec+21, yyvstop+164, yycrank+631, yysvec+21, yyvstop+167, yycrank+632, yysvec+21, yyvstop+170, yycrank+648, yysvec+21, yyvstop+172, yycrank+647, yysvec+21, yyvstop+174, yycrank+639, yysvec+21, yyvstop+176, yycrank+640, yysvec+21, yyvstop+179, yycrank+681, yysvec+21, yyvstop+181, yycrank+641, yysvec+21, yyvstop+183, yycrank+693, yysvec+21, yyvstop+185, yycrank+690, yysvec+21, yyvstop+187, yycrank+691, yysvec+21, yyvstop+190, yycrank+701, yysvec+21, yyvstop+192, yycrank+698, yysvec+21, yyvstop+194, yycrank+700, yysvec+21, yyvstop+196, yycrank+707, yysvec+21, yyvstop+199, yycrank+747, yysvec+21, yyvstop+201, yycrank+714, yysvec+21, yyvstop+203, yycrank+748, yysvec+21, yyvstop+206, yycrank+749, yysvec+21, yyvstop+208, yycrank+756, yysvec+21, yyvstop+211, yycrank+755, yysvec+21, yyvstop+213, yycrank+761, yysvec+21, yyvstop+215, yycrank+778, yysvec+21, yyvstop+218, yycrank+762, yysvec+21, yyvstop+220, yycrank+805, yysvec+21, yyvstop+222, yycrank+768, yysvec+21, yyvstop+224, yycrank+802, yysvec+21, yyvstop+226, yycrank+817, yysvec+21, yyvstop+228, yycrank+816, yysvec+21, yyvstop+230, yycrank+815, yysvec+21, yyvstop+232, yycrank+825, yysvec+21, yyvstop+235, yycrank+822, yysvec+21, yyvstop+237, yycrank+827, yysvec+21, yyvstop+239, yycrank+856, yysvec+21, yyvstop+241, yycrank+864, yysvec+21, yyvstop+243, yycrank+835, yysvec+21, yyvstop+245, yycrank+874, yysvec+21, yyvstop+248, yycrank+877, yysvec+21, yyvstop+250, yycrank+872, yysvec+21, yyvstop+252, yycrank+889, yysvec+21, yyvstop+254, yycrank+875, yysvec+21, yyvstop+256, yycrank+895, yysvec+21, yyvstop+259, yycrank+916, yysvec+21, yyvstop+261, yycrank+883, yysvec+21, yyvstop+263, yycrank+926, yysvec+21, yyvstop+266, yycrank+924, yysvec+21, yyvstop+268, yycrank+929, yysvec+21, yyvstop+270, yycrank+936, yysvec+21, yyvstop+272, yycrank+934, yysvec+21, yyvstop+274, yycrank+935, yysvec+21, yyvstop+276, yycrank+937, yysvec+21, yyvstop+279, yycrank+946, yysvec+21, yyvstop+282, yycrank+983, yysvec+21, yyvstop+284, yycrank+943, yysvec+21, yyvstop+286, yycrank+953, yysvec+21, yyvstop+289, yycrank+977, yysvec+21, yyvstop+292, yycrank+990, yysvec+21, yyvstop+294, yycrank+980, yysvec+21, yyvstop+296, yycrank+988, yysvec+21, yyvstop+299, yycrank+997, yysvec+21, yyvstop+302, yycrank+1004, yysvec+21, yyvstop+304, yycrank+995, yysvec+21, yyvstop+306, yycrank+1007, yysvec+21, yyvstop+308, yycrank+1010, yysvec+21, yyvstop+310, yycrank+1041, yysvec+21, yyvstop+312, yycrank+1047, yysvec+21, yyvstop+314, yycrank+1044, yysvec+21, yyvstop+316, yycrank+1017, yysvec+21, yyvstop+318, yycrank+1052, yysvec+21, yyvstop+320, yycrank+1054, yysvec+21, yyvstop+323, yycrank+1055, yysvec+21, yyvstop+326, yycrank+1057, yysvec+21, yyvstop+328, yycrank+1062, yysvec+21, yyvstop+331, yycrank+1063, yysvec+21, yyvstop+333, yycrank+1081, yysvec+21, yyvstop+336, yycrank+1074, yysvec+21, yyvstop+338, yycrank+1097, yysvec+21, yyvstop+340, yycrank+1112, yysvec+21, yyvstop+342, yycrank+1105, yysvec+21, yyvstop+344, yycrank+1114, yysvec+21, yyvstop+347, yycrank+1115, yysvec+21, yyvstop+350, yycrank+1120, yysvec+21, yyvstop+353, yycrank+1121, yysvec+21, yyvstop+355, yycrank+1123, yysvec+21, yyvstop+358, yycrank+1128, yysvec+21, yyvstop+361, yycrank+1130, yysvec+21, yyvstop+363, yycrank+1131, yysvec+21, yyvstop+365, yycrank+1138, yysvec+21, yyvstop+368, yycrank+1145, yysvec+21, yyvstop+371, yycrank+1178, yysvec+21, yyvstop+374, yycrank+1161, yysvec+21, yyvstop+376, 0, 0, 0}; struct yywork *yytop = yycrank+1292; 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 ,047 , 01 ,01 ,'*' ,01 ,01 ,01 ,'.' ,01 , '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' , '0' ,'0' ,01 ,01 ,01 ,'=' ,'>' ,01 , 01 ,'A' ,'B' ,'C' ,'D' ,'E' ,'F' ,'G' , 'H' ,'I' ,'J' ,'J' ,'L' ,'M' ,'N' ,'O' , 'P' ,'J' ,'R' ,'S' ,'T' ,'U' ,'V' ,'W' , 'X' ,'Y' ,'J' ,01 ,01 ,01 ,01 ,01 , 01 ,'A' ,'B' ,'C' ,'D' ,'E' ,'F' ,'G' , 'H' ,'I' ,'J' ,'J' ,'L' ,'M' ,'N' ,'O' , 'P' ,'J' ,'R' ,'S' ,'T' ,'U' ,'V' ,'W' , 'X' ,'Y' ,'J' ,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 , 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 0}; char yyextra[] ={ 0,0,1,0,1,1,0,1, 1,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 4.1 83/08/11 */ 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; struct yywork *yyr; # ifdef LEXDEBUG int debug; # endif char *yylastch; /* start off machines */ # ifdef LEXDEBUG debug = 0; # endif 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){ /* 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,"unsigned 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); }