diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2014-07-11 21:22:32 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2014-07-11 21:22:32 -0700 |
commit | 77f8e6cd2534fb7c63b0021b7adcd1a2b8348402 (patch) | |
tree | 2e1436a88c6d3306aa585ec7a87dd3b558f6abef | |
parent | ff8b3afd095b9341dec55f7e54c2b0ae9a989931 (diff) | |
download | mu-77f8e6cd2534fb7c63b0021b7adcd1a2b8348402.tar.gz |
15
-rw-r--r-- | mu.arc | 14 | ||||
-rw-r--r-- | 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")) |