aboutsummaryrefslogtreecommitdiffstats
path: root/bf2s.scm
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2024-11-19 09:47:46 -0500
committerGravatar Peter McGoron 2024-11-19 09:47:46 -0500
commit3a716bb7004af068f46b67cfa7b8a033931e151b (patch)
tree5067fea9dae6af0261c7c98dfe079e076611cecc /bf2s.scm
parentbrainfuck->scheme (diff)
debugging
Diffstat (limited to '')
-rw-r--r--bf2s.scm11
1 files changed, 8 insertions, 3 deletions
diff --git a/bf2s.scm b/bf2s.scm
index 60def3e..b865c70 100644
--- a/bf2s.scm
+++ b/bf2s.scm
@@ -44,6 +44,8 @@
((#\,) (compile (cdr lst)
(cons '(vector-set! data dptr
(char->integer (read-char))) ins)))
+ ((#\#) (compile (cdr lst)
+ (cons '(debugger data dptr) ins)))
((#\[) (let ((rest (compile (cdr lst) '())))
(if (not (pair? rest))
(error "unmatched [")
@@ -62,7 +64,7 @@
(else (compile (cdr lst) ins)))))
(define (brainfuck->scheme str)
- `(lambda (data dptr)
+ `(lambda (data dptr debugger)
(,(compile (string->list str) '()))))
(define (brainfuck->scheme-from-file filename)
@@ -74,5 +76,8 @@
str
(loop (string-append str (read-line port)))))))))
-(define (execute scheme)
- ((eval scheme) (make-vector 4096) 0))
+(define (execute scheme len)
+ ((eval scheme) (make-vector len) 0
+ (lambda (data dptr)
+ (display (list data dptr))
+ (newline))))