forked from GitHub/gf-core
23 lines
399 B
Haskell
23 lines
399 B
Haskell
module Eval where
|
|
|
|
import AbsSrc
|
|
import AbsTgt
|
|
|
|
import qualified Data.Map as M
|
|
|
|
eval :: Env -> Exp -> Val
|
|
eval env e = case e of
|
|
ECon c -> look c
|
|
EStr s -> VTok s
|
|
ECat x y -> VCat (ev x) (ev y)
|
|
where
|
|
look = lookCons env
|
|
ev = eval env
|
|
|
|
data Env = Env {
|
|
constants :: M.Map Ident Val
|
|
}
|
|
|
|
lookCons :: Env -> Ident -> Val
|
|
lookCons env c = maybe undefined id $ M.lookup c $ constants env
|