#@title Writing Lex program
%%writefile program.l
%{
#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;
}
I0B0aXRsZSBXcml0aW5nIExleCBwcm9ncmFtCiUld3JpdGVmaWxlIHByb2dyYW0ubAoKJXsKICAgICNpbmNsdWRlIDxzdGRpby5oPgogICAgaW50IGN0Q2hhcj0wOwogICAgaW50IGN0U3BhY2U9MDsKICAgIGludCBjdFdvcmQ9MDsKICAgIGludCBjdExpbmU9MDsKJX0KV09SRCBbXiBcdFxuLFwuOl0rCkVPTCBbXG5dCkJMQU5LIFsgXQolJQoKe1dPUkR9IHtjdFdvcmQrKzsgY3RDaGFyKz15eWxlbmc7fQp7QkxBTkt9IHtjdFNwYWNlKys7fQp7RU9MfSB7Y3RMaW5lKys7fQouIHtjdENoYXIrKzt9CiUlCgp2b2lkIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSl7CiAgICBpZihhcmdjIT0yKXsKICAgICAgICBwcmludGYoIlVzYWdlOlxuXHQuL2Eub3V0IDxGSUxFTkFNRT5cbiIpOwogICAgICAgIGV4aXQoMCk7CiAgICB9CgogICAgeXlpbj1mb3Blbihhcmd2WzFdLCJyIik7CiAgICB5eWxleCgpOwoKICAgIHByaW50ZigiV29yZCBDb3VudDogJWRcbiIsY3RXb3JkKTsKICAgIHByaW50ZigiQ2hhcmFjdGVyIENvdW50OiAlZFxuIixjdENoYXIpOwogICAgcHJpbnRmKCJTcGFjZSBDb3VudDogJWRcbiIsY3RTcGFjZSk7CiAgICBwcmludGYoIkxpbmUgQ291bnQ6ICVkXG4iLGN0TGluZSk7CiAgICBmY2xvc2UoeXlpbik7Cgp9CgppbnQgeXl3cmFwKCl7CiAgICByZXR1cm4gMTsKfQ==