Reader refactor
This commit is contained in:
parent
07142e2305
commit
f7210b20cf
|
@ -1,11 +1,9 @@
|
||||||
(module reader syntax/module-reader
|
(module reader syntax/module-reader
|
||||||
#:language 'datalog/lang/module
|
#:language 'datalog/lang/module
|
||||||
#:read (lambda ([in (current-input-port)])
|
#:read
|
||||||
(let ([ast (parse-program in)])
|
(lambda ([in (current-input-port)])
|
||||||
(list `(#%module-begin ,@ast))))
|
(this-read-syntax #f in))
|
||||||
#:read-syntax (lambda ([source-name #f] [in (current-input-port)])
|
#:read-syntax this-read-syntax
|
||||||
(let ([ast (parse-program in)])
|
|
||||||
(list `(#%module-begin ,@ast))))
|
|
||||||
#:whole-body-readers? #t
|
#:whole-body-readers? #t
|
||||||
#:info (lambda (key defval default)
|
#:info (lambda (key defval default)
|
||||||
; XXX Should have different comment character key
|
; XXX Should have different comment character key
|
||||||
|
@ -18,15 +16,20 @@
|
||||||
(require datalog/parse
|
(require datalog/parse
|
||||||
datalog/tool/submit)
|
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.
|
; XXX This is almost certainly wrong.
|
||||||
(define (even-read src ip)
|
(define (even-read src ip)
|
||||||
(begin0
|
(begin0
|
||||||
(parameterize ([current-source-name src])
|
(parameterize ([current-source-name src])
|
||||||
(datum->syntax #f (parse-statement ip)))
|
(datum->syntax #f (parse-statement ip)))
|
||||||
(current-read-interaction odd-read)))
|
(current-read-interaction odd-read)))
|
||||||
(define (odd-read src ip)
|
(define (odd-read src ip)
|
||||||
(current-read-interaction even-read)
|
(current-read-interaction even-read)
|
||||||
eof)
|
eof)
|
||||||
|
|
||||||
(current-read-interaction
|
(current-read-interaction
|
||||||
even-read))
|
even-read))
|
Loading…
Reference in New Issue
Block a user