Reader refactor
This commit is contained in:
parent
07142e2305
commit
f7210b20cf
|
@ -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,11 +16,16 @@
|
|||
(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)
|
||||
|
|
Loading…
Reference in New Issue
Block a user