Re: parent pointers in AST nodes

"bartc" <bartc@freeuk.com>
Mon, 30 Nov 2009 12:50:16 GMT

          From comp.compilers

Related articles
parent pointers in AST nodes eliben@gmail.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 zaimoni@zaimoni.com (Kenneth 'Bessarion' Boyd) (2009-11-27)
Re: parent pointers in AST nodes idbaxter@semdesigns.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 bartc@freeuk.com (bartc) (2009-11-30)
Re: parent pointers in AST nodes torbenm@diku.dk (2009-11-30)
Re: parent pointers in AST nodes kkylheku@gmail.com (Kaz Kylheku) (2009-12-01)
Re: parent pointers in AST nodes quinn_jackson2004@yahoo.ca (Quinn Tyler Jackson) (2009-12-01)
Re: parent pointers in AST nodes mwso@earthlink.net (Gary Oblock) (2009-12-14)
| List of all articles for this month |

From: "bartc" <bartc@freeuk.com>
Newsgroups: comp.compilers
Date: Mon, 30 Nov 2009 12:50:16 GMT
Organization: Compilers Central
References: 09-11-060
Keywords: AST
Posted-Date: 30 Nov 2009 23:52:23 EST

"eliben" <eliben@gmail.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
> well?


> 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.


> Against:
> * 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...)


--
Bartc



Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.