java.lang.Object
com.voytechs.jnetstream.npl.Visitor
com.voytechs.jnetstream.codec.Linker
- public class Linker
- extends com.voytechs.jnetstream.npl.Visitor
|
Method Summary |
protected void |
exportProperty(java.lang.String name,
com.voytechs.jnetstream.npl.SymTable sym)
|
void |
link(com.voytechs.jnetstream.npl.NodeList block)
|
void |
linkHeaders(com.voytechs.jnetstream.npl.NodeList block)
|
void |
loadTypePrimitives()
|
static void |
main(java.lang.String[] args)
Test function for Linker |
void |
recordDefinitions(com.voytechs.jnetstream.npl.NodeList block)
traverses the top level nodes and records their
definitions in the SymTable. |
void |
resolveReferences(com.voytechs.jnetstream.npl.NodeList block)
|
void |
resolveTypes(com.voytechs.jnetstream.npl.NodeList block)
|
boolean |
traverse(com.voytechs.jnetstream.npl.AssertStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(com.voytechs.jnetstream.npl.ConstReferenceNode node,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(com.voytechs.jnetstream.npl.EnumReferenceNode node,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(com.voytechs.jnetstream.npl.EnumStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(com.voytechs.jnetstream.npl.FamilyStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(com.voytechs.jnetstream.npl.FieldStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(com.voytechs.jnetstream.npl.ForStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(com.voytechs.jnetstream.npl.HeaderStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(com.voytechs.jnetstream.npl.IfStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(com.voytechs.jnetstream.npl.LinkStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(com.voytechs.jnetstream.npl.MutableReferenceNode node,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(com.voytechs.jnetstream.npl.OpNode op,
java.lang.Object user1,
java.lang.Object user2)
Special OpNode traversal routine that records the last node visited. |
boolean |
traverse(com.voytechs.jnetstream.npl.PrintStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(com.voytechs.jnetstream.npl.PropertyStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(com.voytechs.jnetstream.npl.VariableStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
boolean |
traverse(com.voytechs.jnetstream.npl.WhileStatement stat,
java.lang.Object user1,
java.lang.Object user2)
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
debug
private static final boolean debug
- See Also:
- Constant Field Values
F_RECORD_SYMTABLE
private static final int F_RECORD_SYMTABLE
- See Also:
- Constant Field Values
F_LINK_TYPES
private static final int F_LINK_TYPES
- See Also:
- Constant Field Values
F_VARIABLE_REFERENCES
private static final int F_VARIABLE_REFERENCES
- See Also:
- Constant Field Values
F_LINK_HEADERS
private static final int F_LINK_HEADERS
- See Also:
- Constant Field Values
F_LINK_HEADERS_STAGE1
private static final int F_LINK_HEADERS_STAGE1
- See Also:
- Constant Field Values
F_LINK_HEADERS_STAGE2
private static final int F_LINK_HEADERS_STAGE2
- See Also:
- Constant Field Values
global
private com.voytechs.jnetstream.npl.SymTable global
packet
private com.voytechs.jnetstream.npl.SymTable packet
types
private com.voytechs.jnetstream.npl.SymTable types
stage
private int stage
defaultCandidate
private com.voytechs.jnetstream.npl.StatementContainer defaultCandidate
symTables
private java.util.Hashtable symTables
Linker
public Linker(com.voytechs.jnetstream.npl.SymTable sym)
link
public void link(com.voytechs.jnetstream.npl.NodeList block)
throws com.voytechs.jnetstream.npl.NodeException
resolveTypes
public void resolveTypes(com.voytechs.jnetstream.npl.NodeList block)
throws com.voytechs.jnetstream.npl.NodeException
resolveReferences
public void resolveReferences(com.voytechs.jnetstream.npl.NodeList block)
throws com.voytechs.jnetstream.npl.NodeException
linkHeaders
public void linkHeaders(com.voytechs.jnetstream.npl.NodeList block)
throws com.voytechs.jnetstream.npl.NodeException
exportProperty
protected void exportProperty(java.lang.String name,
com.voytechs.jnetstream.npl.SymTable sym)
recordDefinitions
public void recordDefinitions(com.voytechs.jnetstream.npl.NodeList block)
throws com.voytechs.jnetstream.npl.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.
loadTypePrimitives
public void loadTypePrimitives()
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.FamilyStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.HeaderStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.FieldStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.AssertStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.LinkStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.MutableReferenceNode node,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.VariableStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.ConstReferenceNode node,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.EnumReferenceNode node,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.OpNode op,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
- Special OpNode traversal routine that records the last node visited.
traverse
public boolean traverse(com.voytechs.jnetstream.npl.IfStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.ForStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.WhileStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.PrintStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.EnumStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
traverse
public boolean traverse(com.voytechs.jnetstream.npl.PropertyStatement stat,
java.lang.Object user1,
java.lang.Object user2)
throws com.voytechs.jnetstream.npl.NodeException
main
public static void main(java.lang.String[] args)
- Test function for Linker