| 
 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectminijava.visitor.DepthFirstVisitor
minijava.symtable.SymbolTableBuilder
public class SymbolTableBuilder
This class defines a visitor that traverses a MiniJava program's syntax
 tree and generates a SymbolTable that maps symbolic identifiers
 to Types at the top level (that is, class types).
SymbolTable, 
Symbol, 
Type| Constructor Summary | |
|---|---|
| SymbolTableBuilder() | |
| Method Summary | |
|---|---|
|  SymbolTable<Type> | getSymbolTable() | 
|  void | visit(ClassDeclaration n)nodeToken -> "class" identifier -> Identifier() nodeToken1 -> "{" nodeListOptional -> ( VarDeclaration() )* nodeListOptional1 -> ( MethodDeclaration() )* nodeToken2 -> "}" | 
|  void | visit(ClassExtendsDeclaration n)nodeToken -> "class" identifier -> Identifier() nodeToken1 -> "extends" identifier1 -> Identifier() nodeToken2 -> "{" nodeListOptional -> ( VarDeclaration() )* nodeListOptional1 -> ( MethodDeclaration() )* nodeToken3 -> "}" | 
|  void | visit(FormalParameter n)type -> Type() identifier -> Identifier() | 
|  void | visit(Goal n)Inserts class identifiers into the symbol table first (forward declaration). | 
|  void | visit(MainClass n)nodeToken -> "class" identifier -> Identifier() nodeToken1 -> "{" nodeToken2 -> "public" nodeToken3 -> "static" nodeToken4 -> "void" nodeToken5 -> "main" nodeToken6 -> "(" nodeToken7 -> "String" nodeToken8 -> "[" nodeToken9 -> "]" identifier1 -> Identifier() nodeToken10 -> ")" nodeToken11 -> "{" nodeListOptional -> ( VarDeclaration() )* nodeListOptional1 -> ( Statement() )* nodeToken12 -> "}" nodeToken13 -> "}" | 
|  void | visit(MethodDeclaration n)nodeToken -> "public" type -> Type() identifier -> Identifier() nodeToken1 -> "(" nodeOptional -> ( FormalParameterList() )? nodeToken2 -> ")" nodeToken3 -> "{" nodeListOptional -> ( VarDeclaration() )* nodeListOptional1 -> ( Statement() )* nodeToken4 -> "return" expression -> Expression() nodeToken5 -> ";" nodeToken6 -> "}" | 
|  void | visit(VarDeclaration n)type -> Type() identifier -> Identifier() nodeToken -> ";" | 
| Methods inherited from class minijava.visitor.DepthFirstVisitor | 
|---|
| visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit | 
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Constructor Detail | 
|---|
public SymbolTableBuilder()
| Method Detail | 
|---|
public SymbolTable<Type> getSymbolTable()
public void visit(MainClass n)
DepthFirstVisitor
 nodeToken -> "class"
 identifier -> Identifier()
 nodeToken1 -> "{"
 nodeToken2 -> "public"
 nodeToken3 -> "static"
 nodeToken4 -> "void"
 nodeToken5 -> "main"
 nodeToken6 -> "("
 nodeToken7 -> "String"
 nodeToken8 -> "["
 nodeToken9 -> "]"
 identifier1 -> Identifier()
 nodeToken10 -> ")"
 nodeToken11 -> "{"
 nodeListOptional -> ( VarDeclaration() )*
 nodeListOptional1 -> ( Statement() )*
 nodeToken12 -> "}"
 nodeToken13 -> "}"
 
visit in interface Visitorvisit in class DepthFirstVisitorpublic void visit(Goal n)
visit(minijava.syntaxtree.ClassDeclaration)
 and
 visit(minijava.syntaxtree.ClassExtendsDeclaration)
 should assume that a binding of identifier to class object has already
 been made.
visit in interface Visitorvisit in class DepthFirstVisitorn - the type nodepublic void visit(ClassDeclaration n)
DepthFirstVisitor
 nodeToken -> "class"
 identifier -> Identifier()
 nodeToken1 -> "{"
 nodeListOptional -> ( VarDeclaration() )*
 nodeListOptional1 -> ( MethodDeclaration() )*
 nodeToken2 -> "}"
 
visit in interface Visitorvisit in class DepthFirstVisitorpublic void visit(ClassExtendsDeclaration n)
DepthFirstVisitor
 nodeToken -> "class"
 identifier -> Identifier()
 nodeToken1 -> "extends"
 identifier1 -> Identifier()
 nodeToken2 -> "{"
 nodeListOptional -> ( VarDeclaration() )*
 nodeListOptional1 -> ( MethodDeclaration() )*
 nodeToken3 -> "}"
 
visit in interface Visitorvisit in class DepthFirstVisitorpublic void visit(VarDeclaration n)
DepthFirstVisitortype -> Type() identifier -> Identifier() nodeToken -> ";"
visit in interface Visitorvisit in class DepthFirstVisitorpublic void visit(MethodDeclaration n)
DepthFirstVisitor
 nodeToken -> "public"
 type -> Type()
 identifier -> Identifier()
 nodeToken1 -> "("
 nodeOptional -> ( FormalParameterList() )?
 nodeToken2 -> ")"
 nodeToken3 -> "{"
 nodeListOptional -> ( VarDeclaration() )*
 nodeListOptional1 -> ( Statement() )*
 nodeToken4 -> "return"
 expression -> Expression()
 nodeToken5 -> ";"
 nodeToken6 -> "}"
 
visit in interface Visitorvisit in class DepthFirstVisitorpublic void visit(FormalParameter n)
DepthFirstVisitortype -> Type() identifier -> Identifier()
visit in interface Visitorvisit in class DepthFirstVisitor| 
 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||