Related articles |
---|
Maintaining scope while parsing C with a YACC grammar eliben@gmail.com (eliben) (2011-04-25) |
Re: Maintaining scope while parsing C with a YACC grammar bobduff@shell01.TheWorld.com (Robert A Duff) (2011-04-26) |
Re: Maintaining scope while parsing C with a YACC grammar bobduff@shell01.TheWorld.com (Robert A Duff) (2011-04-26) |
Re: Maintaining scope while parsing C with a YACC grammar eliben@gmail.com (eliben) (2011-04-28) |
Re: Maintaining scope while parsing C with a YACC grammar bobduff@shell01.TheWorld.com (Robert A Duff) (2011-05-02) |
Re: Maintaining scope while parsing C with a YACC grammar torbenm@diku.dk (2011-05-03) |
Re: Maintaining scope while parsing C with a YACC grammar paul@paulbmann.com (Paul B Mann) (2011-05-06) |
Re: Maintaining scope while parsing C with a YACC grammar idbaxter@semdesigns.com (Ira Baxter) (2011-05-13) |
[1 later articles] |
From: | Robert A Duff <bobduff@shell01.TheWorld.com> |
Newsgroups: | comp.compilers |
Date: | Tue, 26 Apr 2011 12:22:45 -0400 |
Organization: | The World Public Access UNIX, Brookline, MA |
References: | 11-04-036 |
Keywords: | parse, symbols, comment |
Posted-Date: | 26 Apr 2011 13:05:37 EDT |
eliben <eliben@gmail.com> writes:
> [There's a couple of possibilities. One is to add separate rules for
> the open and close braces with action code that increments and
> decrements the nesting level, so you know when you reduce the
> declaration what scope it is in. Another is to parse the whole thing
> into an AST without trying to interpret the symbols other than making
> pointers to a generic symbol table entry per name, then walk the AST
> and add the scope and type info. Perhaps people will have other
> suggestions. -John]
I strongly recommend the "build a tree" solution. It might seem like
a lot of trouble at first, but it will simplify things in the long
run.
Do all the interesting work during a subsequent walk of the tree. Or
multiple walks.
I'd do the "making pointers to a generic symbol table..." part during
the tree walk, too, except that C requires some sort of kludgery to
deal with typedefs.
- Bob
[The point of the generic symbol table stuff is that you have to remember the
names somehow, and that seems less awful than doing a strdup() for each
name and hanging the strings off the AST. -John]
Return to the
comp.compilers page.
Search the
comp.compilers archives again.