[antlr-interest] Help with compressing trees and custom nodes

Todd Nine tnine at apigee.com
Thu Mar 15 11:02:11 PDT 2012


Hi guys.  I'm new to antlr and have a question regarding tree compressions.
 My ultimate goal is to use my grammar to create an AST.  From this AST I
then will utilize the visitor pattern to walk the tree and evaluate my
results for our Cassandra query engine.  I'm having issues with my tree
having a lot of additional nodes that don't have 2 children due to operator
precedence.  My questions are below.

1. How can I create a different node class for each element?  For instance,
&& ad || need their own nodes, as well as 'NOT' 'within' etc

2. How can I collapse tree elements that only have 1 child.  I.E turn orexp
-> andexp -> notexp -> andexp into just an andexp node


I've read all the documentation here, but I have a few things that aren't
clear.

http://www.antlr.org/wiki/display/ANTLR3/Tree+construction

When creating my own node classes, it's not clear to me if I need to
subclass an antlr node class, or just create any class.  Are there any
examples on both compression and creating custom classes?


Thanks,

Todd


More information about the antlr-interest mailing list