forge/sf: const and var working

This commit is contained in:
Helmut Merz 2024-09-17 10:04:27 +02:00
parent 6bf62fa39d
commit 78b7eb0e1b
2 changed files with 18 additions and 7 deletions

View file

@ -148,8 +148,8 @@
#:? #:??
#:ptr #:get #:put
#:in #:next
#:call #:call-if #:call-while #:comp
#:<comp #:reg #:regc #:/> #:val))
#:call #:call-if #:call-while #:val
#:<comp #:reg #:regc #:/>))
(in-package :sf-builtin)
@ -188,7 +188,7 @@
(f:reg 'call #'(lambda () (f:call (popd))))
(f:reg 'call-if #'call-if)
(f:reg 'call-while #'call-while)
(f:reg 'comp #'(lambda () (f:comp-item (popd))))
(f:reg 'val #'(lambda () (f:pushd (list #'f:next (f:popd)))))
(f:reg '<comp #'f:comp-input)
@ -197,6 +197,4 @@
(f:reg '/> #'(lambda () (iter:stop f:*input*)) 'f:comp-word)
(f:reg 'val #'(lambda () (f:pushd (list #'f:next (f:popd)))))
;;;; forge-code word definitions

View file

@ -18,7 +18,8 @@
(progn
;(forge:setup-builtins)
(test-exec)
(test-def)))
(test-def)
(test-val)))
(util:lgi (forge:stack forge:*forge-env*))
(t:show-result)))
@ -39,4 +40,16 @@
(== (forge:popd) 27))
(deftest test-val ()
(forge:exec-list '(<def const val in reg />)))
(forge:exec-list '(<def const val in reg />))
(forge:exec-list '(7 const seven))
(forge:exec-list '(seven square))
(== (forge:popd) 49)
(forge:exec-list '(<def var ptr const />))
(forge:exec-list '(3 var myvar))
(forge:exec-list '(myvar get))
(== (forge:popd) 3)
(forge:exec-list '(42 myvar put))
(forge:exec-list '(myvar get))
(== (forge:popd) 42)
)