digit [0-9] letter [a-zA-Z] %% [ \t\n] ; [ \t]*#.*\n ; \/\*(.|\n)*\*\/ ; 0[0-7]+(u?|U?|l?|L?) fprintf(yyout,"\nOCTAL CONST\t%s",yytext); {digit}*[.]{digit}* fprintf(yyout,"\nFLOAT CONST\t%s",yytext); (0x|0X)[0-9a-fA-F]*(u?|U?|l?|L?) fprintf(yyout,"\nHEX CONST\t%s",yytext); {digit}+(u?|U?|l?|L?) fprintf(yyout,"\nDEC CONST\t%s",yytext); [-\[\]\.+\*\/(\?)%<>{}&|\^!:] fprintf(yyout,"\n\t%s",yytext); [,;:] fprintf(yyout,"\nDELIM\t%s",yytext); '(.|\n)' fprintf(yyout,"\nCHAR-CONST\t%s",yytext); \"([^\"]|\n)*\" fprintf(yyout,"\nSTRING\t%s",yytext); "++" fprintf(yyout,"\n\t++"); "=" fprintf(yyout,"\n\t="); "--" fprintf(yyout,"\n\t--"); "*=" fprintf(yyout,"\n\t%s",yytext); "/=" fprintf(yyout,"\n\t%s",yytext); "+=" fprintf(yyout,"\n\t%s",yytext); "-=" fprintf(yyout,"\n\t%s",yytext); "->" fprintf(yyout,"\n\t%s",yytext); "&&" fprintf(yyout,"\n\t%s",yytext); "||" fprintf(yyout,"\n\t%s",yytext); "&=" fprintf(yyout,"\n\t%s",yytext); "|=" fprintf(yyout,"\n\t%s",yytext); "!=" fprintf(yyout,"\n\t%s",yytext); "^=" fprintf(yyout,"\n\t%s",yytext); "<<" fprintf(yyout,"\n\t%s",yytext); ">>" fprintf(yyout,"\n\t%s",yytext); "<<=" fprintf(yyout,"\n\t%s",yytext); ">>=" fprintf(yyout,"\n\t%s",yytext); "==" fprintf(yyout,"\n\t%s",yytext); ">=" fprintf(yyout,"\n\t%s",yytext); "<=" fprintf(yyout,"\n\t%s",yytext); "%=" fprintf(yyout,"\n\t%s",yytext); "const" fprintf(yyout,"\nKEY\t%s",yytext); "continue" fprintf(yyout,"\nKEY\t%s",yytext); "break" fprintf(yyout,"\nKEY\t%s",yytext); "default" fprintf(yyout,"\nKEY\t%s",yytext); "extern" fprintf(yyout,"\nKEY\t%s",yytext); "goto" fprintf(yyout,"\nKEY\t%s",yytext); "return" fprintf(yyout,"\nKEY\t%s",yytext); "sizeof" fprintf(yyout,"\nKEY\t%s",yytext); "if" fprintf(yyout,"\nKEY\t%s",yytext); "else" fprintf(yyout,"\nKEY\t%s",yytext); "enum" fprintf(yyout,"\nKEY\t%s",yytext); "auto" fprintf(yyout,"\nKEY\t%s",yytext); "register" fprintf(yyout,"\nKEY\t%s",yytext); "static" fprintf(yyout,"\nKEY\t%s",yytext); "struct" fprintf(yyout,"\nKEY\t%s",yytext); "typedef" fprintf(yyout,"\nKEY\t%s",yytext); "union" fprintf(yyout,"\nKEY\t%s",yytext); "void" fprintf(yyout,"\nKEY\t%s",yytext); "char" fprintf(yyout,"\nKEY\t%s",yytext); "int" fprintf(yyout,"\nKEY\t%s",yytext); "float" fprintf(yyout,"\nKEY\t%s",yytext); "double" fprintf(yyout,"\nKEY\t%s",yytext); "signed" fprintf(yyout,"\nKEY\t%s",yytext); "unsigned" fprintf(yyout,"\nKEY\t%s",yytext); "short" fprintf(yyout,"\nKEY\t%s",yytext); "long" fprintf(yyout,"\nKEY\t%s",yytext); "switch" fprintf(yyout,"\nKEY\t%s",yytext); "case" fprintf(yyout,"\nKEY\t%s",yytext); "do" fprintf(yyout,"\nKEY\t%s",yytext); "for" fprintf(yyout,"\nKEY\t%s",yytext); "while" fprintf(yyout,"\nKEY\t%s",yytext); "far" fprintf(yyout,"\nKEY\t%s",yytext); "volatile" fprintf(yyout,"\nKEY\t%s",yytext); {letter}({letter}|{digit})* fprintf(yyout,"\n%s\t%s","ID",yytext); fprintf(yyout,"\n%s",yyline); %% int yywrap(void) { return 1; } int main(int argc,char *argv[]) { yyin=fopen(argv[1],"r"); yyout=fopen("tokens.txt","w"); yylex(); fclose(yyin); fclose(yyout); return 0; }