[antlr-interest] FYI Duplicate Nodes Behavior
Bastian Asam
bastian.asam at amadeus.com
Thu Feb 17 03:55:57 PST 2011
Hello everybody,
I just spend almost a day to figure out a difference on how ANTLR handles
the duplication of nodes and thought it might be helpful to others.
What I was trying to do is rather simple:
dup : 'test =' refs -> ^('test' refs refs) ;
refs : id(',' id)* ;
id : ID ;
That generates with input "test = test1,test2" this tree: ^('test' id
test1 test2 ^(nil test1 test2))
Why is there a nil node generated?
My solution to this is to put the refs definition in the dup definition:
dup : 'test =' (i+=id(',' i+=id)*) -> ^('test' $i* $i*) ; // don't
forget the * !!
id : ID ;
Is not particularly beautiful, but works :)
Output is now
^('test' id test1 test2 test1 test2)
Hope this helps someone...
Bastian
IMPORTANT - CONFIDENTIALITY NOTICE - This e-mail is intended only for
the use of the individual or entity shown above as addressees. It may
contain information which is privileged, confidential or otherwise
protected from disclosure under applicable laws. If the reader of this
transmission is not the intended recipient, you are hereby notified that
any dissemination, printing, distribution, copying, disclosure or the
taking of any action in reliance on the contents of this information is
strictly prohibited. If you have received this transmission in error,
please immediately notify us by reply e-mail or using the address below
and delete the message and any attachments from your system.
Amadeus Data Processing GmbH
Geschäftsführer: Eberhard Haag
Sitz der Gesellschaft: Erding
HR München 48 199
Berghamer Strasse 6
85435 Erding
Germany
More information about the antlr-interest
mailing list