]> ruin.nu Git - proglang.git/blob - Typecheck.hs
streamlining the abstract syntax
[proglang.git] / Typecheck.hs
1 module Typecheck where 
2
3 import Abssyntax
4
5 typeCheckExp :: Exp -> Maybe Type
6 BExp e o e' = do
7         TInt <- typeCheck e
8         TInt <- typeCheck e'
9         return TBool
10 OpExp e o e' = do
11         TInt <- typeCheck e
12         TInt <- typeCheck e'
13         return TInt
14
15 typeCheckStm :: Stm -> Maybe Type
16 SNoop = return NoType
17 SExp e = typeCheckExp e
18 SBlock ss = do 
19         mapM typeCheckStm ss
20         return NoType
21 SIf e s s' = do
22         TBool <- typeCheckExp e
23         NoType <- typeCheckStm s
24         NoType <- typeCheckStm s
25         return NoType
26 SWhile e s = do
27         TBool <- typeCheckExp e
28         NoType <- typeCheckStm s
29