%{
int nc=0;
int nw=0;
%}
%%
"if"|"else"|"while"|"do"|"auto"|"double"|"int"|"struct"|"break"|"else"|"long"|"switch"|"case"|"enum"|"register"|"typ>
[!@#$^&()_~'";:] {printf("%s is a SPECIAL CHARACTER\n", yytext);}
[+*/=%-] {printf("%s is an OPERATOR\n", yytext);}
[0-9]* {printf("%s is a CONSTANT\n", yytext);}
[a-zA-Z]* {printf("%s is an IDENTIFIER\n", yytext);}
\"([^"})*\" {printf("%s is STRING LITERAL\n", yytext);}
\n {nl++;nc+=yyleng;}
[^\n" "\t]+ {nw++;nc=nc+yyleng;}
. {nc++;}
%%
int yywrap()
{}
int main(int argc,char* argv[])
{
yyin=fopen(argv[1],"r");
yylex();
printf("\nNo. of lines is %d\n", nl);
printf("\nNo. of words is %d\n", nw);
printf("\nNo. of characters is %d\n", nc);
return 0;
}
JXsKaW50IG5jPTA7CmludCBubD0wOwppbnQgbnc9MDsKJX0KJSUKImlmInwiZWxzZSJ8IndoaWxlInwiZG8ifCJhdXRvInwiZG91YmxlInwiaW50Inwic3RydWN0InwiYnJlYWsifCJlbHNlInwibG9uZyJ8InN3aXRjaCJ8ImNhc2UifCJlbnVtInwicmVnaXN0ZXIifCJ0eXA+ClshQCMkXiYoKV9+JyI7Ol0ge3ByaW50ZigiJXMgaXMgYSBTUEVDSUFMIENIQVJBQ1RFUlxuIiwgeXl0ZXh0KTt9ClsrKi89JS1dIHtwcmludGYoIiVzIGlzIGFuIE9QRVJBVE9SXG4iLCB5eXRleHQpO30KWzAtOV0qIHtwcmludGYoIiVzIGlzIGEgQ09OU1RBTlRcbiIsIHl5dGV4dCk7fQpbYS16QS1aXSoge3ByaW50ZigiJXMgaXMgYW4gSURFTlRJRklFUlxuIiwgeXl0ZXh0KTt9ClwiKFteIn0pKlwiIHtwcmludGYoIiVzIGlzIFNUUklORyBMSVRFUkFMXG4iLCB5eXRleHQpO30KXG4ge25sKys7bmMrPXl5bGVuZzt9ClteXG4iICJcdF0rIHtudysrO25jPW5jK3l5bGVuZzt9Ci4ge25jKys7fQolJQppbnQgeXl3cmFwKCkKe30KaW50IG1haW4oaW50IGFyZ2MsY2hhciogYXJndltdKQp7Cgp5eWluPWZvcGVuKGFyZ3ZbMV0sInIiKTsKeXlsZXgoKTsKcHJpbnRmKCJcbk5vLiBvZiBsaW5lcyBpcyAlZFxuIiwgbmwpOwpwcmludGYoIlxuTm8uIG9mIHdvcmRzIGlzICVkXG4iLCBudyk7CnByaW50ZigiXG5Oby4gb2YgY2hhcmFjdGVycyBpcyAlZFxuIiwgbmMpOwpyZXR1cm4gMDsKfQoK