start with sem
[cc1516.git] / sem.icl
diff --git a/sem.icl b/sem.icl
index 2003038..02d0117 100644 (file)
--- a/sem.icl
+++ b/sem.icl
@@ -1,6 +1,27 @@
 implementation module sem
 
+import qualified Data.Map as Map
+from Data.Func import $
+import Data.Either
+import Control.Monad.State
 import StdMisc
 
-semanticAnalysis :: AST -> Either Error AST
-semanticAnalysis a = 
+import AST
+from parse import :: ParserOutput
+from yard import :: Error
+
+:: Gamma :== 'Map'.Map String Type
+:: Env a :== State Gamma a
+
+sem :: ParserOutput -> SemOutput
+sem (Left p) = Left p
+sem (Right (AST vd fd)) = Right $ AST vd fd
+//     foldM semVarDecl vd 
+//     >>= \gamma ->foldM typecheck gamma fd
+
+semVarDecl :: VarDecl -> Env VarDecl
+semVarDecl (Vardecl pos type ident expr) = undef
+       
+
+
+