/* program name is lexp.l */
%{
/* program to recognize a c program */
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"printf("\n\n");
return 0;
} int yywrap()
{
return 0;
},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;
}
Ci8qIHByb2dyYW0gbmFtZSBpcyBsZXhwLmwgKi8KJXsKLyogcHJvZ3JhbSB0byByZWNvZ25pemUgYSBjIHByb2dyYW0gKi8KaW50IENPTU1FTlQ9MDsKJX0KaWRlbnRpZmllciBbYS16QS1aXVthLXpBLVowLTldKgolJQojLiogeyBwcmludGYoIlxuJXMgaXMgYSBQUkVQUk9DRVNTT1IgRElSRUNUSVZFIix5eXRleHQpO30KaW50IHxmbG9hdCB8Y2hhciB8ZG91YmxlIHx3aGlsZSB8Zm9yIHxkbyB8aWYgfGJyZWFrIHxjb250aW51ZSB8dm9pZCB8c3dpdGNoIHxjYXNlIHxsb25nIHxzdHJ1Y3QgfGNvbnN0IHx0eXBlZGVmIHxyZXR1cm4KfGVsc2UgfGdvdG8ge3ByaW50ZigiXG5cdCVzIGlzIGEgS0VZV09SRCIseXl0ZXh0KTt9CiIvKiIge0NPTU1FTlQgPSAxO30KLyp7cHJpbnRmKCJcblxuXHQlcyBpcyBhIENPTU1FTlRcbiIseXl0ZXh0KTt9Ki8KIiovIiB7Q09NTUVOVCA9IDA7fQovKiBwcmludGYoIlxuXG5cdCVzIGlzIGEgQ09NTUVOVFxuIix5eXRleHQpO30qLwp7aWRlbnRpZmllcn1cKCB7aWYoIUNPTU1FTlQpcHJpbnRmKCJcblxuRlVOQ1RJT05cblx0JXMiLHl5dGV4dCk7fQp7IHtpZighQ09NTUVOVCkgcHJpbnRmKCJcbiBCTE9DSyBCRUdJTlMiKTt9Cn0ge2lmKCFDT01NRU5UKSBwcmludGYoIlxuIEJMT0NLIEVORFMiKTt9CntpZGVudGlmaWVyfShcW1swLTldKlxdKT8ge2lmKCFDT01NRU5UKSBwcmludGYoIlxuICVzIElERU5USUZJRVIiLHl5dGV4dCk7fQoiLipcIiB7aWYoIUNPTU1FTlQpIHByaW50ZigiXG5cdCVzIGlzIGEgU1RSSU5HIix5eXRleHQpO30KWzAtOV0rIHtpZighQ09NTUVOVCkgcHJpbnRmKCJcblx0JXMgaXMgYSBOVU1CRVIiLHl5dGV4dCk7fQp7aWYoIUNPTU1FTlQpIHByaW50ZigiXG5cdCIpO0VDSE87cHJpbnRmKCJcbiIpO30KKCBFQ0hPOwp7aWYoIUNPTU1FTlQpcHJpbnRmKCJcblx0JXMgaXMgYW4gQVNTSUdOTUVOVCBPUEVSQVRPUiJwcmludGYoIlxuXG4iKTsKcmV0dXJuIDA7Cn0gaW50IHl5d3JhcCgpCnsKcmV0dXJuIDA7Cn0seXl0ZXh0KTt9Cjw9IHw+PSB8PCB8PT0gfD4ge2lmKCFDT01NRU5UKSBwcmludGYoIlxuXHQlcyBpcyBhIFJFTEFUSU9OQUwgT1BFUkFUT1IiLHl5dGV4dCk7fQolJQppbnQgbWFpbihpbnQgYXJnYyxjaGFyICoqYXJndikKewppZiAoYXJnYyA+IDEpCnsKRklMRSAqZmlsZTsKZmlsZSA9IGZvcGVuKGFyZ3ZbMV0sInIiKTsKaWYoIWZpbGUpCnsKcHJpbnRmKCJjb3VsZCBub3Qgb3BlbiAlcyBcbiIsYXJndlsxXSk7CmV4aXQoMCk7Cn0KeXlpbiA9IGZpbGU7Cn0KeXlsZXgoKTsKcHJpbnRmKCJcblxuIik7CnJldHVybiAwOwp9IGludCB5eXdyYXAoKQp7CnJldHVybiAwOwp9