Package org.antlr.runtime.tree
Class BaseTree
- java.lang.Object
-
- org.antlr.runtime.tree.BaseTree
-
- All Implemented Interfaces:
Tree
- Direct Known Subclasses:
CommonTree,ParseTree,RemoteDebugEventSocketListener.ProxyTree
public abstract class BaseTree extends Object implements Tree
A generic tree implementation with no payload. You must subclass to actually have any user data. ANTLR v3 uses a list of children approach instead of the child-sibling approach in v2. A flat tree (a list) is an empty node whose children represent the list. An empty, but non-null node is called "nil".
-
-
Field Summary
Fields Modifier and Type Field Description protected List<Object>children-
Fields inherited from interface org.antlr.runtime.tree.Tree
INVALID_NODE
-
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidaddChild(Tree t)Add t as child of this node.voidaddChildren(List<? extends Tree> kids)Add all elements of kids list as children of this nodeprotected List<Object>createChildrenList()Override in a subclass to change the impl of children listObjectdeleteChild(int i)voidfreshenParentAndChildIndexes()Set the parent and child index values for all child of tvoidfreshenParentAndChildIndexes(int offset)voidfreshenParentAndChildIndexesDeeply()voidfreshenParentAndChildIndexesDeeply(int offset)TreegetAncestor(int ttype)Walk upwards and get first ancestor with this token type.List<? extends Tree>getAncestors()Return a list of all ancestors of this node.intgetCharPositionInLine()TreegetChild(int i)intgetChildCount()intgetChildIndex()BaseTree doesn't track child indexes.List<? extends Object>getChildren()Get the children internal List; note that if you directly mess with the list, do so at your own risk.TreegetFirstChildWithType(int type)intgetLine()In case we don't have a token payload, what is the line for errors?TreegetParent()BaseTree doesn't track parent pointers.booleanhasAncestor(int ttype)Walk upwards looking for ancestor with this token type.voidinsertChild(int i, Object t)Insert child t at child position i (0..n-1) by shifting children i+1..n-1 to the right one position.booleanisNil()Indicates the node is a nil node but may still have children, meaning the tree is a flat list.voidreplaceChildren(int startChildIndex, int stopChildIndex, Object t)Delete children from start to stop and replace with t even if t is a list (nil-root tree).voidsanityCheckParentAndChildIndexes()voidsanityCheckParentAndChildIndexes(Tree parent, int i)voidsetChild(int i, Tree t)Set ith child (0..n-1) to t; t must be non-null and non-nil nodevoidsetChildIndex(int index)voidsetParent(Tree t)abstract StringtoString()Override to say how a node (not a tree) should look as textStringtoStringTree()Print out a whole tree not just a node-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.antlr.runtime.tree.Tree
dupNode, getText, getTokenStartIndex, getTokenStopIndex, getType, setTokenStartIndex, setTokenStopIndex
-
-
-
-
Constructor Detail
-
BaseTree
public BaseTree()
-
BaseTree
public BaseTree(Tree node)
Create a new node from an existing node does nothing for BaseTree as there are no fields other than the children list, which cannot be copied as the children are not considered part of this node.
-
-
Method Detail
-
getChildren
public List<? extends Object> getChildren()
Get the children internal List; note that if you directly mess with the list, do so at your own risk.
-
getFirstChildWithType
public Tree getFirstChildWithType(int type)
-
getChildCount
public int getChildCount()
- Specified by:
getChildCountin interfaceTree
-
addChild
public void addChild(Tree t)
Add t as child of this node. Warning: if t has no children, but child does and child isNil then this routine moves children to t via t.children = child.children; i.e., without copying the array.
-
addChildren
public void addChildren(List<? extends Tree> kids)
Add all elements of kids list as children of this node
-
setChild
public void setChild(int i, Tree t)Description copied from interface:TreeSet ith child (0..n-1) to t; t must be non-null and non-nil node
-
insertChild
public void insertChild(int i, Object t)Insert child t at child position i (0..n-1) by shifting children i+1..n-1 to the right one position. Set parent / indexes properly but does NOT collapse nil-rooted t's that come in here like addChild.
-
deleteChild
public Object deleteChild(int i)
- Specified by:
deleteChildin interfaceTree
-
replaceChildren
public void replaceChildren(int startChildIndex, int stopChildIndex, Object t)Delete children from start to stop and replace with t even if t is a list (nil-root tree). num of children can increase or decrease. For huge child lists, inserting children can force walking rest of children to set their childindex; could be slow.- Specified by:
replaceChildrenin interfaceTree
-
createChildrenList
protected List<Object> createChildrenList()
Override in a subclass to change the impl of children list
-
isNil
public boolean isNil()
Description copied from interface:TreeIndicates the node is a nil node but may still have children, meaning the tree is a flat list.
-
freshenParentAndChildIndexes
public void freshenParentAndChildIndexes()
Set the parent and child index values for all child of t- Specified by:
freshenParentAndChildIndexesin interfaceTree
-
freshenParentAndChildIndexes
public void freshenParentAndChildIndexes(int offset)
-
freshenParentAndChildIndexesDeeply
public void freshenParentAndChildIndexesDeeply()
-
freshenParentAndChildIndexesDeeply
public void freshenParentAndChildIndexesDeeply(int offset)
-
sanityCheckParentAndChildIndexes
public void sanityCheckParentAndChildIndexes()
-
sanityCheckParentAndChildIndexes
public void sanityCheckParentAndChildIndexes(Tree parent, int i)
-
getChildIndex
public int getChildIndex()
BaseTree doesn't track child indexes.- Specified by:
getChildIndexin interfaceTree
-
setChildIndex
public void setChildIndex(int index)
- Specified by:
setChildIndexin interfaceTree
-
getParent
public Tree getParent()
BaseTree doesn't track parent pointers.
-
hasAncestor
public boolean hasAncestor(int ttype)
Walk upwards looking for ancestor with this token type.- Specified by:
hasAncestorin interfaceTree
-
getAncestor
public Tree getAncestor(int ttype)
Walk upwards and get first ancestor with this token type.- Specified by:
getAncestorin interfaceTree
-
getAncestors
public List<? extends Tree> getAncestors()
Return a list of all ancestors of this node. The first node of list is the root and the last is the parent of this node.- Specified by:
getAncestorsin interfaceTree
-
toStringTree
public String toStringTree()
Print out a whole tree not just a node- Specified by:
toStringTreein interfaceTree
-
getLine
public int getLine()
Description copied from interface:TreeIn case we don't have a token payload, what is the line for errors?
-
getCharPositionInLine
public int getCharPositionInLine()
- Specified by:
getCharPositionInLinein interfaceTree
-
-