%{
#include <stdio.h>
#include <string.h>
int word_count = 0;
int punct_count = 0;
%}
%%
[ \t\n]+ ; /* ignore whitespace */
"(" { printf("LPAREN : %s\n", yytext); punct_count++; }
")" { printf("RPAREN : %s\n", yytext); punct_count++; }
"?" { printf("QUESTION : %s\n", yytext); punct_count++; }
"." { printf("PERIOD : %s\n", yytext); punct_count++; }
[0-9]+ { printf
("
NUMBER : %s\n", yytext); }
[[:alpha:]]+ {
printf("WORD : %s\n", yytext);
word_count++;
}
/* Anything else */
. ;
%%
int main(void) {
yylex();
printf("Total words: %d\n", word_count);
printf("Total punctuation: %d\n", punct_count);
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCmludCB3b3JkX2NvdW50ID0gMDsKaW50IHB1bmN0X2NvdW50ID0gMDsKJX0KCiUlClsgXHRcbl0rICAgICAgICAgICAgICAgIDsgICAvKiBpZ25vcmUgd2hpdGVzcGFjZSAqLwoKIigiICAgICAgICAgICAgICAgICAgICAgeyBwcmludGYoIkxQQVJFTiA6ICVzXG4iLCB5eXRleHQpOyBwdW5jdF9jb3VudCsrOyB9CiIpIiAgICAgICAgICAgICAgICAgICAgIHsgcHJpbnRmKCJSUEFSRU4gOiAlc1xuIiwgeXl0ZXh0KTsgcHVuY3RfY291bnQrKzsgfQoiPyIgICAgICAgICAgICAgICAgICAgICB7IHByaW50ZigiUVVFU1RJT04gOiAlc1xuIiwgeXl0ZXh0KTsgcHVuY3RfY291bnQrKzsgfQoiLiIgICAgICAgICAgICAgICAgICAgICB7IHByaW50ZigiUEVSSU9EIDogJXNcbiIsIHl5dGV4dCk7IHB1bmN0X2NvdW50Kys7IH0KClswLTldKyAgICAgICAgICAgICAgICAgIHsgcHJpbnRmKCJOVU1CRVIgOiAlc1xuIiwgeXl0ZXh0KTsgfQoKW1s6YWxwaGE6XV0rICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiV09SRCA6ICVzXG4iLCB5eXRleHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRfY291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKLyogQW55dGhpbmcgZWxzZSAqLwouICAgICAgICAgICAgICAgICAgICAgICA7CiUlCgppbnQgbWFpbih2b2lkKSB7CiAgICB5eWxleCgpOwogICAgcHJpbnRmKCJUb3RhbCB3b3JkczogJWRcbiIsIHdvcmRfY291bnQpOwogICAgcHJpbnRmKCJUb3RhbCBwdW5jdHVhdGlvbjogJWRcbiIsIHB1bmN0X2NvdW50KTsKICAgIHJldHVybiAwOwp9Cg==