Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 4b4e755bddcf9f0dbb3c67269ba3a76b > files > 33

alex-2.2-1mdv2009.0.i586.rpm

-- 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)
}