[antlr-interest] Re: declarations after code
micheal_jor
open.zone at virgin.net
Tue Nov 23 01:51:08 PST 2004
--- In antlr-interest at yahoogroups.com, "Maassen, H.A.M."
<H.A.M.Maassen at s...> wrote:
> Hello,
>
> I'm in a bit of a fix :)
>
> I'm currently writing a parser for a language that can have
variables declared after the code where they are used. In addition,
the language is ambiguous depending on the types of the variables.
>
> For example, the following code results in two different trees
depending on the types of the variables "a", "b" and "c":
>
> Code
> a b c
>
> Here, "a" could be a function that takes "b" and "c" as parameters
or "a", "b" and "c" could each be separate functions (the language has
no statement-separator).
>
> It looks like I'll have to do two passes over the code, once to get
all the variable types and once to parse the statements (and then a
treewalk for full blown semantic checks).
>
> Can anyone think of a cleaner solution to this problem?
Tree parsers, multiple phases and a symbol table.
- Parse the source (entering declarations into the table as you) and
build an AST
- Walk the AST and use the symtab info to restructure your tree (your
symtab already has info about all declarations you will encounter)
- Walk the AST again and do your full blown semantics check
You can write more complex code that would reduce this to a single
post-parse AST traversal in many cases by recording (during the parse)
the AST subtrees that need fixing. Fix before the full semantic checks.
Cheers!
Micheal
ANTLR/C#
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