Related articles |
---|
[Q] How Is AST structured for entire program?? heliboy2003@yahoo.com.tw (2007-10-16) |
Re: [Q] How Is AST structured for entire program?? gneuner2@comcast.net (George Neuner) (2007-10-17) |
Re: [Q] How Is AST structured for entire program?? DrDiettrich1@aol.com (Hans-Peter Diettrich) (2007-10-17) |
Re: [Q] How Is AST structured for entire program?? cfc@shell01.TheWorld.com (Chris F Clark) (2007-10-18) |
Re: [Q] How Is AST structured for entire program?? paul@paulbmann.com (Paul B Mann) (2007-10-24) |
From: | Chris F Clark <cfc@shell01.TheWorld.com> |
Newsgroups: | comp.compilers |
Date: | Thu, 18 Oct 2007 09:12:38 -0400 |
Organization: | The World Public Access UNIX, Brookline, MA |
References: | 07-10-051 07-10-056 |
Keywords: | parse, AST, analysis |
Posted-Date: | 18 Oct 2007 15:19:23 EDT |
There is much good in George Neuner's response. I just want to
amplify some points he made.
1) An AST is usually abstract (throwing away unimportant details), but
a parse tree is also an AST (where the set of details thrown away
is empty).
2) A branch of tree is a tree. Thus, a tree can be constructed of the
entire program. Worth noting is that many modern tools (Yacc++,
JJTree, JTB, ANTLR, Cocktail, LALR, etc.) wiil [semi-]automatically
create an AST builder from a grammar. Even many relatively simple
modern tools can be told to create a parse tree from a grammar.
Thus, if you want your entire input in AST format, that is
relatively trivial to get.
3) An AST is not the only form of IR. Even if one keeps an AST form,
it is often abandoned close to the root, as a tree is not the
usually the most convenient form at that level. At the very top
level, the structure often looks like a dictionary, with one entry
per function or other globally visible name. Each function may be
represented as an AST as many languages have fairly tree structured
rules for composing expressions and statements. However, linked
lists of statements (rather than lines) are also popular, as are
control flow graphs. And, if you are serious about compilers, you
should learn SSA form (and perhaps triples and quadruples).
Which brings me to the last point I wanted to make, if I recall
correctly, one can learn most of this from Appel's compiler
construction book, (aka the Tiger book) which wasn't on my shelf for
quuting the exact title--must be loaned out. After reading that, read
Bob Morgan's compiler construction book and then Steve Muchnik's if you
want the "full treatment".
Hope this helps,
-Chris
*****************************************************************************
Chris Clark Internet : compres@world.std.com
Compiler Resources, Inc. Web Site : http://world.std.com/~compres
23 Bailey Rd voice : (508) 435-5016
Berlin, MA 01503 USA fax : (978) 838-0263 (24 hours)
Return to the
comp.compilers page.
Search the
comp.compilers archives again.