18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Somewhat faster "wc" tool: match more text with each rule */
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectws    [ \t]
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnonws [^ \t\n]
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectword  {ws}*{nonws}+
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%%
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project	int cc = 0, wc = 0, lc = 0;
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{word}{ws}*	cc += yyleng; ++wc;
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{word}{ws}*\n	cc += yyleng; ++wc; ++lc;
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ws}+		cc += yyleng;
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project\n+		cc += yyleng; lc += yyleng;
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project<<EOF>>		{
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		printf( "%8d %8d %8d\n", lc, wc, cc );
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		yyterminate();
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project		}
21