rendered paste bodydigit [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;
}