[antlr-interest] Ambiguous parse tree generated

Gerald Rosenberg gerald at certiv.net
Tue Oct 30 00:58:35 PDT 2012

I have a rule

style  :  ( Dot Identifier )* ( Hash Identifier )* ;

AntlrV4 generates a context with a list of Dot, a list of Hash, and a 
list of Identifier.  While both Identifier's are syntactically 
identical, they are semantically distinct.  In this particular case, the 
list of Dot can be used to partition the list of Identifier.

However, if I change the rule to the preferred form

style  :   ( Dot Identifier ( Hash Identifier )? )*  ;

I still get the same single lists of Dot, Hash, and Identifier. Only way 
to determine the Dot vs Hash associated Identifier's is by inspection of 
the token stream?  Adding labels did not change the generated code.

What am I missing?

More information about the antlr-interest mailing list