| Line |   | 
|---|
| 1 | /* Somewhat faster still: potentially match a lot of text with each rule */
 | 
|---|
| 2 | 
 | 
|---|
| 3 | ws    [ \t]
 | 
|---|
| 4 | nonws [^ \t\n]
 | 
|---|
| 5 | word  {ws}*{nonws}+
 | 
|---|
| 6 | words {word}{ws}+
 | 
|---|
| 7 | 
 | 
|---|
| 8 | %option main noyywrap
 | 
|---|
| 9 | %%
 | 
|---|
| 10 |         int cc = 0, wc = 0, lc = 0;
 | 
|---|
| 11 | 
 | 
|---|
| 12 | {word}{ws}*             cc += yyleng; ++wc;
 | 
|---|
| 13 | {word}{ws}*\n           cc += yyleng; ++wc; ++lc;
 | 
|---|
| 14 | {words}{word}{ws}*      cc += yyleng; wc += 2;
 | 
|---|
| 15 | {words}{2}{word}{ws}*   cc += yyleng; wc += 3;
 | 
|---|
| 16 | {words}{3}{word}{ws}*   cc += yyleng; wc += 4;
 | 
|---|
| 17 | 
 | 
|---|
| 18 | {ws}+                   cc += yyleng;
 | 
|---|
| 19 | 
 | 
|---|
| 20 | \n+                     cc += yyleng; lc += yyleng;
 | 
|---|
| 21 | 
 | 
|---|
| 22 | <<EOF>>         {
 | 
|---|
| 23 |                 printf( "%8d %8d %8d\n", lc, wc, cc );
 | 
|---|
| 24 |                 yyterminate();
 | 
|---|
| 25 |                 }
 | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.