diff options
author | Andy Wingo <wingo@pobox.com> | 2008-09-14 14:26:29 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2008-09-14 14:26:29 +0200 |
commit | 7e97ad2dd69cbc0066cfe2fee71088d22b8b8021 (patch) | |
tree | b40ad53ab31adc2be4f76e765cc699eb68c183e6 | |
parent | f03c31dbaddba733757e3d9161c8d9c8e8f363a7 (diff) | |
download | guile-7e97ad2dd69cbc0066cfe2fee71088d22b8b8021.tar.gz |
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.
-rw-r--r-- | module/language/scheme/translate.scm | 12 |
1 files 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 |