From f7210b20cfae1a7d05a8f2d93482b098adefd920 Mon Sep 17 00:00:00 2001 From: Jay McCarthy Date: Sat, 26 Jun 2010 13:30:59 -0600 Subject: [PATCH] Reader refactor --- collects/datalog/lang/reader.rkt | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/collects/datalog/lang/reader.rkt b/collects/datalog/lang/reader.rkt index 7394896695..1eddbdddbc 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