#include "token.h" /* token names for printout */ char tokenNames[100][16] = { "EOFnumber ", "SEMInumber ", "COLONnumber ", "COMMAnumber ", "DOTnumber ", "LPARENnumber ", "RPARENnumber ", "LTnumber ", "GTnumber ", "EQnumber ", "MINUSnumber ", "PLUSnumber ", "TIMESnumber ", "DOTDOTnumber ", "COLEQnumber ", "LEnumber ", "GEnumber ", "NEnumber ", "IDnumber ", "ICONSTnumber ", "CCONSTnumber ", "SCONSTnumber ", "ANDnumber ", "ARRAYnumber ", "BEGINnumber ", "CONSTnumber ", "DIVIDEnumber ", "DOWNTOnumber ", "ELSEnumber ", "ELSIFnumber ", "ENDnumber ", "ENDIFnumber ", "ENDLOOPnumber ", "ENDRECnumber ", "EXITnumber ", "FORnumber ", "FORWARDnumber ", "FUNCTIONnumber ", "IFnumber ", "ISnumber ", "LOOPnumber ", "NOTnumber ", "OFnumber ", "ORnumber ", "PROCEDUREnumber", "PROGRAMnumber ", "RECORDnumber ", "REPEATnumber ", "RETURNnumber ", "THENnumber ", "TOnumber ", "TYPEnumber ", "UNTILnumber ", "VARnumber ", "WHILEnumber " }; extern int yylex( ); extern int yyval; extern char string_buff[]; main( ) { int token; printf("\n TOKEN yyval ID/CONST\n\n"); while ((token = yylex( )) != EOFnumber) { switch(token) { case IDnumber : printf("%s %5d %s\n", tokenNames[token-STRTnum],yyval,string_buff+yyval); break; case ICONSTnumber : printf("%s %5d\n", tokenNames[token-STRTnum],yyval); break; case SCONSTnumber: printf("%s %5d %s\n", tokenNames[token-STRTnum],yyval,string_buff+yyval); break; case CCONSTnumber : printf("%s", tokenNames[token-STRTnum]); switch(yyval) { case '\n' : printf(" '\\n'\n"); break; case '\t' : printf(" '\\t'\n"); break; case '\'' : printf(" '\\''\n"); break; case '\\' : printf(" '\\\\'\n"); break; default : printf(" '%c'\n", yyval); } break; default : printf("%s\n",tokenNames[token-STRTnum]); } } printf("%s\n","EOFnumber"); }