%{
int COMMENT=0;
%}
identifier [a-zA-Z][a-zA-Z0-9]*
%%
#.* {printf("\n%s is a preprocessor directive",yytext);}
int |
char |
double |
while |
for |
struct |
typedef |
do |
if |
break |
continue |
void |
switch |
return |
else |
goto {printf(" kwd");}
"/*" {COMMENT=1;}{printf("comment");}
\+ {if(!COMMENT)printf(" op-plus");}
\- {if(!COMMENT)printf(" op-sub");}
\* {if(!COMMENT)printf(" op-mul");}
\/ {if(!COMMENT)printf(" op-div");}
{identifier}\( {if(!COMMENT)printf("fun");}
\{ {if(!COMMENT)printf("block begins");}
\} {if(!COMMENT)printf("block ends");}
{identifier}(\[[0-9]*\])? {if(!COMMENT) printf(" id");}
\".*\" {if(!COMMENT)printf("str");}
[0-9]+ {if(!COMMENT) printf("num");}
\)(\:)? {if(!COMMENT)printf("\n\t");ECHO;printf("\n");}
\( ECHO;
= {if(!COMMENT)printf(" op-equ");}
\<= |
\>= |
\< |
== |
\> {if(!COMMENT) printf("rel-op");}
%%
int main(int argc, char **argv)
{
FILE *file;
file=fopen("input.c","r");
if(!file)
{
printf("could not open the file");
exit(0);
}
yyin=file;
yylex();
printf("\n");
return(0);
}
int yywrap()
{
return(1);
}
JXsKaW50IENPTU1FTlQ9MDsKJX0KaWRlbnRpZmllciBbYS16QS1aXVthLXpBLVowLTldKgolJQojLioge3ByaW50ZigiXG4lcyBpcyBhIHByZXByb2Nlc3NvciBkaXJlY3RpdmUiLHl5dGV4dCk7fQppbnQgfApmbG9hdCB8CmNoYXIgfApkb3VibGUgfAp3aGlsZSB8CmZvciB8CnN0cnVjdCB8CnR5cGVkZWYgfApkbyB8CmlmIHwKYnJlYWsgfApjb250aW51ZSB8CnZvaWQgfApzd2l0Y2ggfApyZXR1cm4gfAplbHNlIHwKZ290byB7cHJpbnRmKCIga3dkIik7fQoiLyoiIHtDT01NRU5UPTE7fXtwcmludGYoImNvbW1lbnQiKTt9ClwrIHtpZighQ09NTUVOVClwcmludGYoIiBvcC1wbHVzIik7fQpcLSB7aWYoIUNPTU1FTlQpcHJpbnRmKCIgb3Atc3ViIik7fQpcKiB7aWYoIUNPTU1FTlQpcHJpbnRmKCIgb3AtbXVsIik7fQpcLyB7aWYoIUNPTU1FTlQpcHJpbnRmKCIgb3AtZGl2Iik7fQp7aWRlbnRpZmllcn1cKCB7aWYoIUNPTU1FTlQpcHJpbnRmKCJmdW4iKTt9Clx7ICB7aWYoIUNPTU1FTlQpcHJpbnRmKCJibG9jayBiZWdpbnMiKTt9Clx9ICB7aWYoIUNPTU1FTlQpcHJpbnRmKCJibG9jayBlbmRzIik7fQp7aWRlbnRpZmllcn0oXFtbMC05XSpcXSk/IHtpZighQ09NTUVOVCkgcHJpbnRmKCIgaWQiKTt9CgpcIi4qXCIge2lmKCFDT01NRU5UKXByaW50Zigic3RyIik7fQpbMC05XSsge2lmKCFDT01NRU5UKSBwcmludGYoIm51bSIpO30KXCkoXDopPyB7aWYoIUNPTU1FTlQpcHJpbnRmKCJcblx0Iik7RUNITztwcmludGYoIlxuIik7fQpcKCBFQ0hPOwo9IHtpZighQ09NTUVOVClwcmludGYoIiBvcC1lcXUiKTt9Clw8PSB8Clw+PSB8Clw8IHwKPT0gfApcPiB7aWYoIUNPTU1FTlQpIHByaW50ZigicmVsLW9wIik7fQoKJSUKCgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCnsKRklMRSAqZmlsZTsKZmlsZT1mb3BlbigiaW5wdXQuYyIsInIiKTsKaWYoIWZpbGUpCnsKcHJpbnRmKCJjb3VsZCBub3Qgb3BlbiB0aGUgZmlsZSIpOwpleGl0KDApOwp9Cnl5aW49ZmlsZTsKeXlsZXgoKTsKcHJpbnRmKCJcbiIpOwpyZXR1cm4oMCk7Cn0KaW50IHl5d3JhcCgpCnsKcmV0dXJuKDEpOwp9