|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object minijava.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 Type
s 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 Visitor
visit
in class DepthFirstVisitor
public 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 Visitor
visit
in class DepthFirstVisitor
n
- the type nodepublic void visit(ClassDeclaration n)
DepthFirstVisitor
nodeToken -> "class" identifier -> Identifier() nodeToken1 -> "{" nodeListOptional -> ( VarDeclaration() )* nodeListOptional1 -> ( MethodDeclaration() )* nodeToken2 -> "}"
visit
in interface Visitor
visit
in class DepthFirstVisitor
public void visit(ClassExtendsDeclaration n)
DepthFirstVisitor
nodeToken -> "class" identifier -> Identifier() nodeToken1 -> "extends" identifier1 -> Identifier() nodeToken2 -> "{" nodeListOptional -> ( VarDeclaration() )* nodeListOptional1 -> ( MethodDeclaration() )* nodeToken3 -> "}"
visit
in interface Visitor
visit
in class DepthFirstVisitor
public void visit(VarDeclaration n)
DepthFirstVisitor
type -> Type() identifier -> Identifier() nodeToken -> ";"
visit
in interface Visitor
visit
in class DepthFirstVisitor
public 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 Visitor
visit
in class DepthFirstVisitor
public void visit(FormalParameter n)
DepthFirstVisitor
type -> Type() identifier -> Identifier()
visit
in interface Visitor
visit
in class DepthFirstVisitor
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |