From a8a41e18206d205032d7cc812c61ac10aa1ae943 Mon Sep 17 00:00:00 2001 From: AlexKnauth Date: Wed, 29 Oct 2014 22:49:25 -0400 Subject: [PATCH] extend reader for repl too --- .gitignore | 9 ++------- afl/lang/language-info.rkt | 10 ++++++++++ afl/lang/reader.rkt | 7 ++++++- afl/lang/runtime-config.rkt | 12 ++++++++++++ 4 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 afl/lang/language-info.rkt create mode 100644 afl/lang/runtime-config.rkt diff --git a/.gitignore b/.gitignore index b28a785..9834087 100644 --- 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 new file mode 100644 index 0000000..3e36d4d --- /dev/null +++ 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 index b5e3b6b..dfce6e1 100644 --- 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 new file mode 100644 index 0000000..5808bbf --- /dev/null +++ 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))