On Sat, Aug 08, 2009 at 05:45:40PM -0400, Austin Hastings wrote:
> [...]
> Specifically, is
> token { ... <?after x > }
> going to match the same pattern as
> rule { ... <?after x > }
> ??
>
> I ask because (I just did it, and) with rules encouraging the liberal
> use of whitespace, and implicitly generating <.ws> matches, something
> like:
> rule { X <?after X> }
> will insert a <.ws> before the <?after>, which the after-block should
> then be aware of.
Why should the after-block be (automatically?) aware of the <.ws>?
Put another way, afaik <?after ...> is just a subrule like any
other -- it doesn't get any special syntactic significance
that enables it to be aware of its surroundings. I would say that
the rule should be either
rule { X<?after X> }
or if checking the whitespace is desired, it should be
rule { X <?after [X ] > } # note whitespace after the X
> So, I suppose the question is, does <?after> always behave a certain
> way, ratchet-wise, and if so what is it? Or does it take its mode from
> the surrounding context, or something else?
Ultimately I think that <?after ... > behaves the same as any other
subrule, and its pattern takes its ratchet/sigspace mode from the
surrounding pattern scope.
Pm