summaryrefslogtreecommitdiff
path: root/test.hs
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2017-12-09 10:48:58 +0100
committertomsmeding <tom.smeding@gmail.com>2017-12-09 10:48:58 +0100
commit897fb17dd6a045a7056e6d6babbbb24748f698f6 (patch)
tree65f0659483ba2239d07e30b3547379625f5b5cae /test.hs
Initial
Diffstat (limited to 'test.hs')
-rw-r--r--test.hs16
1 files changed, 16 insertions, 0 deletions
diff --git a/test.hs b/test.hs
new file mode 100644
index 0000000..a763524
--- /dev/null
+++ b/test.hs
@@ -0,0 +1,16 @@
+import System.Exit
+
+import Compiler
+import Optimiser
+import Parser
+import VM
+
+main :: IO ()
+main = do
+ -- let Right p = parseProgram "(print (lambda (n) ((lambda (helper) (if (<= n 0) 0 (if (<= n 2) 1 (helper helper 1 1 (- n 2))))) (lambda (recur a b n) (if (<= n 0) b (recur recur b (+ a b) (- n 1)))))))"
+ -- let Right p = parseProgram "(print ((lambda (n) ((lambda (helper) (if (<= n 0) 0 (if (<= n 2) 1 (helper helper 1 1 (- n 2))))) (lambda (recur a b n) (if (<= n 0) b (recur recur b (+ a b) (- n 1)))))) 6))"
+ let Right p = parseProgram "(do (define f (lambda (n) (+ n 1))) (print (f 10)))"
+ prog <- either die return (compileProgram p)
+ let opt = optimise prog
+ print opt
+ vmRun opt