Re: Maintaining scope while parsing C with a YACC grammar

Robert A Duff <bobduff@shell01.TheWorld.com>
Tue, 26 Apr 2011 12:22:45 -0400

          From comp.compilers

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]
| List of all articles for this month |

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]


Post a followup to this message

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