%{
#include<stdio.h>
int lines=0, words=0, sl=0, cl=0, num=0, spl_chr=0, tot=0, in_word=0;
%}
%%
\n { lines++; in_word = 0; }
[ \t]+ { in_word = 0; }
[a-z] { sl++; if (!in_word) { words++; in_word = 1; } }
[A-Z] { cl++; if (!in_word) { words++; in_word = 1; } }
[0-9] { num++; if (!in_word) { words++; in_word = 1; } }
. { spl_chr++; if (!in_word) { words++; in_word = 1; } }
<<EOF>> { return 0; }
%%
main()
{
yyin = fopen("ex.txt", "r");
yylex();
tot = sl + cl + num + spl_chr;
printf("total no. of symbols : %d\n", tot);
printf("no. of Lines: %d\n", lines);
printf("no. of words: %d\n", words);
printf("no. of lower case letters: %d\n", sl);
printf("no. of upper case letters: %d\n", cl);
printf("no. of special characters: %d\n", spl_chr);
printf("no. of digits: %d\n", num);
}
int yywrap()
{
return 1;
}
JXsKI2luY2x1ZGU8c3RkaW8uaD4KaW50IGxpbmVzPTAsIHdvcmRzPTAsIHNsPTAsIGNsPTAsIG51bT0wLCBzcGxfY2hyPTAsIHRvdD0wLCBpbl93b3JkPTA7CiV9CgolJQpcbiAgICAgICAgICAgICAgICAgIHsgbGluZXMrKzsgaW5fd29yZCA9IDA7IH0KWyBcdF0rICAgICAgICAgICAgICB7IGluX3dvcmQgPSAwOyB9ClthLXpdICAgICAgICAgICAgICAgeyBzbCsrOyBpZiAoIWluX3dvcmQpIHsgd29yZHMrKzsgaW5fd29yZCA9IDE7IH0gfQpbQS1aXSAgICAgICAgICAgICAgIHsgY2wrKzsgaWYgKCFpbl93b3JkKSB7IHdvcmRzKys7IGluX3dvcmQgPSAxOyB9IH0KWzAtOV0gICAgICAgICAgICAgICB7IG51bSsrOyBpZiAoIWluX3dvcmQpIHsgd29yZHMrKzsgaW5fd29yZCA9IDE7IH0gfQouICAgICAgICAgICAgICAgICAgIHsgc3BsX2NocisrOyBpZiAoIWluX3dvcmQpIHsgd29yZHMrKzsgaW5fd29yZCA9IDE7IH0gfQo8PEVPRj4+ICAgICAgICAgICAgIHsgcmV0dXJuIDA7IH0KJSUKCm1haW4oKQp7CiAgICB5eWluID0gZm9wZW4oImV4LnR4dCIsICJyIik7CiAgICB5eWxleCgpOwogICAgdG90ID0gc2wgKyBjbCArIG51bSArIHNwbF9jaHI7CiAgICBwcmludGYoInRvdGFsIG5vLiBvZiBzeW1ib2xzIDogJWRcbiIsIHRvdCk7CiAgICBwcmludGYoIm5vLiBvZiBMaW5lczogJWRcbiIsIGxpbmVzKTsKICAgIHByaW50Zigibm8uIG9mIHdvcmRzOiAlZFxuIiwgd29yZHMpOwogICAgcHJpbnRmKCJuby4gb2YgbG93ZXIgY2FzZSBsZXR0ZXJzOiAlZFxuIiwgc2wpOwogICAgcHJpbnRmKCJuby4gb2YgdXBwZXIgY2FzZSBsZXR0ZXJzOiAlZFxuIiwgY2wpOwogICAgcHJpbnRmKCJuby4gb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzOiAlZFxuIiwgc3BsX2Nocik7CiAgICBwcmludGYoIm5vLiBvZiBkaWdpdHM6ICVkXG4iLCBudW0pOwp9CgppbnQgeXl3cmFwKCkKewogICAgcmV0dXJuIDE7Cn0=