OSDN Git Service

Evaluate definitions.
authorsforman <sforman@hushmail.com>
Fri, 11 Aug 2023 17:31:53 +0000 (10:31 -0700)
committersforman <sforman@hushmail.com>
Fri, 11 Aug 2023 17:31:53 +0000 (10:31 -0700)
implementations/scheme-chicken/.gitignore [new file with mode: 0644]
implementations/scheme-chicken/Makefile [new file with mode: 0644]
implementations/scheme-chicken/joy.scm

diff --git a/implementations/scheme-chicken/.gitignore b/implementations/scheme-chicken/.gitignore
new file mode 100644 (file)
index 0000000..fc9e7bf
--- /dev/null
@@ -0,0 +1,2 @@
+generate_defs
+joy
diff --git a/implementations/scheme-chicken/Makefile b/implementations/scheme-chicken/Makefile
new file mode 100644 (file)
index 0000000..31409bd
--- /dev/null
@@ -0,0 +1,13 @@
+
+joy: joy.scm defs.scm
+       csc joy.scm
+
+generate_defs: generate_defs.scm
+       csc generate_defs.scm
+
+defs.scm: ../defs.txt generate_defs
+       ./generate_defs
+
+clean:
+       rm generate_defs joy
+
index bc13e34..ad80590 100644 (file)
   (cond
     ((is-it? "+") (values (joy-add stack) expression dict))
     ((is-it? "-") (values (joy-sub stack) expression dict))
+    ((is-it? "mul") (values (joy-mul stack) expression dict))
     ((is-it? "dup") (values (joy-dup stack) expression dict))
+    ((hash-table-exists? dict symbol) (values stack (append (hash-table-ref dict symbol) expression) dict))
     (else (values (cons symbol stack) expression dict))))
 
 (define (joy-add stack) (cons (+ (cadr stack) (car stack)) (cddr stack)))
 (define (joy-sub stack) (cons (- (cadr stack) (car stack)) (cddr stack)))
+(define (joy-mul stack) (cons (* (cadr stack) (car stack)) (cddr stack)))
 (define (joy-dup stack) (cons (car stack) stack))
 
 
     (hash-table-set! dict (car def_list) (cdr def_list))))
 
 
-(display (doit "ab  cd [[  ]] 23 4 - dup - [true] false"))
+(display (doit "ab  cd [[  ]] 23 4 - dup - [true] false 23 sqr"))
 (newline)