diff --git a/collects/datalog/lang/configure-runtime.rkt b/collects/datalog/lang/configure-runtime.rkt new file mode 100644 index 0000000000..5985d59d78 --- /dev/null +++ b/collects/datalog/lang/configure-runtime.rkt @@ -0,0 +1,20 @@ +#lang racket/base + +(define (configure data) + (printf "Configuring\n") + (current-read-interaction even-read)) +(provide configure) + +(require datalog/parse + datalog/private/compiler) + +; XXX This is almost certainly wrong. +(define (even-read src ip) + (begin0 + (compile-statement + (parameterize ([current-source-name src]) + (parse-statement ip))) + (current-read-interaction odd-read))) +(define (odd-read src ip) + (current-read-interaction even-read) + eof) \ No newline at end of file diff --git a/collects/datalog/lang/lang-info.rkt b/collects/datalog/lang/lang-info.rkt new file mode 100644 index 0000000000..760c5af10a --- /dev/null +++ b/collects/datalog/lang/lang-info.rkt @@ -0,0 +1,10 @@ +#lang racket/base + +(define (get-info data) + (λ (key default) + (case key + [(configure-runtime) + '(#(datalog/lang/configure-runtime configure #f))] + [else + default]))) +(provide get-info) \ No newline at end of file diff --git a/collects/datalog/lang/reader.rkt b/collects/datalog/lang/reader.rkt index 43f2068839..ece754f29f 100644 --- a/collects/datalog/lang/reader.rkt +++ b/collects/datalog/lang/reader.rkt @@ -3,6 +3,8 @@ #:read (lambda ([in (current-input-port)]) (this-read-syntax #f in)) #:read-syntax this-read-syntax #:whole-body-readers? #t + #:language-info + '#(datalog/lang/lang-info get-info #f) #:info (lambda (key defval default) ; XXX Should have different comment character key (case key @@ -10,8 +12,6 @@ (dynamic-require 'datalog/tool/submit 'repl-submit?)] [(color-lexer) (dynamic-require 'datalog/tool/syntax-color 'get-syntax-token)] - [(configure-runtime) - (λ () (current-read-interaction even-read))] [else (default key defval)])) (require datalog/parse datalog/private/compiler) @@ -19,15 +19,4 @@ (define (this-read-syntax [src #f] [in (current-input-port)]) (compile-program (parameterize ([current-source-name src]) - (parse-program in)))) - - ; XXX This is almost certainly wrong. - (define (even-read src ip) - (begin0 - (compile-statement - (parameterize ([current-source-name src]) - (parse-statement ip))) - (current-read-interaction odd-read))) - (define (odd-read src ip) - (current-read-interaction even-read) - eof)) \ No newline at end of file + (parse-program in))))) \ No newline at end of file