From 14b2a1570a7bcbd69bb0ba4728361d00111ee7cd Mon Sep 17 00:00:00 2001 From: Jesse McDonald Date: Thu, 15 Apr 2010 23:08:21 -0500 Subject: [PATCH] Add support for (quote) literal forms in compiler.ss. --- compiler.ss | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/compiler.ss b/compiler.ss index 91c032c..80bf150 100755 --- a/compiler.ss +++ b/compiler.ss @@ -21,7 +21,7 @@ [(cdr) '%cdr] [(cons) '%cons]) (cdr form))] - [(%bind %if %tail-call %apply %lambda %set! %cons %car %cdr) form] + [(%bind %if %tail-call %apply %lambda %set! %cons %car %cdr quote) form] [else (simplify-funcall form)]) (if (eq? form '()) '%nil form))) @@ -34,7 +34,7 @@ (cond [(pair? after) (cons subform after)] [(or (not (pair? subform)) - (memq (first subform) '(%apply %car %cdr %cons %bind %if))) + (memq (first subform) '(%apply %car %cdr %cons %bind %if quote))) `((set! ,(second form) ,subform))] [(and (pair? subform) (eq? (first subform) '%tail-call)) `(,subform)] ; The %set! wouldn't be executed anyway. @@ -331,6 +331,7 @@ (if (memq old-var (second form)) form `(%bind ,(second form) ,@(map recurse (cddr form))))] + [(quote) form] [(%if %tail-call %apply %lambda %set! %cons %car %cdr) `(,(first form) ,@(map recurse (cdr form)))] [else (error "Unsimplified form:" form)]) @@ -352,7 +353,7 @@ frm (map cons (second form) new-vars))) (cddr form))))] - [(%if %tail-call %apply %lambda %set! %cons %car %cdr) form] + [(%if %tail-call %apply %lambda %set! %cons %car %cdr quote) form] [else (error "Unsimplified form:" form)]) form)) @@ -370,7 +371,7 @@ (list new-form))) (map flatten-binds (cddr form)))]) `(%bind ,bound-vars ,@subforms))] - [(%if %tail-call %apply %set! %lambda %cons %car %cdr) form] + [(%if %tail-call %apply %set! %lambda %cons %car %cdr quote) form] [else (error "Unsimplified form:" form)]) form)) @@ -387,6 +388,7 @@ [(%set!) (if output? (cons (second form) (recurse (third form))) (recurse (third form)))] + [(quote) '()] [(%if %tail-call %apply %lambda %cons %car %cdr) (remove-duplicates (append-map recurse (cdr form)))] [else @@ -411,6 +413,7 @@ (let ([ref-vars (remove-duplicates (append-map free-variables (cddr form)))]) `(%bind ,(filter (lambda (x) (memq x ref-vars)) (second form)) ,@(map reduce-variables (cddr form))))] + [(quote) form] [(%if %tail-call %apply %set! %lambda %cons %car %cdr) `(,(first form) ,@(map reduce-variables (cdr form)))] [else (error "Unsimplified form:" form)]) @@ -433,6 +436,7 @@ (cons subform after))) '() (map reduce-set! (cddr form)))))] + [(quote) form] [(%if %tail-call %apply %set! %lambda %cons %car %cdr) `(,(first form) ,@(map reduce-set! (cdr form)))] [else (error "Unsimplified form:" form)])