On Thu, May 26, 2005 at 11:19:42AM -0500, Patrick R. Michaud wrote:
> <$rule> N indirect rule
> <::$rulename> N indirect symbolic rule
> <@rules> N like '@rules'
> <%rules> N like '%rules'
> <{ code }> N code produces a rule
> <&foo()> N subroutine returns rule
> <( code )> N code must return true or backtracking ensues
>
> Here the leading tokens are actually "<$", "<::$", "<@", "<%", "<{", "<&",
> and "<(", and I suspect we have "<?$", "<?::$", "<?@", and "<!$", "<!::$",
> "<!@", etc. counterparts.
Oops. After re-reading A05 I would now assume we don't have
non-capturing counterparts for <$rule>, <@rules>, <%rules>, ... --
they're already non capturing. From A05:
[Update: Only rules of the form <ident> are captured by
default. You can use := to force capture of anything else,
or the :keepall adverb to capture everything else.]
Somewhere I thought I read that <$rule> captures to $/{'$rule'},
but I don't find it now, so if A05 holds here, then we don't
need "<?$", "<?@", "<?::$", etc. (Whew!) Somehow I much prefer
A05's formulation, in that only rules of the form <ident>
capture, and we use aliases or parentheses to capture anything
else.
Thus one can say that <+alpha>, <-alpha>, <[aeiou]>, <!alpha>, <?alpha>,
<$alpha>, <@alpha>, etc. are all non-capturing constructs.
Pm