[antlr-interest] Consumed input in V3

Mark Bednarczyk voytechs at yahoo.com
Fri Mar 2 09:19:56 PST 2007

I've been scratching my head on this little rule for a while since since I
discovered my fully qualified names are being rewritten incorrecly:
rule	:	i1=Identifier
        	('.' i2=Identifier)*
        	-> ^(ID $i1 ($i2)*)

Output is from the CommonTree.toStringTree() call. 

input = "com.slytechs.def"
output = (ID com def)

Without the rewrite the same rule works as expected:

rule	:	i1=Identifier
        	('.'! i2=Identifier)*

input = "com.slytechs.def"
output = com slytechs def

Obviously we loose the ID token as the root of this tree, but the output
contains a flat list of all the elements. Seems like the ($i2)* for
multivalue list is not working properly and dropping the front elements of
the list.

The rewrite rule seems to be dropping everything in the beginning of the
('.' i2=Identifier)* except the last token:

input = "com.org.slytechs.def"
output = (ID com def)

Any ideas to get all the elements of the rewrite added to the result tree?


More information about the antlr-interest mailing list