From 22c4a046e715f849bf52ad591df8bfda0332f892 Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 26 Mar 2007 21:13:37 +0000 Subject: [PATCH] started eval --- devel/compiler/Eval.hs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 devel/compiler/Eval.hs diff --git a/devel/compiler/Eval.hs b/devel/compiler/Eval.hs new file mode 100644 index 000000000..e62336ede --- /dev/null +++ b/devel/compiler/Eval.hs @@ -0,0 +1,22 @@ +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