[antlr-interest] [C-target] Child-parent relationship

Jim Idle jimi at temporal-wave.com
Thu Apr 28 08:27:02 PDT 2011


What version of the runtime? What version of the ANTLR tool?

Jim

> -----Original Message-----
> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
> bounces at antlr.org] On Behalf Of ??????? ?????
> Sent: Wednesday, April 27, 2011 11:27 PM
> To: antlr-interest at antlr.org
> Subject: [antlr-interest] [C-target] Child-parent relationship
>
> I took "simplecTreeParser" example, antlr-3.2 and libantlr3c-3.2 ( + ms
> vs 2005). After generating AST (after "SimpleCAST = psr-
> >program(psr);") and after checking count of errors I inserted this
> code:
>
> correctParent = SimpleCAST.tree;
> child = (pANTLR3_BASE_TREE)(correctParent->getChild(correctParent, 0));
> suggestedParent = (pANTLR3_BASE_TREE)(child->getParent(child));
> if (correctParent == suggestedParent)
> printf("\n\nCorrect\n\n");
>  else
> printf("\n\nIncorrect\n\n");
>
> So after execution "Incorrect" was printed. Because
> ((pANTLR3_COMMON_TREE)child->super)->parent had NULL. It seems to me it
> happens due to error in implementaion of "setParent" function in
> antlr3commontree.c. I also used Python target and python's "setParent"
> has diffrent logic.
>
> Dmitry Ilyin
>
>
> Take a look at antlr.markmail.org for other examples but where are you
> >
> trying to get the parent, in the parser before you have built the AST
> (it
> >
> sounds like this) or in the tree walker? You should not need to change
> any
> >
> of the runtime functions; you are probably just making them do things
> that
> >
> are going to get done anyway at the end of the rule. Look at the
> generated
> >
> code for ways to traverse the tree. I suppose there could be a bug, but
> ut
> >
> seems a bit unlikely at this point.
> >
>
> > Jim
> >
>
> > > -----Original Message-----
> >
> > From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
> >
> > bounces at antlr.org] On Behalf Of ??????? ?????
> >
> > Sent: Wednesday, April 27, 2011 11:15 AM
> >
> > To: antlr-interest at antlr.org
> >
> > Subject: [antlr-interest] [C-target] Child-parent relationship
> >
> >
> >
> > Sorry, I have no exp in using mailing lists, so I hope i'm doing
> right.
> >
> > I'm trying to get parent of AST node, but "getParent" function
> returns
> >
> > 0x00000001c address. Because pointer to parent of the node's super is
> >
> > equal to NULL. But when I've changed functions "addChild" and
> >
> > "setParent" all child-parent relationships become correct.
> >
> > Dmitry Ilyin
> >
> >
> >
> > 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


More information about the antlr-interest mailing list