From 8fab04b02e55e954a0dc9ca155e7da3188745c49 Mon Sep 17 00:00:00 2001 From: sforman Date: Fri, 11 Aug 2023 10:31:53 -0700 Subject: [PATCH] Evaluate definitions. --- implementations/scheme-chicken/.gitignore | 2 ++ implementations/scheme-chicken/Makefile | 13 +++++++++++++ implementations/scheme-chicken/joy.scm | 5 ++++- 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 implementations/scheme-chicken/.gitignore create mode 100644 implementations/scheme-chicken/Makefile diff --git a/implementations/scheme-chicken/.gitignore b/implementations/scheme-chicken/.gitignore new file mode 100644 index 0000000..fc9e7bf --- /dev/null +++ b/implementations/scheme-chicken/.gitignore @@ -0,0 +1,2 @@ +generate_defs +joy diff --git a/implementations/scheme-chicken/Makefile b/implementations/scheme-chicken/Makefile new file mode 100644 index 0000000..31409bd --- /dev/null +++ b/implementations/scheme-chicken/Makefile @@ -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 + diff --git a/implementations/scheme-chicken/joy.scm b/implementations/scheme-chicken/joy.scm index bc13e34..ad80590 100644 --- a/implementations/scheme-chicken/joy.scm +++ b/implementations/scheme-chicken/joy.scm @@ -18,11 +18,14 @@ (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)) @@ -98,6 +101,6 @@ (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) -- 2.11.0