-- Performance test; run with input /usr/dict/words, for example
{
module Main (main) where
}
%wrapper "monad"
words :-
$white+ { skip }
[A-Za-z0-9\'\-]+ { word }
{
word (_,_,_,input) len = return (take len input)
scanner str = runAlex str $ do
let loop i = do tok <- alexMonadScan
if tok == "stopped." || tok == "error."
then return i
else do let i' = i+1 in i' `seq` loop i'
loop 0
alexEOF = return "stopped."
main = do
s <- getContents
print (scanner s)
}