%{
#include<stdio.h>
int i=0,k=0,n=0,s=0,r=0;
%}
letter [A-Za-z]
digit [0-9]
id {letter}({letter}|{digit})*
%%
int
|char
|double
|float|case
{printf
("\n\"
%s\" is a keyword",yytext);k++;}{id} {printf("\n\"%s\" is an identifier",yytext);i++;}
{number} {printf
("\n\"
%s\" is a number",yytext);n++;} [<>]=|<>|== {printf("\n\"%s\" is a relational operator",yytext);r++;}
[;{}()\",] {printf("\n\"%s\" is a special symbol",yytext);s++;}
%%
int yywrap() {
return 1;
}
int main(int argc, char *argv[]) {
FILE *fp;
if(argc >= 2) {
fp = fopen(argv[1], "r");
if(!fp) {
printf
("File cannot
open %s", argv[1]); return 1;
}
else {
yyin = fp;
yylex();
printf("\nIdentifiers: %d \nKeywords: %d \nRelational Operators: %d \nDigits: %d \nSpecial Symbols: %d\n", i, k, r, n, s);
fclose(fp);
return 0;
}
}
else {
printf("Please provide input file as argument");
return 1;
}
}
JXsKI2luY2x1ZGU8c3RkaW8uaD4KaW50IGk9MCxrPTAsbj0wLHM9MCxyPTA7CiV9CgpsZXR0ZXIgW0EtWmEtel0KZGlnaXQgWzAtOV0KaWQge2xldHRlcn0oe2xldHRlcn18e2RpZ2l0fSkqIApudW1iZXIge2RpZ2l0fSsKCiUlCgppbnR8Y2hhcnxkb3VibGV8ZmxvYXR8Y2FzZSB7cHJpbnRmKCJcblwiJXNcIiBpcyBhIGtleXdvcmQiLHl5dGV4dCk7aysrO30Ke2lkfSB7cHJpbnRmKCJcblwiJXNcIiBpcyBhbiBpZGVudGlmaWVyIix5eXRleHQpO2krKzt9CntudW1iZXJ9IHtwcmludGYoIlxuXCIlc1wiIGlzIGEgbnVtYmVyIix5eXRleHQpO24rKzt9Cls8Pl09fDw+fD09IHtwcmludGYoIlxuXCIlc1wiIGlzIGEgcmVsYXRpb25hbCBvcGVyYXRvciIseXl0ZXh0KTtyKys7fQpbO3t9KClcIixdIHtwcmludGYoIlxuXCIlc1wiIGlzIGEgc3BlY2lhbCBzeW1ib2wiLHl5dGV4dCk7cysrO30KCiUlCgppbnQgeXl3cmFwKCkgewogICAgcmV0dXJuIDE7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKICAgIEZJTEUgKmZwOwogICAgaWYoYXJnYyA+PSAyKSB7CiAgICAgICAgZnAgPSBmb3Blbihhcmd2WzFdLCAiciIpOwogICAgICAgIGlmKCFmcCkgewogICAgICAgICAgICBwcmludGYoIkZpbGUgY2Fubm90IG9wZW4gJXMiLCBhcmd2WzFdKTsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB5eWluID0gZnA7CiAgICAgICAgICAgIHl5bGV4KCk7CiAgICAgICAgICAgIHByaW50ZigiXG5JZGVudGlmaWVyczogJWQgXG5LZXl3b3JkczogJWQgXG5SZWxhdGlvbmFsIE9wZXJhdG9yczogJWQgXG5EaWdpdHM6ICVkIFxuU3BlY2lhbCBTeW1ib2xzOiAlZFxuIiwgaSwgaywgciwgbiwgcyk7CiAgICAgICAgICAgIGZjbG9zZShmcCk7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgIHByaW50ZigiUGxlYXNlIHByb3ZpZGUgaW5wdXQgZmlsZSBhcyBhcmd1bWVudCIpOwogICAgICAgIHJldHVybiAxOwogICAgfQp9Cg==