/* 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 |
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;}
{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;
}
LyogcHJvZ3JhbSBuYW1lIGlzIGxleHAubCAqLyAKJXsgCi8qIHByb2dyYW0gdG8gcmVjb2duaXplIGEgYyBwcm9ncmFtICovIAppbnQgQ09NTUVOVD0wOyAKJX0gCmlkZW50aWZpZXIgW2EtekEtWl1bYS16QS1aMC05XSogCiUlIAojLiogeyBwcmludGYoIlxuJXMgaXMgYSBQUkVQUk9DRVNTT1IgRElSRUNUSVZFIix5eXRleHQpO30gCmludCB8IApmbG9hdCB8IApjaGFyIHwgCmRvdWJsZSB8IAp3aGlsZSB8IApmb3IgfCAKZG8gfCAKaWYgfCAKYnJlYWsgfCAKY29udGludWUgfCAKdm9pZCB8IApzd2l0Y2ggfCAKY2FzZSB8IApsb25nIHwgCnN0cnVjdCB8IApjb25zdCB8IAp0eXBlZGVmIHwgCnJldHVybiB8IAplbHNlIHwgCmdvdG8ge3ByaW50ZigiXG5cdCVzIGlzIGEgS0VZV09SRCIseXl0ZXh0KTt9IAoiLyoiIHtDT01NRU5UID0gMTt9ICAKIiovIiB7Q09NTUVOVCA9IDA7fSAKe2lkZW50aWZpZXJ9XCgge2lmKCFDT01NRU5UKXByaW50ZigiXG5cbkZVTkNUSU9OXG5cdCVzIix5eXRleHQpO30gClx7IHtpZighQ09NTUVOVCkgcHJpbnRmKCJcbiBCTE9DSyBCRUdJTlMiKTt9IApcfSB7aWYoIUNPTU1FTlQpIHByaW50ZigiXG4gQkxPQ0sgRU5EUyIpO30gCntpZGVudGlmaWVyfShcW1swLTldKlxdKT8ge2lmKCFDT01NRU5UKSBwcmludGYoIlxuICVzIElERU5USUZJRVIiLHl5dGV4dCk7fSAKXCIuKlwiIHtpZighQ09NTUVOVCkgcHJpbnRmKCJcblx0JXMgaXMgYSBTVFJJTkciLHl5dGV4dCk7fSAKWzAtOV0rIHtpZighQ09NTUVOVCkgcHJpbnRmKCJcblx0JXMgaXMgYSBOVU1CRVIiLHl5dGV4dCk7fSAKXCkoXDspPyB7aWYoIUNPTU1FTlQpIHByaW50ZigiXG5cdCIpO0VDSE87cHJpbnRmKCJcbiIpO30gClwoIEVDSE87IAo9IHtpZighQ09NTUVOVClwcmludGYoIlxuXHQlcyBpcyBhbiBBU1NJR05NRU5UIE9QRVJBVE9SIix5eXRleHQpO30gClw8PSB8IApcPj0gfCAKXDwgfCAKPT0gfCAKXD4ge2lmKCFDT01NRU5UKSBwcmludGYoIlxuXHQlcyBpcyBhIFJFTEFUSU9OQUwgT1BFUkFUT1IiLHl5dGV4dCk7fSAKJSUgCmludCBtYWluKGludCBhcmdjLGNoYXIgKiphcmd2KSAKeyAKaWYgKGFyZ2MgPiAxKSAKeyAKRklMRSAqZmlsZTsgCmZpbGUgPSBmb3Blbihhcmd2WzFdLCJyIik7IAppZighZmlsZSkgCnsgCnByaW50ZigiY291bGQgbm90IG9wZW4gJXMgXG4iLGFyZ3ZbMV0pOyAKZXhpdCgwKTsgCn0gCnl5aW4gPSBmaWxlOyAKfSAKeXlsZXgoKTsgCnByaW50ZigiXG5cbiIpOyAKCnJldHVybiAwOyAKfSBpbnQgeXl3cmFwKCkgCnsgCnJldHVybiAwOyAKfQo=