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