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
		}