Aaron Sherman wrote:
> rule { <term> { /@operators/.commit(1) or fail } <term> }
>
> The hypothetical commit() method being one that would take a number and
That would only be useful if the outer rule can backtrack into the
inner /@operators/ rule. Can it?
I agree with you that a commit method would be useful -- especially when
used on $self. I'd probably write your example as:
rule { <term> { m/@operators { $self.commit(1) }/ or fail } <term> }
which is of course just a complicated
rule { <term> { m/@operators :/ or fail } <term> }
BTW, why isn't fail a method? Then a rule could pass itself to a sub-rule
and allow the sub-rule to fail it's parent, but not the entire match. Isn't
failing just invoking the last continuation on the backtrack stack?
- Ken