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