1 module Gen 2 3 ( genval 4 , genpid 5 , genenv 6 ) 7 8 where 9 10 import FiniteMap 11 import Ids 12 import IdStack 13 14 15 import FA 16 import FAtypes 17 import FAuseful 18 import FA2Exp 19 20 import Grammar 21 import Gram2FA 22 import Loop 23 import Semantik 24 25 import WrapSubtrans 26 27 --------------------------------------------------------------------- 28 29 genval :: Val (Env (Auto) (Auto)) 30 genval opts env x = case unFIO (comp opts env x) of 31 Right (x1, env1) -> Right (tnfa2exp opts x1, env1) 32 Left msg -> Left msg 33 34 35 -- for parsing 36 genpid :: IdStack 37 genpid = globIS ( inIts ( 38 [ userfun 2 "grammar" -- todo: wrong place 39 , userfun 2 "subtrans" -- todo: wrong place 40 ] 41 ++ 42 [ id | (id, _) <- fids ] 43 )) 44 45 -- for evaluating 46 genenv = listToFM ( 47 [ ( idname id 48 , mkfunction (idname id) 49 (\ opts -> usefulTNFA opts . val opts) -- wrong place? 50 ) 51 | (id, val) <- fids 52 ] 53 ++ 54 [ ("grammar", mkFun gram) 55 , ("subtrans", mkFun subtrans) 56 ] 57 ) 58