[antlr-interest] Bug with "ambiguous rules" check

Sam Harwell sharwell at pixelminegames.com
Sat Aug 2 10:35:12 PDT 2008


The following code generates an error, even though the rule is not
ambiguous. As far as I can tell, this rule shouldn't even produce a
warning. If the $ isn't enough to make the code clear (visually; it
already is syntactically), we need a keyword to reference the enclosing
rule (which might not be a bad idea anyway). The error is reported in
codegen.g, and removing the if statement that checks for it let my
grammar compile/work again :)

 

assignment_expression

// left-factoring the assignment expression and conditional_expression
for speed

        :       (       logical_or_expression

                        -> ^(logical_or_expression)

                )

                (       assignment_operator assignment_expression

                        -> ^(assignment_operator $assignment_expression
assignment_expression)

                |       '?' expression ':' assignment_expression

                        -> ^(AST_CONDITIONAL $assignment_expression
expression assignment_expression)

                )?

        |       throw_expression

                -> ^(throw_expression)

        ;

 

ANTLR Parser Generator  Version 3.1b2 (July 17, 2008)  1989-2008

Grammar.g3(6159,29): error 132: reference $assignment_expression is
ambiguous; rule assignment_expression is enclosing rule and referenced
in the production (assuming enclosing rule)

Grammar.g3(6161,25): error 132: reference $assignment_expression is
ambiguous; rule assignment_expression is enclosing rule and referenced
in the production (assuming enclosing rule)

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20080802/6b9eda62/attachment.html 


More information about the antlr-interest mailing list