From 6bf62fa39d23a4a603bc5054d613c00ad467e2f4 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Tue, 17 Sep 2024 08:45:17 +0200 Subject: [PATCH] forge/sf: val (pushing code directly to stack) as basis for const and var --- forge/sf.lisp | 6 ++++-- test/test-sf.lisp | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/forge/sf.lisp b/forge/sf.lisp index 5ff4de0..3165974 100644 --- a/forge/sf.lisp +++ b/forge/sf.lisp @@ -135,7 +135,7 @@ (car (stack *forge-env*))) (defun next () - (pushd (iter:next-value *code*))) + (pushd (pop *code*))) ;;;; builtins @@ -149,7 +149,7 @@ #:ptr #:get #:put #:in #:next #:call #:call-if #:call-while #:comp - #:)) + #: #:val)) (in-package :sf-builtin) @@ -197,4 +197,6 @@ (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 diff --git a/test/test-sf.lisp b/test/test-sf.lisp index ec0ce5b..760b332 100644 --- a/test/test-sf.lisp +++ b/test/test-sf.lisp @@ -37,3 +37,6 @@ (forge:exec-string "") (forge:exec-list '(3 cube)) (== (forge:popd) 27)) + +(deftest test-val () + (forge:exec-list '()))