/* program name is lexp.l */
%{
/* program to recognize a c program */
int COMMENT=0;
int cnt=0;
%}
identifier [a-zA-Z][a-zA-Z0-9]*
%%
#.* { printf("\n%s is a PREPROCESSOR DIRECTIVE",yytext);}
int |
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;}
"*/" {COMMENT = 0; cnt++;}
{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 Total No.Of comments are %d",cnt);
return 0;
}
int yywrap()
{
return 1;
}
LyogcHJvZ3JhbSBuYW1lIGlzIGxleHAubCAqLwolewovKiBwcm9ncmFtIHRvIHJlY29nbml6ZSBhIGMgcHJvZ3JhbSAqLwppbnQgQ09NTUVOVD0wOwppbnQgY250PTA7CiV9CmlkZW50aWZpZXIgW2EtekEtWl1bYS16QS1aMC05XSoKJSUKIy4qIHsgcHJpbnRmKCJcbiVzIGlzIGEgUFJFUFJPQ0VTU09SIERJUkVDVElWRSIseXl0ZXh0KTt9CmludCB8CmZsb2F0IHwKY2hhciB8CmRvdWJsZSB8CndoaWxlIHwKZm9yIHwKZG8gfAppZiB8CmJyZWFrIHwKY29udGludWUgfAp2b2lkIHwKc3dpdGNoIHwKY2FzZSB8CmxvbmcgfApzdHJ1Y3QgfApjb25zdCB8CnR5cGVkZWYgfApyZXR1cm4gfAplbHNlIHwKZ290byB7cHJpbnRmKCJcblx0JXMgaXMgYSBLRVlXT1JEIix5eXRleHQpO30KIi8qIiB7Q09NTUVOVCA9IDE7fQoiKi8iIHtDT01NRU5UID0gMDsgY250Kys7fQp7aWRlbnRpZmllcn1cKCB7aWYoIUNPTU1FTlQpcHJpbnRmKCJcblxuRlVOQ1RJT05cblx0JXMiLHl5dGV4dCk7fQpceyB7aWYoIUNPTU1FTlQpIHByaW50ZigiXG4gQkxPQ0sgQkVHSU5TIik7fQpcfSB7aWYoIUNPTU1FTlQpIHByaW50ZigiXG4gQkxPQ0sgRU5EUyIpO30Ke2lkZW50aWZpZXJ9KFxbWzAtOV0qXF0pPyB7aWYoIUNPTU1FTlQpIHByaW50ZigiXG4gJXMgSURFTlRJRklFUiIseXl0ZXh0KTt9ClwiLipcIiB7aWYoIUNPTU1FTlQpIHByaW50ZigiXG5cdCVzIGlzIGEgU1RSSU5HIix5eXRleHQpO30KWzAtOV0rIHtpZighQ09NTUVOVCkgcHJpbnRmKCJcblx0JXMgaXMgYSBOVU1CRVIiLHl5dGV4dCk7fQpcKShcOyk/IHtpZighQ09NTUVOVCkgcHJpbnRmKCJcblx0Iik7RUNITztwcmludGYoIlxuIik7fQpcKCBFQ0hPOwo9IHtpZighQ09NTUVOVClwcmludGYoIlxuXHQlcyBpcyBhbiBBU1NJR05NRU5UIE9QRVJBVE9SIix5eXRleHQpO30KXDw9IHwKXD49IHwKXDwgfAo9PSB8Clw+IHtpZighQ09NTUVOVCkgcHJpbnRmKCJcblx0JXMgaXMgYSBSRUxBVElPTkFMIE9QRVJBVE9SIix5eXRleHQpO30KJSUKaW50IG1haW4oaW50IGFyZ2MsY2hhciAqKmFyZ3YpCnsKaWYgKGFyZ2MgPiAxKQp7CkZJTEUgKmZpbGU7CmZpbGUgPSBmb3Blbihhcmd2WzFdLCJyIik7CmlmKCFmaWxlKQp7CnByaW50ZigiY291bGQgbm90IG9wZW4gJXMgXG4iLGFyZ3ZbMV0pOwpleGl0KDApOwp9Cnl5aW4gPSBmaWxlOwp9Cnl5bGV4KCk7CnByaW50ZigiXG5cbiBUb3RhbCBOby5PZiBjb21tZW50cyBhcmUgJWQiLGNudCk7CnJldHVybiAwOwp9CmludCB5eXdyYXAoKQp7CnJldHVybiAxOwoKfQ==