]> ruin.nu Git - proglang.git/blobdiff - Interpret.hs
removed NoType and EDefault and added assert
[proglang.git] / Interpret.hs
index 9e4dcff34541b1f180b73b3c12dc15cbcfb3e642..5a792b9b2bbbe27be026d99096d17df1ef5cffa2 100644 (file)
@@ -23,7 +23,6 @@ eval (EBool b) = return (VBool b)
 eval (EInt n) = return (VInt n)
 eval (EVar i) = getVariableValue i
 eval (EAss i e) = setVariableValue i e 
-eval EDefault = error "EDefault called from an illegal place"
 eval (BiOpExp e o e') = do
        v <- eval e
        v'<- eval e'
@@ -78,11 +77,6 @@ findVariable i (m:ms) = if member i m then lookup i m else findVariable i ms
 
 --setVariableValue :: (MonadState Variables m) => Ident -> Exp -> m Value 
 --setVariableValue :: (MonadState Variables m) => Ident -> Exp -> m Value 
-addVariable :: Ident -> Exp -> StateT Variables IO ()
-addVariable i e = do
-       e' <- eval e
-       (m:ms) <- get
-       put $ (insert i e' m):ms
 
 setVariableValue :: Ident -> Exp -> StateT Variables IO Value
 setVariableValue i e = do
@@ -113,9 +107,7 @@ execute (SBlock ss) = do
 execute (SWhile e s) = do
        (VBool b) <- eval e
        if b then execute s >> execute (SWhile e s) else return ()
-execute (SDecl t i EDefault) = do
-       case t of
-               TInt -> addVariable i (EInt 0)
-               TBool -> addVariable i (EBool False)
-       return ()
-execute (SDecl t i e) = addVariable i e >> return ()
+execute (SDecl t i e) =do
+       e' <- eval e
+       (m:ms) <- get
+       put $ (insert i e' m):ms