int COMMENT=0;
%}
identifier [a-zA-Z][a-zA-Z0-9]*
%%
#.* { printf("\n%s is a PREPROCESSOR DIRECTIVE",yytext);}
int
|float |char
|double
|while
|for
|do
|if
|break
|continue
|void
|switch
|case
|long
|struct |const |typedef |return |else |goto {printf("\n\t%s is a
KEYWORD",yytext);}
"/*" {COMMENT = 1;}
/*{printf("\n\n\t%s is a COMMENT\n",yytext);}*/
"*/" {COMMENT = 0;}
/* printf("\n\n\t%s is a COMMENT\n",yytext);}*/
{identifier}\( {if(!COMMENT)printf("\n\nFUNCTION\n\t%s",yytext);}
{ {if(!COMMENT) printf("\n BLOCK BEGINS");}
} {if(!COMMENT) printf("\n BLOCK ENDS");}
{identifier}(\[[0-9]*\])? {if(!COMMENT) printf("\n %s
IDENTIFIER",yytext);}
".*\" {if(!COMMENT) printf("\n\t%s is a STRING",yytext);}
[0-9]+ {if(!COMMENT) printf("\n\t%s is a NUMBER",yytext);}
{if(!COMMENT) printf("\n\t");ECHO;printf("\n");}
( ECHO;
{if(!COMMENT)printf("\n\t%s is an ASSIGNMENT OPERATOR",yytext);}
<= |>= |< |== |> {if(!COMMENT) printf("\n\t%s is a RELATIONAL
OPERATOR",yytext);} %%
int main(int argc,char **argv) {
if (argc > 1)
{
FILE *file;
file = fopen(argv[1],"r");
if(!file)
{
printf
("could not
open %s \n",argv[1]); exit(0);}
yyin = file;
}
yylex();
printf("\n\n"); return 0;
} int yywrap() {
return 0;
}
aW50IENPTU1FTlQ9MDsKJX0KaWRlbnRpZmllciBbYS16QS1aXVthLXpBLVowLTldKgolJQojLiogeyBwcmludGYoIlxuJXMgaXMgYSBQUkVQUk9DRVNTT1IgRElSRUNUSVZFIix5eXRleHQpO30KaW50IHxmbG9hdCB8Y2hhciB8ZG91YmxlIHx3aGlsZSB8Zm9yIHxkbyB8aWYgfGJyZWFrIHxjb250aW51ZSB8dm9pZCB8c3dpdGNoIHxjYXNlIHxsb25nCnxzdHJ1Y3QgfGNvbnN0IHx0eXBlZGVmIHxyZXR1cm4gfGVsc2UgfGdvdG8ge3ByaW50ZigiXG5cdCVzIGlzIGEKS0VZV09SRCIseXl0ZXh0KTt9CiIvKiIge0NPTU1FTlQgPSAxO30KLyp7cHJpbnRmKCJcblxuXHQlcyBpcyBhIENPTU1FTlRcbiIseXl0ZXh0KTt9Ki8KIiovIiB7Q09NTUVOVCA9IDA7fQovKiBwcmludGYoIlxuXG5cdCVzIGlzIGEgQ09NTUVOVFxuIix5eXRleHQpO30qLwp7aWRlbnRpZmllcn1cKCB7aWYoIUNPTU1FTlQpcHJpbnRmKCJcblxuRlVOQ1RJT05cblx0JXMiLHl5dGV4dCk7fQp7IHtpZighQ09NTUVOVCkgcHJpbnRmKCJcbiBCTE9DSyBCRUdJTlMiKTt9Cn0ge2lmKCFDT01NRU5UKSBwcmludGYoIlxuIEJMT0NLIEVORFMiKTt9CntpZGVudGlmaWVyfShcW1swLTldKlxdKT8ge2lmKCFDT01NRU5UKSBwcmludGYoIlxuICVzCklERU5USUZJRVIiLHl5dGV4dCk7fQoiLipcIiB7aWYoIUNPTU1FTlQpIHByaW50ZigiXG5cdCVzIGlzIGEgU1RSSU5HIix5eXRleHQpO30KWzAtOV0rIHtpZighQ09NTUVOVCkgcHJpbnRmKCJcblx0JXMgaXMgYSBOVU1CRVIiLHl5dGV4dCk7fQp7aWYoIUNPTU1FTlQpIHByaW50ZigiXG5cdCIpO0VDSE87cHJpbnRmKCJcbiIpO30KKCBFQ0hPOwp7aWYoIUNPTU1FTlQpcHJpbnRmKCJcblx0JXMgaXMgYW4gQVNTSUdOTUVOVCBPUEVSQVRPUiIseXl0ZXh0KTt9Cjw9IHw+PSB8PCB8PT0gfD4ge2lmKCFDT01NRU5UKSBwcmludGYoIlxuXHQlcyBpcyBhIFJFTEFUSU9OQUwKT1BFUkFUT1IiLHl5dGV4dCk7fSAlJQppbnQgbWFpbihpbnQgYXJnYyxjaGFyICoqYXJndikgewppZiAoYXJnYyA+IDEpCnsKRklMRSAqZmlsZTsKZmlsZSA9IGZvcGVuKGFyZ3ZbMV0sInIiKTsKaWYoIWZpbGUpCnsKcHJpbnRmKCJjb3VsZCBub3Qgb3BlbiAlcyBcbiIsYXJndlsxXSk7IGV4aXQoMCk7Cn0KeXlpbiA9IGZpbGU7Cn0KeXlsZXgoKTsKcHJpbnRmKCJcblxuIik7IHJldHVybiAwOwp9IGludCB5eXdyYXAoKSB7CnJldHVybiAwOwp9IA==