forge/sf: val (pushing code directly to stack) as basis for const and var
This commit is contained in:
parent
62350964c6
commit
6bf62fa39d
2 changed files with 7 additions and 2 deletions
|
@ -135,7 +135,7 @@
|
||||||
(car (stack *forge-env*)))
|
(car (stack *forge-env*)))
|
||||||
|
|
||||||
(defun next ()
|
(defun next ()
|
||||||
(pushd (iter:next-value *code*)))
|
(pushd (pop *code*)))
|
||||||
|
|
||||||
;;;; builtins
|
;;;; builtins
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@
|
||||||
#:ptr #:get #:put
|
#:ptr #:get #:put
|
||||||
#:in #:next
|
#:in #:next
|
||||||
#:call #:call-if #:call-while #:comp
|
#:call #:call-if #:call-while #:comp
|
||||||
#:<comp #:reg #:regc #:/>))
|
#:<comp #:reg #:regc #:/> #:val))
|
||||||
|
|
||||||
(in-package :sf-builtin)
|
(in-package :sf-builtin)
|
||||||
|
|
||||||
|
@ -197,4 +197,6 @@
|
||||||
|
|
||||||
(f:reg '/> #'(lambda () (iter:stop f:*input*)) 'f:comp-word)
|
(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
|
;;;; forge-code word definitions
|
||||||
|
|
|
@ -37,3 +37,6 @@
|
||||||
(forge:exec-string "<def cube dup dup mul mul />")
|
(forge:exec-string "<def cube dup dup mul mul />")
|
||||||
(forge:exec-list '(3 cube))
|
(forge:exec-list '(3 cube))
|
||||||
(== (forge:popd) 27))
|
(== (forge:popd) 27))
|
||||||
|
|
||||||
|
(deftest test-val ()
|
||||||
|
(forge:exec-list '(<def const val in reg />)))
|
||||||
|
|
Loading…
Add table
Reference in a new issue