Sophie

Sophie

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

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

{
module Main (main) where
}

%wrapper "gscan"

state :-

  $white+	{ skip }
  \{ [^\}]* \}  { code }
  [A-Za-z]+	{ ide }

{
code _ _ inp len cont (sc,frags) = cont (sc,frag:frags)
	where
	frag = take (len-4) (drop 2 inp)

ide _ _ inp len cont st = Ide (take len inp):cont st

skip _ _ inp len cont st = cont st

data Token = Ide String | Eof String | Err 	deriving Show

stop_act _ _ "" (_,frags) = [Eof (unlines(reverse frags))]
stop_act _ _ _ _ = [Err]

tokens:: String -> [Token]
tokens inp = alexGScan stop_act [] inp

main:: IO ()
main = interact (show.tokens)
}