From 77f8e6cd2534fb7c63b0021b7adcd1a2b8348402 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Fri, 11 Jul 2014 21:22:32 -0700 Subject: 15 --- mu.arc | 14 ++++++++++---- mu.arc.t | 12 ++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/mu.arc b/mu.arc index 4ed77070..78d2f654 100644 --- a/mu.arc +++ b/mu.arc @@ -8,6 +8,11 @@ (= function* (table))) (clear) +(mac aelse (test else . body) + `(aif ,test + (do ,@body) + ,else)) + (def add-fns (fns) (each (name . body) fns (= function*.name body))) @@ -52,11 +57,12 @@ (do (= result arg) (break)) ; else user-defined function - (let results (run function*.op arg) + (aelse function*.op (prn "no definition for " op) ;? (prn "== " memory*) - (each o oarg -;? (prn o) - (= (memory* o.1) (memory* pop.results.1)))) + (let results (run it arg) + (each o oarg +;? (prn o) + (= (memory* o.1) (memory* pop.results.1))))) ))))) ;? (prn "return " result) )) diff --git a/mu.arc.t b/mu.arc.t index c9808072..f657bf6b 100644 --- a/mu.arc.t +++ b/mu.arc.t @@ -139,3 +139,15 @@ ;? (prn memory*) (if (~iso memory* (obj 1 8 2 3 3 2 4 2)) (prn "F - idiv works")) + +(clear) +(add-fns + '((main + ((integer 1) <- loadi 8) + (jmp (location 3)) + ((integer 2) <- loadi 3) + (reply)))) +(run function*!main) +;? (prn memory*) +(if (~iso memory* (obj 1 8)) + (prn "F - jmp works")) -- cgit 1.4.1-2-gfad0