%{
#include <stdio.h>
int ctChar=0;
int ctSpace=0;
int ctWord=0;
int ctLine=0;
%}
WORD [^ \t\n,\.:]+
EOL [\n]
BLANK [ ]
%%
{WORD} {ctWord++; ctChar+=yyleng;}
{BLANK} {ctSpace++;}
{EOL} {ctLine++;}
. {ctChar++;}
%%
void main(int argc, char *argv[]){
if(argc!=2){
printf("Usage:\n\t./a.out <FILENAME>\n");
exit(0);
}
yyin=fopen(argv[1],"r");
yylex();
printf("Word Count: %d\n",ctWord);
printf("Character Count: %d\n",ctChar);
printf("Space Count: %d\n",ctSpace);
printf("Line Count: %d\n",ctLine);
fclose(yyin);
}
int yywrap(){
return 1;
}
CiV7CiAgICAjaW5jbHVkZSA8c3RkaW8uaD4KICAgIGludCBjdENoYXI9MDsKICAgIGludCBjdFNwYWNlPTA7CiAgICBpbnQgY3RXb3JkPTA7CiAgICBpbnQgY3RMaW5lPTA7CiV9CldPUkQgW14gXHRcbixcLjpdKwpFT0wgW1xuXQpCTEFOSyBbIF0KJSUKCntXT1JEfSB7Y3RXb3JkKys7IGN0Q2hhcis9eXlsZW5nO30Ke0JMQU5LfSB7Y3RTcGFjZSsrO30Ke0VPTH0ge2N0TGluZSsrO30KLiB7Y3RDaGFyKys7fQolJQoKdm9pZCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pewogICAgaWYoYXJnYyE9Mil7CiAgICAgICAgcHJpbnRmKCJVc2FnZTpcblx0Li9hLm91dCA8RklMRU5BTUU+XG4iKTsKICAgICAgICBleGl0KDApOwogICAgfQoKICAgIHl5aW49Zm9wZW4oYXJndlsxXSwiciIpOwogICAgeXlsZXgoKTsKCiAgICBwcmludGYoIldvcmQgQ291bnQ6ICVkXG4iLGN0V29yZCk7CiAgICBwcmludGYoIkNoYXJhY3RlciBDb3VudDogJWRcbiIsY3RDaGFyKTsKICAgIHByaW50ZigiU3BhY2UgQ291bnQ6ICVkXG4iLGN0U3BhY2UpOwogICAgcHJpbnRmKCJMaW5lIENvdW50OiAlZFxuIixjdExpbmUpOwogICAgZmNsb3NlKHl5aW4pOwoKfQoKaW50IHl5d3JhcCgpewogICAgcmV0dXJuIDE7Cn0=