On Sat, Apr 07, 2007 at 11:20:19AM -0700, Jim McKim wrote:
> The problematic grammar:
>
> grammar x_grammar;
>
> #token h_digits { <:i[0-9a-f]>+ }
> #token h_digits { <[0-9a-f]> }
>
> token TOK_CONSTANT {
> #<h_digits> ( : <h_digits> )**{1..15}
> <h_digits> : <h_digits>
> }
The error (that PGE is having difficulty catching) is
that the cut operator (':') isn't being applied to any
particular term in:
#<h_digits> ( : <h_digits> )**{1..15}
So, when PGE sees the ':' cut operator, it attempts to
apply it to the previous pattern and there's not anything
there to apply it to, at which point PGE chokes. PGE should
report a more useful exception here.
Note that the leading # does not comment out the entire line
in this case -- since # is followed by an opening '<' bracket
character, the comment terminates with the closing '>' bracket [1]
and not at the end of the line.
So, I'll take this ticket as being that PGE needs to
better recognize when a 'cut' token is being applied to
a null term and report the error accordingly.
Thanks!
Pm
[1] http://dev.perl.org/perl6/doc/design/syn/S05.html#New_metacharacters