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

View file

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