From 206689c943ba93ad48ce2b41166ca1902ed920a9 Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Thu, 21 Nov 2019 23:23:23 +0100 Subject: cons, cond, exit --- Compiler.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'Compiler.hs') diff --git a/Compiler.hs b/Compiler.hs index b7f5639..6224ee0 100644 --- a/Compiler.hs +++ b/Compiler.hs @@ -87,7 +87,7 @@ newtype CM a = CM {unCM :: StateT CompState (Except String) a} builtinSet :: Set.Set Name builtinSet = Set.fromList [ "+", "-", "*", "/", "mod", "<=", "=", "print", - "list", "car", "cdr", "null?", + "list", "cons", "car", "cdr", "null?", "sys-open-file", "sys-close-file", "sys-get-char", "sys-put-string", "sys-flush", "sys-stdin", "sys-stdout", "sys-stderr", "length", "substr", "ord", "chr", "concat"] @@ -220,6 +220,9 @@ genTValue (TVList [TVName "if" _, cond, val1, val2]) nextnext = do return resref genTValue (TVList (TVName "if" _ : _)) _ = throwError "Invalid 'if' syntax" +genTValue (TVList [TVName "exit" _]) _ = do + setTerm IExit + return RNone genTValue (TVList (funcexpr : args)) nextnext = do refs <- forM args $ \value -> do bnext <- newBlock -- cgit v1.2.3-54-g00ecf