A Child-Sibling Tree.
A tree with PLUS at the root and with two children 3 and 4 is
structured as:
PLUS
|
3 -- 4
and can be specified easily in LISP notation as
(PLUS 3 4)
where every '(' starts a new subtree.
These trees are particular useful for translators because of
the flexibility of the children lists. They are also very easy
to walk automatically, whereas trees with specific children
reference fields can't easily be walked automatically.
This class contains the basic support for an AST.
Most people will create ASTs that are subclasses of
BaseAST or of CommonAST.
addChild
public void addChild(AST node)
Add a node to the end of the child list for this node
- addChild in interface AST
decode
public static String decode(String text)
encode
public static String encode(String text)
equals
public boolean equals(AST t)
Is node t equal to this in terms of token type and text?
- equals in interface AST
equalsList
public boolean equalsList(AST t)
Is t an exact structural and equals() match of this tree. The
'this' reference is considered the start of a sibling list.
- equalsList in interface AST
equalsListPartial
public boolean equalsListPartial(AST sub)
Is 'sub' a subtree of this list?
The siblings of the root are NOT ignored.
- equalsListPartial in interface AST
equalsTree
public boolean equalsTree(AST t)
Is tree rooted at 'this' equal to 't'? The siblings
of 'this' are ignored.
- equalsTree in interface AST
equalsTreePartial
public boolean equalsTreePartial(AST sub)
Is 't' a subtree of the tree rooted at 'this'? The siblings
of 'this' are ignored.
- equalsTreePartial in interface AST
findAll
public ASTEnumeration findAll(AST target)
Walk the tree looking for all exact subtree matches. Return
an ASTEnumerator that lets the caller walk the list
of subtree roots found herein.
- findAll in interface AST
findAllPartial
public ASTEnumeration findAllPartial(AST sub)
Walk the tree looking for all subtrees. Return
an ASTEnumerator that lets the caller walk the list
of subtree roots found herein.
- findAllPartial in interface AST
getColumn
public int getColumn()
- getColumn in interface AST
- 2.7.3 Need for error handling
getFirstChild
public AST getFirstChild()
Get the first child of this node; null if not children
- getFirstChild in interface AST
getLine
public int getLine()
- getLine in interface AST
- 2.7.3 Need for error handling
getNextSibling
public AST getNextSibling()
Get the next sibling in line after this one
- getNextSibling in interface AST
getNumberOfChildren
public int getNumberOfChildren()
How many children does this node have?
- getNumberOfChildren in interface AST
getText
public String getText()
Get the token text for this node
- getText in interface AST
getTokenNames
public static String[] getTokenNames()
Return an array of strings that maps token ID to it's text. @since 2.7.3
getType
public int getType()
Get the token type for this node
- getType in interface AST
initialize
public abstract void initialize(int t,
String txt)
- initialize in interface AST
removeChildren
public void removeChildren()
Remove all children
setFirstChild
public void setFirstChild(AST c)
Set the first child of a node.
- setFirstChild in interface AST
setNextSibling
public void setNextSibling(AST n)
Set the next sibling after this one.
- setNextSibling in interface AST
setText
public void setText(String text)
Set the token text for this node
- setText in interface AST
setType
public void setType(int ttype)
Set the token type for this node
- setType in interface AST
setVerboseStringConversion
public static void setVerboseStringConversion(boolean verbose,
String[] names)
toString
public String toString()
- toString in interface AST
toStringList
public String toStringList()
Print out a child-sibling tree in LISP notation
- toStringList in interface AST
xmlSerialize
public void xmlSerialize(Writer out)
throws IOException
xmlSerializeNode
public void xmlSerializeNode(Writer out)
throws IOException
xmlSerializeRootClose
public void xmlSerializeRootClose(Writer out)
throws IOException
xmlSerializeRootOpen
public void xmlSerializeRootOpen(Writer out)
throws IOException