diff --git a/collects/datalog/lang/reader.rkt b/collects/datalog/lang/reader.rkt index 7394896..1eddbdd 100644 --- a/collects/datalog/lang/reader.rkt +++ b/collects/datalog/lang/reader.rkt @@ -1,11 +1,9 @@ (module reader syntax/module-reader #:language 'datalog/lang/module - #:read (lambda ([in (current-input-port)]) - (let ([ast (parse-program in)]) - (list `(#%module-begin ,@ast)))) - #:read-syntax (lambda ([source-name #f] [in (current-input-port)]) - (let ([ast (parse-program in)]) - (list `(#%module-begin ,@ast)))) + #:read + (lambda ([in (current-input-port)]) + (this-read-syntax #f in)) + #:read-syntax this-read-syntax #:whole-body-readers? #t #:info (lambda (key defval default) ; XXX Should have different comment character key @@ -18,15 +16,20 @@ (require datalog/parse datalog/tool/submit) + (define (this-read-syntax [src #f] [in (current-input-port)]) + (parameterize ([current-source-name src]) + (let ([ast (parse-program in)]) + (list `(#%module-begin ,@ast))))) + ; XXX This is almost certainly wrong. (define (even-read src ip) (begin0 (parameterize ([current-source-name src]) - (datum->syntax #f (parse-statement ip))) + (datum->syntax #f (parse-statement ip))) (current-read-interaction odd-read))) (define (odd-read src ip) (current-read-interaction even-read) eof) - + (current-read-interaction even-read)) \ No newline at end of file