[antlr-interest] A basic question about AST construction operators
Hitesh Shetty
hitesh.p.shetty at gmail.com
Mon Aug 9 09:11:06 PDT 2010
Hi,
Im a newbie ANTLR user and I had a basic question about the AST construction
operator '^' caret,
When the AST construction operator '^' (caret) is used along with a normal
rule such as
condStatement : 'expression' ^ x=statement1 (y=statement2)? ;
The term 'expression' becomes the root for the tree and the next un-suffixed
element i.e $x becomes the first child and $y becomes the second child. This
can be rewritten as ^('expression' $x $y?).
However when the operator '^' is used along with a subrule such as
expr : x=INT ('+' ^ y=INT)* ;
The $x is chosen as the first child not the next unsuffixed element i.e $y.
For example input 1+2 is parsed as ^('+' 1 2) and not as ^('+' 2 1)
Am I missing something obvious or Is this the behaviour of the AST
construction operator ?
Any pointers would be greatly appreciated.
More information about the antlr-interest
mailing list