- if b then execute (SWhile e s) else return ()
-execute (SDecl t i EDefault) = do
- case t of
- TInt -> setVariableValue i (EInt 0)
- TBool -> setVariableValue i (EBool False)
- return ()
-execute (SDecl t i e) = setVariableValue i e >> return ()
+ if b then pushAndPop (execute s) >> execute (SWhile e s) else return ()
+execute (SDeclD t i) = execute (SDecl t i $ case t of
+ TInt -> EInt 0
+ TBool -> EBool False
+ )
+execute (SDecl t i e) =do
+ e' <- eval e
+ (m:ms) <- get
+ put $ (insert i e' m):ms