com.voytechs.jnetstream.codec
Class Linker
java.lang.Object
com.voytechs.jnetstream.npl.Visitor
com.voytechs.jnetstream.codec.Linker
- All Implemented Interfaces:
- ProtocolLinker
public class Linker
- extends Visitor
- implements ProtocolLinker
Linker for NPL AST tree. Links all the variable references.
|
Field Summary |
boolean |
debug
|
|
Method Summary |
protected void |
exportProperty(java.lang.String name,
SymTable sym)
|
NodeList |
getAST()
Returns the root of the AST. |
java.lang.String |
getDefaultCandidate()
|
SymTable |
getGlobalSymTable()
|
SymTable |
getPacketSymTable()
|
SymTable |
getTypesSymTable()
|
void |
link(NodeList block)
|
void |
linkHeaders(NodeList block)
|
void |
linkProtocol(Protocol protocol)
|
void |
linkProtocolBinding(Protocol proto)
|
void |
loadTypePrimitives()
|
void |
recordDefinitions(NodeList block)
traverses the top level nodes and records their
definitions in the SymTable. |
void |
resolveReferences(NodeList block)
|
void |
resolveReferences(NodeList block,
SymTable table)
|
void |
resolveTypes(NodeList block)
|
boolean |
traverse(AssertStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(BufferStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(ConstReferenceNode node,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(EnumReferenceNode node,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(EnumStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(FamilyStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(FieldStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(FlowentryStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(FlowkeyStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(ForStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(HeaderStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(IfStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(LinkStatement stat,
java.lang.Object user1,
java.lang.Object user2)
Process the "link" NPL statement by linking protocol headers. |
boolean |
traverse(MutableReferenceNode node,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(OpNode op,
java.lang.Object user1,
java.lang.Object user2)
Special OpNode traversal routine that records the last node visited. |
boolean |
traverse(PrintStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(ProcessStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(PropertyStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(VariableStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(WhileStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
void |
unLinkProtocolBinding(ProtocolBinding binding)
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
debug
public boolean debug
Linker
public Linker()
- Parameters:
-
- Throws:
link
public void link(NodeList block)
throws NodeException
- Throws:
NodeException
resolveTypes
public void resolveTypes(NodeList block)
throws NodeException
- Throws:
NodeException
resolveReferences
public void resolveReferences(NodeList block)
throws NodeException
- Throws:
NodeException
resolveReferences
public void resolveReferences(NodeList block,
SymTable table)
throws NodeException
- Throws:
NodeException
linkHeaders
public void linkHeaders(NodeList block)
throws NodeException
- Throws:
NodeException
exportProperty
protected void exportProperty(java.lang.String name,
SymTable sym)
recordDefinitions
public void recordDefinitions(NodeList block)
throws NodeException
- traverses the top level nodes and records their
definitions in the SymTable. Only statement are
expected at this level. If any non-statement nodes
ie. expression are found, an error message is reported.
- Throws:
NodeException
loadTypePrimitives
public void loadTypePrimitives()
throws NodeException
- Throws:
NodeException
getAST
public NodeList getAST()
- Returns the root of the AST.
traverse
public boolean traverse(FamilyStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(HeaderStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(FieldStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(AssertStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(BufferStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(FlowkeyStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(FlowentryStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(ProcessStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(LinkStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Process the "link" NPL statement by linking protocol headers.
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(MutableReferenceNode node,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(VariableStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(ConstReferenceNode node,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(EnumReferenceNode node,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(OpNode op,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Special OpNode traversal routine that records the last node visited.
- Overrides:
traverse in class Visitor
- Parameters:
op - OpNode to be traversed.user1 - Depends at what stage of linking. Usually SymTable.user2 - Parent node that called this.
- Throws:
NodeException
traverse
public boolean traverse(IfStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(ForStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(WhileStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(PrintStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(EnumStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
traverse
public boolean traverse(PropertyStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws NodeException
- Overrides:
traverse in class Visitor
- Throws:
NodeException
getDefaultCandidate
public java.lang.String getDefaultCandidate()
- Returns:
- Returns the defaultCandidate.
linkProtocol
public void linkProtocol(Protocol protocol)
throws NodeException
- Specified by:
linkProtocol in interface ProtocolLinker
- Throws:
NodeException
linkProtocolBinding
public void linkProtocolBinding(Protocol proto)
throws ProtocolBindingException
- Specified by:
linkProtocolBinding in interface ProtocolLinker
- Throws:
ProtocolBindingException
getGlobalSymTable
public SymTable getGlobalSymTable()
- Returns:
- Returns the globalSymTable.
getPacketSymTable
public SymTable getPacketSymTable()
- Returns:
- Returns the packetSymTable.
getTypesSymTable
public SymTable getTypesSymTable()
- Returns:
- Returns the typesSymTable.
unLinkProtocolBinding
public void unLinkProtocolBinding(ProtocolBinding binding)
- Specified by:
unLinkProtocolBinding in interface ProtocolLinker