CSCE 434 Lecture 17

From Notes
Jump to navigation Jump to search

« previous | Wednesday, October 2, 2013 | next »


Recording Types

Symbol Table

A symbol table is basically a stack of maps from identifiers to their declarations

  • Adding Declarations: new entry in map at top of stack
  • Adding Scopes: new map at top of stack
  • Lookup: check top. If not found, check down stack


Program
    : DeclList
        {
            $$ = new Program($1);
            $$->check();
        }
    ;

Every node should know how to check itself.

Type-checking happens depth-first traversal:

parse tree for "x*3 + y - j/7"

expr (+) : int -> int -> int
|-- expr (*) : int -> int -> int
|   |-- x -> lookup
|   `-- 3 : int
`-- expr (-) : int -> int -> int
    |-- y -> lookup
    `-- expr (/) : int -> int -> int
        |-- j -> lookup
        `-- 7 : int