%{
#include <stdio.h>
int vow_count = 0, const_count = 0, digit_count = 0;
int space_count = 0, word_count = 0, line_count = 0;
%}
%%
[aeiouAEIOU] { vow_count++; } /* Count vowels */
[b-df-hj-np-tv-zB-DF-HJ-NP-TV-Z] { const_count++; } /* Count consonants */
[0-9] { digit_count++; } /* Count digits */
[ \t]+ { space_count++; } /* Count spaces/tabs */
\n { line_count++; word_count++; } /* Count new lines */
[^ \t\n]+ { word_count++; } /* Count words */
%%
int main()
{
printf("Enter the input text (Ctrl+D or Ctrl+Z to end):\n");
yylex();
printf("\n----- OUTPUT -----\n");
printf("Total vowels = %d\n", vow_count);
printf("Total consonants = %d\n", const_count);
printf("Total digits = %d\n", digit_count);
printf("Total spaces = %d\n", space_count);
printf("Total words = %d\n", word_count);
printf("Total lines = %d\n", line_count);
return 0;
}
int yywrap()
{
return 1;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CmludCB2b3dfY291bnQgPSAwLCBjb25zdF9jb3VudCA9IDAsIGRpZ2l0X2NvdW50ID0gMDsKaW50IHNwYWNlX2NvdW50ID0gMCwgd29yZF9jb3VudCA9IDAsIGxpbmVfY291bnQgPSAwOwolfQoKJSUKClthZWlvdUFFSU9VXSAgICAgICAgICAgICAgIHsgdm93X2NvdW50Kys7IH0gICAgICAgICAgICAgICAgICAgICAvKiBDb3VudCB2b3dlbHMgKi8KW2ItZGYtaGotbnAtdHYtekItREYtSEotTlAtVFYtWl0gIHsgY29uc3RfY291bnQrKzsgfSAgICAgICAgICAgICAvKiBDb3VudCBjb25zb25hbnRzICovClswLTldICAgICAgICAgICAgICAgICAgICAgIHsgZGlnaXRfY291bnQrKzsgfSAgICAgICAgICAgICAgICAgICAgLyogQ291bnQgZGlnaXRzICovClsgXHRdKyAgICAgICAgICAgICAgICAgICAgIHsgc3BhY2VfY291bnQrKzsgfSAgICAgICAgICAgICAgICAgICAgLyogQ291bnQgc3BhY2VzL3RhYnMgKi8KXG4gICAgICAgICAgICAgICAgICAgICAgICAgeyBsaW5lX2NvdW50Kys7IHdvcmRfY291bnQrKzsgfSAgICAgICAvKiBDb3VudCBuZXcgbGluZXMgKi8KW14gXHRcbl0rICAgICAgICAgICAgICAgICAgeyB3b3JkX2NvdW50Kys7IH0gICAgICAgICAgICAgICAgICAgICAvKiBDb3VudCB3b3JkcyAqLwoKJSUKCmludCBtYWluKCkKewogICAgcHJpbnRmKCJFbnRlciB0aGUgaW5wdXQgdGV4dCAoQ3RybCtEIG9yIEN0cmwrWiB0byBlbmQpOlxuIik7CiAgICB5eWxleCgpOwogICAgcHJpbnRmKCJcbi0tLS0tIE9VVFBVVCAtLS0tLVxuIik7CiAgICBwcmludGYoIlRvdGFsIHZvd2VscyAgICAgICA9ICVkXG4iLCB2b3dfY291bnQpOwogICAgcHJpbnRmKCJUb3RhbCBjb25zb25hbnRzICAgPSAlZFxuIiwgY29uc3RfY291bnQpOwogICAgcHJpbnRmKCJUb3RhbCBkaWdpdHMgICAgICAgPSAlZFxuIiwgZGlnaXRfY291bnQpOwogICAgcHJpbnRmKCJUb3RhbCBzcGFjZXMgICAgICAgPSAlZFxuIiwgc3BhY2VfY291bnQpOwogICAgcHJpbnRmKCJUb3RhbCB3b3JkcyAgICAgICAgPSAlZFxuIiwgd29yZF9jb3VudCk7CiAgICBwcmludGYoIlRvdGFsIGxpbmVzICAgICAgICA9ICVkXG4iLCBsaW5lX2NvdW50KTsKICAgIHJldHVybiAwOwp9CgppbnQgeXl3cmFwKCkKewogICAgcmV0dXJuIDE7Cn0K