better code organization
svn: r15152
This commit is contained in:
parent
e53fa0ce2b
commit
81d8c97800
|
@ -26,7 +26,7 @@
|
||||||
...
|
...
|
||||||
[else (err "got an unknown keyword" (car body))])))))
|
[else (err "got an unknown keyword" (car body))])))))
|
||||||
checks ...
|
checks ...
|
||||||
(set! var (or var default)) ...))
|
(unless var (set! var default)) ...))
|
||||||
(define (construct-reader lang body)
|
(define (construct-reader lang body)
|
||||||
(keywords body
|
(keywords body
|
||||||
[#:language ~lang lang]
|
[#:language ~lang lang]
|
||||||
|
@ -45,30 +45,26 @@
|
||||||
(quasisyntax/loc stx
|
(quasisyntax/loc stx
|
||||||
(#%module-begin
|
(#%module-begin
|
||||||
#,@body
|
#,@body
|
||||||
(#%provide (rename *read read) (rename *read-syntax read-syntax))
|
(#%provide (rename lang:read read) (rename lang:read-syntax read-syntax))
|
||||||
(define-values (*read *read-syntax)
|
(define lang #,~lang)
|
||||||
(let* ([lang #,~lang]
|
(define rd #,~read)
|
||||||
[rd #,~read]
|
(define rds #,~read-syntax)
|
||||||
[rds #,~read-syntax]
|
(define w1 #,~wrapper1)
|
||||||
[w1 #,~wrapper1]
|
(define w2 #,~wrapper2)
|
||||||
[w2 #,~wrapper2]
|
(define w2* (cond [(not w2) (lambda (in r _) (r in))]
|
||||||
[w2 (cond [(not w2) (lambda (in r _) (r in))]
|
[(procedure-arity-includes? w2 3) w2]
|
||||||
[(procedure-arity-includes? w2 3) w2]
|
[else (lambda (in r _) (w2 in r))]))
|
||||||
[else (lambda (in r _) (w2 in r))])]
|
(define whole? #,~whole-body-readers?)
|
||||||
[whole? #,~whole-body-readers?])
|
(define (lang:read in modpath line col pos)
|
||||||
(values
|
(w2* in (lambda (in)
|
||||||
(lambda (in modpath line col pos)
|
(wrap-internal lang in rd whole?
|
||||||
(w2 in
|
w1 #f modpath #f line col pos))
|
||||||
(lambda (in)
|
#f))
|
||||||
(wrap-internal lang in rd whole?
|
(define (lang:read-syntax src in modpath line col pos)
|
||||||
w1 #f modpath #f line col pos))
|
(w2* in (lambda (in)
|
||||||
#f))
|
(wrap-internal lang in (lambda (in) (rds src in)) whole?
|
||||||
(lambda (src in modpath line col pos)
|
w1 #t modpath src line col pos))
|
||||||
(w2 in
|
#t)))))
|
||||||
(lambda (in)
|
|
||||||
(wrap-internal lang in (lambda (in) (rds src in)) whole?
|
|
||||||
w1 #t modpath src line col pos))
|
|
||||||
#t))))))))
|
|
||||||
(syntax-case stx ()
|
(syntax-case stx ()
|
||||||
[(_ lang body ...)
|
[(_ lang body ...)
|
||||||
(not (keyword? (syntax-e #'lang)))
|
(not (keyword? (syntax-e #'lang)))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user