provide defc for defining compiler words (def, const, var); clean-up

This commit is contained in:
Helmut Merz 2024-05-30 17:24:41 +02:00
parent 11c7ed9cf1
commit fa086ade6a
2 changed files with 6 additions and 8 deletions

View file

@ -130,8 +130,6 @@
(register 'lit #'lit)
(register 'wrap #'wrap)
(register 'defer #'defer)
(register 'getval #'getval)
(register 'setval #'setval)
(register 'reg #'do-reg)
(register 'regc #'do-regc)
@ -177,7 +175,7 @@
((null item))
(funcall item))
(setf (slot-value *forge-env* 'ip) old-ip)
#+forge-trace (format t " - stack: ~a" (dstack))
#+forge-trace (format t "~% - stack: ~A" (dstack))
(dstack)))
(defun comp (slist)

View file

@ -18,7 +18,6 @@
(forge:setup-builtins)
(test-iseq)
(test-exec)
;(format t "~%data-stack ~a" (dstack))
(test-def)
(test-const)
(test-var)
@ -36,23 +35,24 @@
(== (car (forge:dstack)) 6))
(deftest test-def ()
(forge:exec-str "(comp quote defer reg) quote def regc")
;(forge:exec-str "(dup *) quote square reg")
(forge:exec-str "(comp quote defer regc) quote defc regc")
(forge:exec-str "(comp quote defer reg) defc def")
(forge:exec-str "(dup *) def square")
(forge:exec-str "7 square")
(== (car (forge:dstack)) 49))
(deftest test-const ()
(forge:exec-str "(defer wrap comp quote defer reg) quote const regc")
(forge:exec-str "(defer wrap comp quote defer reg) defc const")
(forge:exec-str "11 const eleven")
(forge:exec-str "eleven square")
(== (car (forge:dstack)) 121))
(deftest test-var ()
(forge:exec-str "(defer wrap defer wrap comp quote defer reg) quote var regc")
(forge:exec-str "(defer wrap defer wrap comp quote defer reg) defc var")
(forge:exec-str "7 var myvar")
(forge:exec-str "myvar get square")
(== (car (forge:dstack)) 49)
(forge:exec-str "8 myvar set")
(forge:exec-str "myvar get square")
(== (car (forge:dstack)) 64))