Oh, I had forgotten that syntax-classes could take arguments. Thanks!
On Aug 1, 2014, at 12:45 PM, J. Ian Johnson <[email protected]> wrote: > Two things: > 1) syntax-classes can take parameters, so you can pass an argument to x that > is a boolean, within-y?. You can't create a parameterization scope because > this is all within the parsing code for syntax-parse. You could mutate a box > or parameter with a ~do pattern and reset it after the patterns you want > within that "scope," but c'mon. Don't do that. > > (define-syntax-class (x within-y?) > (pattern _ #:when within-y?)) > > (define-syntax-class y > (pattern (~var dummy (x #t)))) > > [the use-case of nothing to the left of a : to indicate non-binding is > something that should be extended to parameterized syntax-classes, probably.] > > 2) If you're communicating between macros and not syntax-classes, you want to > use syntax-parameters. > > (require racket/stxparam) > (define-syntax-parameter within-y? #f) > > (define-syntax-rule (y body) (syntax-parameterize ([within-y? #t]) body)) > (define-syntax-class x > (pattern _ #:when (syntax-parameter-value #'within-y?))) > > -Ian > ----- Original Message ----- > From: "Alexander D. Knauth" <[email protected]> > To: "racket users list" <[email protected]> > Sent: Friday, August 1, 2014 12:23:21 PM GMT -05:00 US/Canada Eastern > Subject: [racket] is there any way to tell syntax-parse to parse a pattern > within a parametization ? > > > Is there any way to tell syntax-parse to parse a pattern within a > parametization ? > > > For example in something like this: > (define within-y? (make-parameter #f)) > (define-syntax-class x > [pattern _ #:when (within-y?)]) > (define-syntax-class y > [pattern :x]) > (define (parse stx) > (syntax-parse stx > [:y #t])) > > > How do I tell it to parse the y syntax-class within a (parameterize > ([within-y? #t]) …) form? > > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users

