- StudyBlue
- New York
- Syracuse University
- Computer Science
- Computer Science 554
- Waclawski
- SymbolTables.pdf
SymbolTables.pdf
Computer Science 554 with Waclawski at Syracuse University
About this note
By: Will Tan
Created: 2009-10-12
File Size: 12 page(s)
Views: 1
Created: 2009-10-12
File Size: 12 page(s)
Views: 1
About StudyBlue
STUDYBLUE makes things that make you better at school.
Things like online flashcards with photos and audio.
Things like personalized quizzes and friendly reminders about when (and what) to study next.
Think of it as a digital backpack™: access to all of your study materials online and on your phone.
STUDYBLUE exists to make studying efficient and effective for every student, for free. Join us.
“Simply amazing. The flash cards are smooth, there are many different types of studying tools, and there is a great search engine. I praise you on the awesomeness.”
Dennis
Dennis
Sign up (free) to study this.
1 Symbol Tables ? The job of the symbol table is to store all the names of the program and information about each name ? In block structured languages, roughly speaking, the symbol table collects information from declarations and uses that information whenever a name is used later in the program ? this information could be part of the syntax tree, but is put into a table for efficient access to names ? If there are different occurrences of the same name, the symbol table assists in name resolution ? Either the parser or the lexical analyzer can do the job of inserting names into the symbol table (as long as scope information is given to the lexer) ? Information can be added throughout compilation 2 Symbol Table Entries: Different types of names ? Variables (identifiers) ? character string (lexeme), may have limits on number of characters ? data type, ? storage class (if not already implied by the data type), ? name and lexical level of block in which it is declared, ? other access information, if necessary, such as modifiability constraints, ? base address and memory offset, after allocation ? Arrays ? Also needs number of dimensions ? Upper and lower bounds of each dimension ? Records and structures ? List of fields ? Information about each field ? Functions and Procedures ? Number and types of parameters, ? Type of return value 3 Symbol Table Representation ? The two main operations are ? Insert ( name ) makes an entry for this name ? Lookup ( name ) finds the relevant occurrence of the name by searching the table ? Lookups occur a lot more often than insert ? Hash tables most often chosen to represent symbol tables as they have good time complexity for lookup 0 1 5 9 Hash functionname 4 Scope Analysis ? The scope of a name is tied to the idea of a block in the programming language ? Standard blocks (statement sequences, sometimes if statement) ? Procedures and functions ? Program (global program level) ? Universe (predefined functions, etc.) ? Names must be unique within the block in which they are declared (no two objects with the same name in one block) ? There are some languages with exceptions for different types ? Name resolution: a use of a name should refer to the most local enclosing block that has a declaration for that name. 5 Declaration before Use? ? We are dealing primarily with languages in which there are declarations of names required ? Names of variables, constants, arrays, etc. must be declared before use ? Names of functions and procedures vary ? C requires functions and procedures to also be declared before use, or at least given a prototype ? Java does not require this for methods ? Scope of a name (in a statically scoped language): ? The scope of a constant, variable, array, etc. is from the end of its definition to the end of the block in which it is declared ? The scope of a function or procedure name ? In a declaration before use language: ? is from the beginning of its definition to the end of the block in which it is declared ? Allows recursive functions ? Otherwise the scope is the entire block in which it is declared 6 Level 2a Further Structure of Symbol Table ? For nested scopes, we may use lists of hash tables, with one element of the list for each scope ? The lookup function will first search the current lexical level table and then continue on up the list, using the first occurrence of the name that it finds a xc x c w x Level 3 Level 2b Level 1 Level 0 Parts of the table not currently active may be kept for future semantic analysis 7 More Symbol Table Functions ? In addition to lookup and insert, the symbol table will also need ? initializeScope (level) , when a block is entered to create a new hash table entry in the symbol table list ? finializeScope (level), on block exit put the current hash table into a background list ? Essentially makes a tree structure, where one child may be distinguised as the active block ? The symbol tables shown so far are all for the program being compiled, also needed is a way to look up names in the ?universe? ? System-defined names 8 Alternate Representation ? The lists of hash tables can be inefficient for lookup since the system has to search up the list of lexical levels ? More names tend to be declared at level 0, thus making the most common occurrence be the most expensive ? An optimization of the symbol table as lists of hash tables is to keep one giant hash table ? Within that table each name will have a list of occurrences identified by lexical level ? This representation keeps the (essentially) constant time lookup ? But makes leaving a block more expensive as hash table must be searched to find all entries that need to be removed and stored elsewhere 9 Static Scope ? The scoping system described so far assumes that the scope rules are for static scoping ? The static problem layout of enclosing blocks determines the scoping of a name ? There are also languages with dynamic scoping ? The scoping of a name depends on the call structure of the program at run-time ? The name resolution will be to the closest block on the call stack of a block with a declaration of that name ? the most recently called function or block 10 Object-Oriented Scoping ? Languages like Java must keep symbol tables for ? The code being compiled ? Any external classes that are known and referenced inside the code ? The inheritance hierarchy above the class containing the code ? One method of implementation is to attach a symbol table to each class with two nesting hierarchies ? One for lexical scoping inside individual methods ? One to follow the inheritance hierarchy of the class ? Resolving a name ? First consult the lexically scoped symbol table ? If not found, search the classes in the inheritance hierarchy ? If not found, search the global name space ? Consists of the current package and any imported packages 11 Testing and Error Recovery ? If a name is used, but the lookup fails to find any definition ? Give an error but enter the name with a dummy type information so that further uses do not also trigger errors ? If a name is defined twice, ? Give an ambiguity error, choose which type to use in later analysis, usually the first ? Testing cases ? Include all types of correct declarations ? Incorrect cases may include ? Definition of an ambiguous name ? Definition without a name ? Meaningless recursive definitions (in some types of structures) ? References to an undefined name 12 References ? Keith Cooper and Linda Torczon, Engineering a Compiler, Elsevier, 2004. ? Kenneth C. Louden, Compiler Construction: Principles and Practices, PWS Publishing, 1997. ? Per Brinch Hansen, On Pascal Compilers, Prentice-Hall, 1985. Out of print. ? Aho, Lam, Sethi, and Ullman, Compilers: Principles, Techniques, and Tools. Addison-Wesley, 2006. (The purple dragon book) nancy Microsoft PowerPoint - SymbolTables.ppt
Back
Next
About this note
By: Will Tan
Created: 2009-10-12
File Size: 12 page(s)
Views: 1
Created: 2009-10-12
File Size: 12 page(s)
Views: 1
About StudyBlue
STUDYBLUE makes things that make you better at school.
Things like online flashcards with photos and audio.
Things like personalized quizzes and friendly reminders about when (and what) to study next.
Think of it as a digital backpack™: access to all of your study materials online and on your phone.
STUDYBLUE exists to make studying efficient and effective for every student, for free. Join us.
“Simply amazing. The flash cards are smooth, there are many different types of studying tools, and there is a great search engine. I praise you on the awesomeness.”
Dennis
Dennis