[antlr-interest] Ambiguous parse tree generated

Jim Idle jimi at temporal-wave.com
Tue Oct 30 01:06:58 PDT 2012

At a guess:

style : di* hi*;

di: Dot Identifier ;
hi: Hash Identifier;

in other words did you try creating rules for the semantically distinct


-----Original Message-----
From: antlr-interest-bounces at antlr.org
[mailto:antlr-interest-bounces at antlr.org] On Behalf Of Gerald Rosenberg
Sent: Tuesday, October 30, 2012 3:59 PM
To: antlr-interest
Subject: [antlr-interest] Ambiguous parse tree generated

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?

List: http://www.antlr.org/mailman/listinfo/antlr-interest

More information about the antlr-interest mailing list