commit a8a41e18206d205032d7cc812c61ac10aa1ae943
parent 5d3e291c44ed861cba581f7cd3923b8129baf727
Author: AlexKnauth <alexander@knauth.org>
Date: Wed, 29 Oct 2014 22:49:25 -0400
extend reader for repl too
Diffstat:
4 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -1,10 +1,5 @@
-
-*.scrbl~
-
-*.rkt~
-
+*~
+compiled/
*.html
-
*.css
-
*.js
diff --git a/afl/lang/language-info.rkt b/afl/lang/language-info.rkt
@@ -0,0 +1,10 @@
+#lang racket/base
+
+(provide get-language-info)
+
+(define (get-language-info data)
+ (lambda (key default)
+ (case key
+ [(configure-runtime)
+ '(#[afl/lang/runtime-config configure #f])]
+ [else default])))
diff --git a/afl/lang/reader.rkt b/afl/lang/reader.rkt
@@ -20,7 +20,12 @@
;; fall back to /lang/reader:
(string->symbol (string-append str "/lang/reader"))))))
wrap-reader
- wrap-reader
+ (lambda (orig-read-syntax)
+ (define read-syntax (wrap-reader orig-read-syntax))
+ (lambda args
+ (syntax-property (apply read-syntax args)
+ 'module-language
+ '#(afl/lang/language-info get-language-info #f))))
(lambda (proc)
(lambda (key defval)
(define (fallback) (if proc (proc key defval) defval))
diff --git a/afl/lang/runtime-config.rkt b/afl/lang/runtime-config.rkt
@@ -0,0 +1,12 @@
+#lang racket/base
+
+(provide configure)
+
+(require (only-in afl/reader make-afl-readtable))
+
+(define (configure data)
+ (define old-read (current-read-interaction))
+ (define (new-read src in)
+ (parameterize ([current-readtable (make-afl-readtable (current-readtable))])
+ (old-read src in)))
+ (current-read-interaction new-read))