===== count_char.l ===== %{ #include int line = 0, word = 0, ch = 0; %} %% [a-zA-Z0-9]+ { ch += yyleng; word++; } [ \t]+ { /* skip spaces/tabs */ } \n { line++; } . { ch++; } %% int main(){ yyin = fopen("input1.txt", "r"); yylex(); printf("line=%d\n", line); printf("word=%d\n", word); printf("character=%d\n", ch); return 0; } ===== input1.txt ===== Hello, world! Lex is fun. 1234 are numbers. ===== output.txt ===== line=3 word=8 character=36 ===== run ===== nano count_char.l lex count_char.l gcc lex.yy.c -o count_char -ll ./count_char