Blame examples/fastwc/wc5.l
|
Packit |
f00812 |
/* Oops; slight change from wc3.l introduces backtracking */
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
ws [ \t]
|
|
Packit |
f00812 |
nonws [^ \t\n]
|
|
Packit |
f00812 |
word {ws}*{nonws}+
|
|
Packit |
f00812 |
words {word}{ws}+
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
%option main noyywrap
|
|
Packit |
f00812 |
%%
|
|
Packit |
f00812 |
int cc = 0, wc = 0, lc = 0;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
{word}{ws}* cc += yyleng; ++wc;
|
|
Packit |
f00812 |
{word}{ws}*\n cc += yyleng; ++wc; ++lc;
|
|
Packit |
f00812 |
{words}{word} cc += yyleng; wc += 2; /* oops */
|
|
Packit |
f00812 |
{words}{2}{word}{ws}* cc += yyleng; wc += 3;
|
|
Packit |
f00812 |
{words}{3}{word}{ws}* cc += yyleng; wc += 4;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
{ws}+ cc += yyleng;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
\n+ cc += yyleng; lc += yyleng;
|
|
Packit |
f00812 |
|
|
Packit |
f00812 |
<<EOF>> {
|
|
Packit |
f00812 |
printf( "%8d %8d %8d\n", lc, wc, cc );
|
|
Packit |
f00812 |
yyterminate();
|
|
Packit |
f00812 |
}
|