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]”.