-all:
- happy -gca -idebug Parsyntax.y
- alex -g Lexsyntax.x
+all: Docsyntax.dvi Testsyntax Typechecker
+
+Docsyntax.dvi: Docsyntax.tex
latex Docsyntax.tex; dvips Docsyntax.dvi -o Docsyntax.ps
+
+Testsyntax: Testsyntax.hs Parsyntax.hs Lexsyntax.hs Abssyntax.hs
ghc --make Testsyntax.hs -o Testsyntax
+
+Typechecker: Typechecker.hs Typecheck.hs Parsyntax.hs Lexsyntax.hs Abssyntax.hs
ghc -fglasgow-exts --make Typechecker.hs -o Typechecker
+
+Parsyntax.hs: Parsyntax.y
+ happy -gca -idebug Parsyntax.y
+
+Lexsyntax.hs: Lexsyntax.x
+ alex -g Lexsyntax.x
+
clean:
-rm -f *.log *.aux *.hi *.o *.dvi
-rm -f Docsyntax.ps
import Data.Map as Map
import Prelude hiding (lookup)
-
type Types = Map Ident Type
inList :: Eq a => a -> [a] -> Bool
TInt <- typeCheckExp e
return TInt
-
typeCheckVar :: (MonadState Types m) => Ident -> m Type
typeCheckVar i = do
e <- get
typeCheckStm (SPrint e) = do
typeCheckExp e
return NoType
-