summaryrefslogtreecommitdiff
path: root/examples/fastwc/wc4.l
diff options
context:
space:
mode:
authorManoj Srivastava <srivasta@golden-gryphon.com>2003-12-03 22:33:17 -0800
committerManoj Srivastava <srivasta@golden-gryphon.com>2003-12-03 22:33:17 -0800
commitc2b22e08bd48278f2cf125f054c9f6286e345ff0 (patch)
tree3c0ab722c83ef33913ad293af7d56ce2c4e1fcc9 /examples/fastwc/wc4.l
parentedc848712307fe5c881364e12e520e9fe58d9969 (diff)
Imported Upstream version 2.5.31
Diffstat (limited to 'examples/fastwc/wc4.l')
-rw-r--r--examples/fastwc/wc4.l28
1 files changed, 28 insertions, 0 deletions
diff --git a/examples/fastwc/wc4.l b/examples/fastwc/wc4.l
new file mode 100644
index 0000000..90c36ee
--- /dev/null
+++ b/examples/fastwc/wc4.l
@@ -0,0 +1,28 @@
+/* Fastest version of wc: add rules to pick up newlines, too */
+
+ws [ \t]
+nonws [^ \t\n]
+word {ws}*{nonws}+
+words {word}{ws}+
+
+%option main noyywrap
+%%
+ int cc = 0, wc = 0, lc = 0;
+
+{word}{ws}* ++wc; cc += yyleng;
+{word}{ws}*\n ++wc; cc += yyleng; ++lc;
+{words}{word}{ws}* wc += 2; cc += yyleng;
+{words}{word}{ws}*\n wc += 2; cc += yyleng; ++lc;
+{words}{2}{word}{ws}* wc += 3; cc += yyleng;
+{words}{2}{word}{ws}*\n wc += 3; cc += yyleng; ++lc;
+{words}{3}{word}{ws}* wc += 4; cc += yyleng;
+{words}{3}{word}{ws}*\n wc += 4; cc += yyleng; ++lc;
+
+{ws}+ cc += yyleng;
+
+\n+ cc += yyleng; lc += yyleng;
+
+<<EOF>> {
+ printf( "%8d %8d %8d\n", lc, wc, cc );
+ yyterminate();
+ }