* There's no need to do the syntactic checks of identifiers for
`chunk', if there's an error, then people will get it anyway when they run the code. This means that `chunk' can be a simple syntax-rule. * Removed some redundant requires. svn: r13634
This commit is contained in:
parent
fa53cbe3c3
commit
8298feacb2
|
@ -2,29 +2,12 @@
|
||||||
|
|
||||||
@(begin
|
@(begin
|
||||||
|
|
||||||
(require (for-syntax scheme/base
|
(require scribble/manual scribble/decode scheme/include)
|
||||||
syntax/boundmap
|
|
||||||
scheme/list
|
|
||||||
compiler/cm-accomplice)
|
|
||||||
scribble/manual
|
|
||||||
scribble/struct
|
|
||||||
scribble/basic
|
|
||||||
scribble/decode
|
|
||||||
scheme/include)
|
|
||||||
|
|
||||||
;; define `chunk' as a macro that typesets the code
|
;; define `chunk' as a macro that typesets the code
|
||||||
(define-syntax (chunk stx)
|
(define-syntax-rule (chunk name expr ...)
|
||||||
(syntax-case stx ()
|
(make-splice (list (emph (scheme name) " ::=")
|
||||||
[(_ name expr ...)
|
(schemeblock expr ...))))
|
||||||
(cond
|
|
||||||
[(not (identifier? #'name))
|
|
||||||
(raise-syntax-error #f "expected a chunk name" stx #'name)]
|
|
||||||
[(not (regexp-match? #rx"^<.*>$" (symbol->string (syntax-e #'name))))
|
|
||||||
(raise-syntax-error
|
|
||||||
#f "chunk names must begin and end with angle brackets, <...>"
|
|
||||||
stx #'name)]
|
|
||||||
[else #`(make-splice (list (emph (scheme name) " ::=")
|
|
||||||
(schemeblock expr ...)))])]))
|
|
||||||
|
|
||||||
(define-syntax module
|
(define-syntax module
|
||||||
(syntax-rules () [(module name base body ...) (begin body ...)]))
|
(syntax-rules () [(module name base body ...) (begin body ...)]))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user