simple var implementation working

This commit is contained in:
Helmut Merz 2024-05-30 13:17:31 +02:00
parent c0f51af40d
commit 11c7ed9cf1
2 changed files with 14 additions and 0 deletions

View file

@ -124,10 +124,14 @@
(reg swap (let ((a (popd)) (b (popd))) (pushd a) (pushd b))) (reg swap (let ((a (popd)) (b (popd))) (pushd a) (pushd b)))
(reg ? (format t "~a~%" (popd))) (reg ? (format t "~a~%" (popd)))
(reg ?? (format t "~a~%" (dstack))) (reg ?? (format t "~a~%" (dstack)))
(reg get (pushd (cadr (popd))))
(reg set (setf (cadr (popd)) (popd)))
(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)

View file

@ -21,6 +21,7 @@
;(format t "~%data-stack ~a" (dstack)) ;(format t "~%data-stack ~a" (dstack))
(test-def) (test-def)
(test-const) (test-const)
(test-var)
(t:show-result))) (t:show-result)))
(deftest test-iseq () (deftest test-iseq ()
@ -46,3 +47,12 @@
(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 ()
(forge:exec-str "(defer wrap defer wrap comp quote defer reg) quote var regc")
(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))