From fe63d977f65030f6d5171611e3829a67fa317242 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Wed, 18 Sep 2024 16:28:43 +0200 Subject: [PATCH] forge: first (too simple) version of iter:stream-iterator and forge:exec-stream --- forge/forge.lisp | 7 ++++++- test/test-forge.lisp | 4 +++- util/iter.lisp | 15 ++++++++++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/forge/forge.lisp b/forge/forge.lisp index 48281a0..58efe37 100644 --- a/forge/forge.lisp +++ b/forge/forge.lisp @@ -9,7 +9,8 @@ (:export #:forge-env #:vocabulary #:stack #:current-package #:*forge-env* #:*input* #:*code* #:word #:comp-word - #:repl #:exec-list #:exec-string #:exec-input #:comp-input #:call + #:repl #:exec-list #:exec-string #:exec-stream + #:exec-input #:comp-input #:call #:comp-item #:next #:reg #:reg1 #:reg2 #:reg-code #:pushd #:popd #:peekd)) @@ -94,6 +95,10 @@ (let ((*input* (iter:string-iterator s))) (exec-input))) +(defun exec-stream (s) + (let ((*input* (iter:stream-iterator s))) + (exec-input))) + (defun exec-input () (iter:process *input* #'exec-item)) diff --git a/test/test-forge.lisp b/test/test-forge.lisp index 9555df5..98d1e44 100644 --- a/test/test-forge.lisp +++ b/test/test-forge.lisp @@ -31,7 +31,9 @@ (forge:exec-list '(7 square)) (== (forge:popd) 49) (forge:exec-string "8 square") - (== (forge:popd) 64)) + (== (forge:popd) 64) + (forge:exec-stream (make-string-input-stream "12 square")) + (== (forge:popd) 144)) (deftest test-def () (forge:exec-list '( in