%{
#include <stdio.h>
int kw
=0, id
=0, num
=0, op=0, punc
=0;%}
%%
int
|float|char
|if
|else
|while
|for
|return
{ printf
("KEYWORD
: %s\n", yytext); kw++; }
[a-zA-Z_][a-zA-Z0-9_]* { printf("IDENTIFIER : %s\n", yytext); id++; }
[0-9]+ { printf
("
NUMBER : %s\n", yytext); num++; }
==|<=|>=|!=|\+|-|\*|/|=|<|> { printf("OPERATOR : %s\n", yytext); op++; }
[;,\(\)\{\}] { printf("PUNCTUATION : %s\n", yytext); punc++; }
[ \t\n]+ ;
. { printf("LEXICAL ERROR : Invalid symbol %s\n", yytext); }
%%
int main()
{
yylex();
printf("\nFINAL COUNT\n");
printf("KEYWORD : %d\n", kw);
printf("IDENTIFIER : %d\n", id);
printf("OPERATOR : %d\n", op);
printf("PUNCTUATION : %d\n", punc);
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQga3c9MCwgaWQ9MCwgbnVtPTAsIG9wPTAsIHB1bmM9MDsKJX0KCiUlCmludHxmbG9hdHxjaGFyfGlmfGVsc2V8d2hpbGV8Zm9yfHJldHVybiAgIHsgcHJpbnRmKCJLRVlXT1JEIDogJXNcbiIsIHl5dGV4dCk7IGt3Kys7IH0KClthLXpBLVpfXVthLXpBLVowLTlfXSogICB7IHByaW50ZigiSURFTlRJRklFUiA6ICVzXG4iLCB5eXRleHQpOyBpZCsrOyB9CgpbMC05XSsgICB7IHByaW50ZigiTlVNQkVSIDogJXNcbiIsIHl5dGV4dCk7IG51bSsrOyB9Cgo9PXw8PXw+PXwhPXxcK3wtfFwqfC98PXw8fD4gICB7IHByaW50ZigiT1BFUkFUT1IgOiAlc1xuIiwgeXl0ZXh0KTsgb3ArKzsgfQoKWzssXChcKVx7XH1dICAgeyBwcmludGYoIlBVTkNUVUFUSU9OIDogJXNcbiIsIHl5dGV4dCk7IHB1bmMrKzsgfQoKWyBcdFxuXSsgICA7CgouICAgeyBwcmludGYoIkxFWElDQUwgRVJST1IgOiBJbnZhbGlkIHN5bWJvbCAlc1xuIiwgeXl0ZXh0KTsgfQolJQoKaW50IG1haW4oKQp7CiAgICB5eWxleCgpOwogICAgcHJpbnRmKCJcbkZJTkFMIENPVU5UXG4iKTsKICAgIHByaW50ZigiS0VZV09SRCA6ICVkXG4iLCBrdyk7CiAgICBwcmludGYoIklERU5USUZJRVIgOiAlZFxuIiwgaWQpOwogICAgcHJpbnRmKCJOVU1CRVIgOiAlZFxuIiwgbnVtKTsKICAgIHByaW50ZigiT1BFUkFUT1IgOiAlZFxuIiwgb3ApOwogICAgcHJpbnRmKCJQVU5DVFVBVElPTiA6ICVkXG4iLCBwdW5jKTsKICAgIHJldHVybiAwOwp9Cg==