[antlr-interest] AST generation: EXPRESSION TREE example.
Bharath Sundararaman
bharath at starthis.com
Thu Jun 3 07:37:30 PDT 2004
Hi Monty,
I need the AST for semantic analysis, constant folding and also code
generation. To be more specific, I have written the grammar for a
PASCAL-like (not OO based) language, from scratch. Right now, my syntax
analysis is complete. Instead of having semantic analysis within the parser,
I would like to build an AST and and write a tree parser that will walk the
tree structure to perform various analyses. For example, to get a good idea
of what I'm dealing with, I'm starting off with type checking and this will
drive the structure of my AST.
- The AST will always be manipulated by the grammar.
- Comment tokens will be skipped.
Some questions:
1. Can you give me an example situation where I would need to preserve
formatting? In my grammar, I ignore whitespace, newlines, tabs and feeds.
What kind of language would require comments to be tokens?
2. Original possibly extraneous parenthesis -- I'm banging(!) all
punctuations and paranthesis from the AST. I'm not clear about your question
but I hope I gave the answer.
3. Are there any examples of how scope of variables can be checked by
walking an AST?
I will look at your C grammar, Java grammar and also PASCAL grammar to gain
more insight. I just stepped into the world of ASTs and I'm willing to help
with you with the AST guide in any way possible.
Thanks a bunch,
Bharath.
-----Original Message-----
From: Monty Zukowski [mailto:monty at codetransform.com]
Sent: Wednesday, June 02, 2004 11:33 PM
To: antlr-interest at yahoogroups.com
Cc: Monty Zukowski
Subject: Re: [antlr-interest] AST generation: EXPRESSION TREE example.
On Jun 2, 2004, at 2:58 PM, Bharath Sundararaman wrote:
> To generate
> an AST with a decent structure (based on my needs), my understanding
> is that
> I have to add qualifiers (^, !) to each rule and modify existing rules
> to
> make them AST friendly. Is this a cumbersome process?
Well, it can be. Loring and I were recently debating what makes a good
tree, and some of that ended up here a month or so ago in a dialog
between me and John Mitchell about the NULL node placeholder. I
believe the java grammar builds a tree, my C grammar is also a good
example. In my latest ANTLR contract I was building a SQL tree but I
had special considerations because everything had to be accessible from
an embedded language. I concluded that there are very many different
reasons for wanting a tree that will guide a strategy toward building
them.
So, are you doing source to source translation? Are you translating to
a different language, or to the same language (like my C toolkit does)?
Are you only building a tree for analysis? Are you building a tree to
be manipulated directly by raw code or will it always be manipulated by
a tree grammar (my recommendation.) Do you have to preserve
formatting? Comments? Original possibly extraneous parenthesis?
Let's work this through and maybe I can write up a guide for it when
I've got some "free" time.
Please, anybody join in and tell me what you're doing and let me know
what's worked for you and what hasn't and what your questions are.
I'll probably only get to this once or twice a day but hopefully we can
ferret out some real life questions and solutions over the next week or
so. I know we've got plenty of experts out there too. This is the
kind of stuff that will help shape ANTLR 3. Loring's got some amazing
tree integration stuff on the horizon but there is always a place for
understanding why people want trees and how to use them most
effectively.
Monty Zukowski
ANTLR & Java Consultant -- http://www.codetransform.com
ANSI C/GCC transformation toolkit --
http://www.codetransform.com/gcc.html
Embrace the Decay -- http://www.codetransform.com/EmbraceDecay.html
Yahoo! Groups Links
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/antlr-interest/
<*> To unsubscribe from this group, send an email to:
antlr-interest-unsubscribe at yahoogroups.com
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list