edited syntax/parse intro

This commit is contained in:
Ryan Culpepper 2010-09-07 15:19:37 -06:00
parent 43d527818e
commit 3f15f5bc13

View File

@ -18,9 +18,10 @@
This section provides an introduction to writing robust macros with This section provides an introduction to writing robust macros with
@scheme[syntax-parse] and syntax classes. @scheme[syntax-parse] and syntax classes.
The task is to write a macro named @scheme[mylet] that has the same As a running example we use the following task: write a macro named
syntax and behavior as Racket's @scheme[let] form. The macro should @scheme[mylet] that has the same syntax and behavior as Racket's
good error messages when used incorrectly. @scheme[let] form. The macro should produce good error messages when
used incorrectly.
Here is the specification of @scheme[mylet]'s syntax: Here is the specification of @scheme[mylet]'s syntax:
@ -29,11 +30,12 @@ Here is the specification of @scheme[mylet]'s syntax:
(code:line (@#,(defdummy mylet) ([var-id rhs-expr] ...) body ...+) (code:line (@#,(defdummy mylet) ([var-id rhs-expr] ...) body ...+)
(mylet loop-id ([var-id rhs-expr] ...) body ...+))] (mylet loop-id ([var-id rhs-expr] ...) body ...+))]
For simplicify, we handle only the first case for now. We return to For simplicity, we handle only the first case for now. We return to
the second case later in the introduction. the second case later in the introduction.
First, we import @scheme[syntax-parse] @scheme[for-syntax], since we First, we import @scheme[syntax-parse] into the @tech[#:doc '(lib
will use it to implement a macro transformer. "scribblings/reference/reference.scrbl")]{transformer environment},
since we will use it to implement a macro transformer.
@myinteraction[(require (for-syntax syntax/parse))] @myinteraction[(require (for-syntax syntax/parse))]