|
|||||||||
| 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 | ||||||||