[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Implementing identification on SableCC ASTs
The usual approach is to build a tree of symbol tables, e.g.:
- 1 outer scope (global variables) symbol table
- 1 symbol table for each inner scope which maintains a pointer
to its "parent" scope
You usually store a pointer from each block of code to its appropriate
Looking up a symbo goes recursively from the "current" symbol table
to its ancestors until a match is found.
You should look at the JJOOS example compiler (see Prof. Hendren's
cs520 course page http://www.sable.mcgill.ca/~hendren/520/).
To make your solution work, it would be necessary to
SymbolTable class that "remembers" everything. I.e.
when the so called
SemanticAnalyser class goes through the AST and
opens scopes, enters
identifiers and closes scopes - everything has to be
stored in the
Normally, the symbol table "forgets" about
identifiers declared in a
scope when the scope is closed.
You are totally right. I had forgotten about the local
scope variables as well as nested ones. I haven't
tried the HashMap technique, so I can't really comment
Etienne M. Gagnon, Ph.D. http://www.info.uqam.ca/~egagnon/