On Tue, Jun 10, 2008 at 01:07:45PM -0700, Ron Schmidt wrote:
> Perl 5 allows empty semicolon terminated statements.  perl6 currently 
> allows for empty closures but treats a semicolon that follows nothing or 
> whitespace as a syntax error.  The attached patch to grammar.pg provides 
> a fix for this discrepancy between perl 5 and perl 6.  Also attached is 
> an attempt at a test suite for some statement termination cases.
> 
> The patch is small and passes "make fulltest" under ubuntu and "make 
> spectest", as well as the parts of "make test" in the perl6 directory, 
> under cygwin.  Modifying statementlist this way does not appear to be 
> the most elegant solution to the problem but approaches like 
> [<statement>?<.eat_terminator> ]* seemed to fail with relatively serious 
> errors.

Thanks for the patch.  In cases of changes to the grammar, however,
we're trying to keep Rakudo's grammar as closely aligned to STD.pm
as we can -- here's STD.pm's definition for statementlist (line ~570):

    rule statementlist {
        :my StrPos $endstmt is context<rw> = -1;
        [<statement><.eat_terminator> ]*
        {*}
    }

So, since Rakudo's current grammar pretty much matches what STD.pm 
has here, I'd prefer that we figure out how STD.pm is handling 
empty statements and do that.

Thanks again!

Pm

Reply via email to