Below, is a simple example for counting words, lines and characters by using a Flex lexer.
Flex lexer / scanner implementation:
%{ int chars = 0; int words = 0; int lines = 0; %} %% [a-zA-Z]+ { words++; chars += strlen(yytext); } \n { chars++; lines++; } . { chars++; } %%
You can call yylex() to scan input tokens in a simple test program:
int main(void) { yylex(); printf("%8d%8d%8dn", lines, words, chars); return 0; }
You may use also “[:alpha:]” in place of “[a-zA-Z]”.
Thank you!!!
You can use yyleng(); instead of strlen(yytext);