Reader refactor

This commit is contained in:
Jay McCarthy 2010-06-26 13:30:59 -06:00
parent 07142e2305
commit f7210b20cf

View File

@ -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))