[antlr-interest] How to access member of CommonTree subclass
Kaleb Pederson
kaleb.pederson at gmail.com
Mon Oct 26 16:34:51 PDT 2009
On Monday 26 October 2009 04:18:21 pm Jim Idle wrote:
...
> > I'm working with a tree parser that is creating ASTs of a custom type.
> > This CommonTree subclass contains a member named elementType that
> > identifies the type represented by the tree. How do I set the
> > elementType dynamically within an action?
> >
> > I tried in the following way:
> >
> > id:
> > ^(AST_ID tok+=ID+)
> > {
> > $tree.setElementType( typeResolver.resolve(StringUtils.join($tok,
> > ".")) );
> > }
> > ;
> >
> > This, however, doesn't work since the tree has not yet been set:
>
> I presume that this is a tree walker that is producing another AST as output?
Correct.
> Anyway, why not return the value of typeResolver from the id rule, then set the resulting tree value?
That thought crossed my mind, but it seemed like it should be unnecessary. I gather then that it's not possible to set it directly?
>id : resolveID { $resovleID.tree.setElementType($resolveID.type); } ;
>
>resolveId
>returns [ xxx type]
>
>: ^AST_ID tok+=ID+) { $type =
>: typeResolver.resolve(StringUtils.join($tok,".")) );
>}
>;
Thanks for the suggestions.
--
Kaleb Pederson
Twitter - http://twitter.com/kalebpederson
Blog - http://kalebpederson.com
More information about the antlr-interest
mailing list