|parent pointers in AST nodes email@example.com (eliben) (2009-11-27)|
|Re: parent pointers in AST nodes bobduff@shell01.TheWorld.com (Robert A Duff) (2009-11-27)|
|Re: parent pointers in AST nodes firstname.lastname@example.org (Kenneth 'Bessarion' Boyd) (2009-11-27)|
|Re: parent pointers in AST nodes email@example.com (Ira Baxter) (2009-11-27)|
|Re: parent pointers in AST nodes DrDiettrich1@aol.com (Hans-Peter Diettrich) (2009-11-28)|
|Re: parent pointers in AST nodes firstname.lastname@example.org (bartc) (2009-11-30)|
|Re: parent pointers in AST nodes email@example.com (2009-11-30)|
|Re: parent pointers in AST nodes firstname.lastname@example.org (Kaz Kylheku) (2009-12-01)|
|Re: parent pointers in AST nodes email@example.com (Quinn Tyler Jackson) (2009-12-01)|
|Re: parent pointers in AST nodes firstname.lastname@example.org (Gary Oblock) (2009-12-14)|
|Date:||Mon, 30 Nov 2009 12:50:16 GMT|
|Posted-Date:||30 Nov 2009 23:52:23 EST|
"eliben" <email@example.com> wrote in message
> When implementing an AST for some language, each AST node typically
> holds information about the language construct it represents and
> pointers to children nodes (such as a binary op node pointing to its
> left-hand and right-hand operands).
> Is it common / useful to supply a pointer to the node's parent as
> In favor:
> * This can simplify some AST processing tasks, especially when using
> the visitor pattern - we may get to an interesting node and then need
> to look at its ancestors to do the required analysis.
I've looked at my own code and AST nodes don't use a parent pointer,
presumably because I never do anything exciting with the AST other than just
traverse it top-down and left-right.
> * Maintaining parent nodes makes the AST creation code more complex
> * Wastes space (another pointer for each node)
I don't think the space is an issue, assuming it's running on reasonable
hardware. (How many AST nodes will exist at any one time? 100,000 max?
That's less than 1MB extra. It's even possible the AST node might have
padding bytes that can absorb the pointer)
Just put in the pointer if you think it might be useful. (Although, if a
subtree is shared between different parents, you might have to choose which
one you like best...)
Return to the
Search the comp.compilers archives again.