Blob Blame History Raw
-- 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)
}