From 7e97ad2dd69cbc0066cfe2fee71088d22b8b8021 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 14 Sep 2008 14:26:29 +0200 Subject: [PATCH] look up scheme translators by value, not by name * module/language/scheme/translate.scm (custom-transformer-table): Rename from `primitive-syntax-table', because now it will handle procedural values as well. (lookup-transformer): Update for renaming. Look up custom transformers by value, not name. (make-pmatch-transformers): Key the transformer table by value, not name. --- module/language/scheme/translate.scm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/module/language/scheme/translate.scm b/module/language/scheme/translate.scm index b8585e3cd..493ce819d 100644 --- a/module/language/scheme/translate.scm +++ b/module/language/scheme/translate.scm @@ -58,10 +58,7 @@ ;; definition forward-declared them (and (variable-bound? var) (variable-ref var))))))) (cond - ((or (primitive-macro? val) - (eq? val eval-case)) - (or (assq-ref primitive-syntax-table head) - (syntax-error #f "unhandled primitive macro" head))) + ((assq-ref custom-transformer-table val)) ((defmacro? val) (lambda (env loc exp) @@ -77,6 +74,9 @@ (with-fluids ((eec (module-eval-closure mod))) (sc-expand3 exp 'c '(compile load eval))))))) + ((primitive-macro? val) + (syntax-error #f "unhandled primitive macro" head)) + ((macro? val) (syntax-error #f "unknown kind of macro" head)) @@ -121,7 +121,7 @@ (define (make1 clause) (let ((sym (car clause)) (clauses (cdr clause))) - `(cons ',sym + `(cons ,sym (lambda (,env ,loc ,exp) (define (,retranslate x) (trans ,env (location x) x)) (pmatch (cdr ,exp) @@ -131,7 +131,7 @@ (define *the-compile-toplevel-symbol* 'compile-toplevel) -(define primitive-syntax-table +(define custom-transformer-table (make-pmatch-transformers e l retrans (quote