forge: add exec-str function

This commit is contained in:
Helmut Merz 2024-04-24 14:36:09 +02:00
parent dff1de06a8
commit d3057ff9d7
3 changed files with 11 additions and 2 deletions

View file

@ -4,7 +4,7 @@
(defpackage :scopes/forge (defpackage :scopes/forge
(:use :common-lisp) (:use :common-lisp)
(:export #:forge-env #:data-stack #:exec)) (:export #:forge-env #:data-stack #:exec #:exec-str))
(in-package :scopes/forge) (in-package :scopes/forge)
@ -20,6 +20,10 @@
(defun forge-env () (defun forge-env ()
(make-instance 'forge-env)) (make-instance 'forge-env))
(defun exec-str (fe s)
(exec fe (read-from-string
(concatenate 'string "(" s ")"))))
(defun exec (fe code) (defun exec (fe code)
(dolist (x code) (dolist (x code)
(if (symbolp x) (if (symbolp x)

View file

@ -11,7 +11,7 @@
(:file "testing") (:file "testing")
(:file "test/test-forge" :depends-on ("testing" "forge/forge"))) (:file "test/test-forge" :depends-on ("testing" "forge/forge")))
:long-description "scopes: generic data processingg facilities") :long-description "scopes: generic data processing facilities")
;;#.(uiop:read-file-string ;;#.(uiop:read-file-string
;; (uiop:subpathname *load-pathname* "README.md"))) ;; (uiop:subpathname *load-pathname* "README.md")))
;;:in-order-to ((test-op (test-op "scopes/test")))) ;;:in-order-to ((test-op (test-op "scopes/test"))))

View file

@ -16,6 +16,7 @@
(test-exec tst fe) (test-exec tst fe)
;(format t "~%data-stack ~a" (data-stack fe)) ;(format t "~%data-stack ~a" (data-stack fe))
(test-def tst fe) (test-def tst fe)
(test-exec-str tst fe)
(sct:result tst))) (sct:result tst)))
(defun test-exec (tst fe) (defun test-exec (tst fe)
@ -27,3 +28,7 @@
(scf:exec fe '(7 square)) (scf:exec fe '(7 square))
(sct:assert-eq tst (car (scf:data-stack fe)) 49)) (sct:assert-eq tst (car (scf:data-stack fe)) 49))
(defun test-exec-str (tst fe)
(scf:exec-str fe "16 square")
(sct:assert-eq tst (car (scf:data-stack fe)) 256))