Use the super pointer in the ANTLR3_BASE_TREE and cast it to pANTLR3_COMMON_TREE. The getToken returns the BASE_TOKEN, which has a super, which is casy to COMMON_TOKEN.
Check: makeDot in basetreeadaptor for some examples. You can only get tokens for nodes that have them of course. Jim > -----Original Message----- > From: [email protected] [mailto:antlr-interest- > [email protected]] On Behalf Of Richard Connon > Sent: Tuesday, December 07, 2010 2:51 PM > To: [email protected] > Subject: [antlr-interest] Navigate the C target AST > > Hi. I'm trying to navigate the AST built using the ANTLR3 C target. > > I'm wondering how the token information is stored in the tree nodes. It > seems there are two types of tree nodes. ANTLR3_BASE_TREE and > ANTLR3_COMMON_TREE and I can set my grammar to produce the AST with > either one. > > The documentation suggests that an ANTLR3_BASE_TREE has no token > information yet it contains a pointer to the getToken(ANTLR3_BASE_TREE) > function. Can anyone clarify this? > > I've been trying out each type to try and work it out. > > getToken(ANTLR3_BASE_TREE) on the ANTLR3_BASE_TREE seems to return 0x0 > which would support what the docs say about it having no token > "payload" > but then why does this function exist. > > When using ANTLR3_COMMON_TREE instead since I assumed this to be the > solution, the token member of the struct is also 0x0 Finally doing > commonTree->baseTree.getToken(&commonTree->basetree) as a last resort > caused the program to segfault in dupTree() > > All in all I'm a bit confused about where the "content" of the AST > actually lies. > > List: http://www.antlr.org/mailman/listinfo/antlr-interest > Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your- > email-address List: http://www.antlr.org/mailman/listinfo/antlr-interest Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address -- You received this message because you are subscribed to the Google Groups "il-antlr-interest" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/il-antlr-interest?hl=en.
