summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2008-09-14 14:26:29 +0200
committerAndy Wingo <wingo@pobox.com>2008-09-14 14:26:29 +0200
commit7e97ad2dd69cbc0066cfe2fee71088d22b8b8021 (patch)
treeb40ad53ab31adc2be4f76e765cc699eb68c183e6
parentf03c31dbaddba733757e3d9161c8d9c8e8f363a7 (diff)
downloadguile-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.scm12
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