From 922a47f20e621224897ddf2495197e98c62acdf4 Mon Sep 17 00:00:00 2001 From: Felix Martin Date: Wed, 21 Apr 2021 09:12:05 -0400 Subject: [PATCH] All files that start with sicp- are official SICP code --- ex-5_31-xx.scm => ex-5_31-38.scm | 28 +------------------ ex-5_39-xx.scm | 17 +++++++++++ misc/{ch5-compiler.scm => sicp-compiler.scm} | 2 +- ...-compiler.scm => sicp-eceval-compiler.scm} | 0 misc/sicp-eceval-support.scm | 2 +- misc/{ch5-syntax.scm => sicp-syntax.scm} | 0 util.scm | 23 +++++++++++++++ 7 files changed, 43 insertions(+), 29 deletions(-) rename ex-5_31-xx.scm => ex-5_31-38.scm (94%) create mode 100644 ex-5_39-xx.scm rename misc/{ch5-compiler.scm => sicp-compiler.scm} (99%) rename misc/{ch5-eceval-compiler.scm => sicp-eceval-compiler.scm} (100%) rename misc/{ch5-syntax.scm => sicp-syntax.scm} (100%) diff --git a/ex-5_31-xx.scm b/ex-5_31-38.scm similarity index 94% rename from ex-5_31-xx.scm rename to ex-5_31-38.scm index 6441cde..7625426 100644 --- a/ex-5_31-xx.scm +++ b/ex-5_31-38.scm @@ -1,5 +1,5 @@ (load "util.scm") -(load "misc/ch5-compiler.scm") +(load "misc/sicp-compiler.scm") (display "\nex-5.31 - save-and-restore-for-apply\n") @@ -65,29 +65,6 @@ ev-appl-did-operator-no-restore (display "\nex-5.33 - compare-factorial-definitions\n") -(define (compile-to-file code target linkage file-name) - (set! label-counter 0) - (define (write-list-to-port xs port) - (if (null? xs) - '() - (begin - (display (car xs) port) - (display "\n" port) - (write-list-to-port (cdr xs) port)))) - (if #t ; #t means write to file; #f means don't write to file - (let* ((compile-result (compile code target linkage)) - (assembly-insts (statements compile-result)) - (port (open-output-file file-name))) - (write-list-to-port assembly-insts port) - (display "[") - (display file-name) - (display "]\n") - (close-output-port port)) - (begin - (display "[") - (display file-name) - (display "]\n")))) - ; Uncomment the following lines to write the assembly code for the to methods ; into files. @@ -446,6 +423,3 @@ ev-appl-did-operator-no-restore (display "[answered]\n") -(display "\nex-5.39\n") - -(display "\nex-5.40\n") diff --git a/ex-5_39-xx.scm b/ex-5_39-xx.scm new file mode 100644 index 0000000..e38c699 --- /dev/null +++ b/ex-5_39-xx.scm @@ -0,0 +1,17 @@ +(load "util.scm") +(load "misc/sicp-compiler.scm") + +(display "\nex-5.39\n") + +(let ((x 3) (y 4)) + (lambda (a b c d e) + (let ((y (* a b x)) + (z (+ c d x))) + (* x y z)))) + +(display "\nex-5.40\n") + + +; (display "\nex-5.41\n") +; (display "\nex-5.42\n") + diff --git a/misc/ch5-compiler.scm b/misc/sicp-compiler.scm similarity index 99% rename from misc/ch5-compiler.scm rename to misc/sicp-compiler.scm index d2dd2c7..71d3602 100644 --- a/misc/ch5-compiler.scm +++ b/misc/sicp-compiler.scm @@ -12,7 +12,7 @@ ;;;;Then you can compile Scheme programs as shown in section 5.5.5 ;;**implementation-dependent loading of syntax procedures -(load "misc/ch5-syntax.scm") ;section 4.1.2 syntax procedures +(load "misc/sicp-syntax.scm") ;section 4.1.2 syntax procedures ;;;SECTION 5.5.1 diff --git a/misc/ch5-eceval-compiler.scm b/misc/sicp-eceval-compiler.scm similarity index 100% rename from misc/ch5-eceval-compiler.scm rename to misc/sicp-eceval-compiler.scm diff --git a/misc/sicp-eceval-support.scm b/misc/sicp-eceval-support.scm index c849050..e5b6c68 100644 --- a/misc/sicp-eceval-support.scm +++ b/misc/sicp-eceval-support.scm @@ -3,7 +3,7 @@ ;;;;FIRST A LOT FROM 4.1.2-4.1.4 -;(load "ch5-syntax.scm"); ;section 4.1.2 syntax procedures +;(load "sicp-syntax.scm"); ;section 4.1.2 syntax procedures (load "misc/sicp-eceval-syntax.scm") ;section 4.1.2 syntax procedures (load "misc/sicp-leval.scm") ; for lazy evaluation in eceval diff --git a/misc/ch5-syntax.scm b/misc/sicp-syntax.scm similarity index 100% rename from misc/ch5-syntax.scm rename to misc/sicp-syntax.scm diff --git a/util.scm b/util.scm index fbbd6f1..62c4c64 100644 --- a/util.scm +++ b/util.scm @@ -129,4 +129,27 @@ (define integers (cons-stream 1 (add-streams ones integers))) +(define (compile-to-file code target linkage file-name) + (set! label-counter 0) + (define (write-list-to-port xs port) + (if (null? xs) + '() + (begin + (display (car xs) port) + (display "\n" port) + (write-list-to-port (cdr xs) port)))) + (if #f ; #t means write to file; #f means don't write to file + (let* ((compile-result (compile code target linkage)) + (assembly-insts (statements compile-result)) + (port (open-output-file file-name))) + (write-list-to-port assembly-insts port) + (display "[") + (display file-name) + (display "]\n") + (close-output-port port)) + (begin + (display "[") + (display file-name) + (display "]\n")))) + 'util-loaded