org.antlr.runtime.tree
Class BaseTree

java.lang.Object
  extended by org.antlr.runtime.tree.BaseTree
All Implemented Interfaces:
Tree
Direct Known Subclasses:
CommonTree, ParseTree, RemoteDebugEventSocketListener.ProxyTree

public abstract class BaseTree
extends java.lang.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
protected  java.util.List children
           
 
Fields inherited from interface org.antlr.runtime.tree.Tree
INVALID_NODE
 
Constructor Summary
BaseTree()
           
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 Summary
 void addChild(Tree t)
          Add t as child of this node.
 void addChildren(java.util.List kids)
          Add all elements of kids list as children of this node
protected  java.util.List createChildrenList()
          Override in a subclass to change the impl of children list
 java.lang.Object deleteChild(int i)
           
 void freshenParentAndChildIndexes()
          Set the parent and child index values for all child of t
 void freshenParentAndChildIndexes(int offset)
           
 Tree getAncestor(int ttype)
          Walk upwards and get first ancestor with this token type.
 java.util.List getAncestors()
          Return a list of all ancestors of this node.
 int getCharPositionInLine()
           
 Tree getChild(int i)
           
 int getChildCount()
           
 int getChildIndex()
          BaseTree doesn't track child indexes.
 java.util.List getChildren()
          Get the children internal List; note that if you directly mess with the list, do so at your own risk.
 Tree getFirstChildWithType(int type)
           
 int getLine()
          In case we don't have a token payload, what is the line for errors?
 Tree getParent()
          BaseTree doesn't track parent pointers.
 boolean hasAncestor(int ttype)
          Walk upwards looking for ancestor with this token type.
 boolean isNil()
          Indicates the node is a nil node but may still have children, meaning the tree is a flat list.
 void replaceChildren(int startChildIndex, int stopChildIndex, java.lang.Object t)
          Delete children from start to stop and replace with t even if t is a list (nil-root tree).
 void sanityCheckParentAndChildIndexes()
           
 void sanityCheckParentAndChildIndexes(Tree parent, int i)
           
 void setChild(int i, Tree t)
          Set ith child (0..n-1) to t; t must be non-null and non-nil node
 void setChildIndex(int index)
           
 void setParent(Tree t)
           
abstract  java.lang.String toString()
          Override to say how a node (not a tree) should look as text
 java.lang.String toStringTree()
          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
 

Field Detail

children

protected java.util.List children
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

getChild

public Tree getChild(int i)
Specified by:
getChild in interface Tree

getChildren

public java.util.List 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:
getChildCount in interface Tree

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.

Specified by:
addChild in interface Tree

addChildren

public void addChildren(java.util.List kids)
Add all elements of kids list as children of this node


setChild

public void setChild(int i,
                     Tree t)
Description copied from interface: Tree
Set ith child (0..n-1) to t; t must be non-null and non-nil node

Specified by:
setChild in interface Tree

deleteChild

public java.lang.Object deleteChild(int i)
Specified by:
deleteChild in interface Tree

replaceChildren

public void replaceChildren(int startChildIndex,
                            int stopChildIndex,
                            java.lang.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:
replaceChildren in interface Tree

createChildrenList

protected java.util.List createChildrenList()
Override in a subclass to change the impl of children list


isNil

public boolean isNil()
Description copied from interface: Tree
Indicates the node is a nil node but may still have children, meaning the tree is a flat list.

Specified by:
isNil in interface Tree

freshenParentAndChildIndexes

public void freshenParentAndChildIndexes()
Set the parent and child index values for all child of t

Specified by:
freshenParentAndChildIndexes in interface Tree

freshenParentAndChildIndexes

public void freshenParentAndChildIndexes(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:
getChildIndex in interface Tree

setChildIndex

public void setChildIndex(int index)
Specified by:
setChildIndex in interface Tree

getParent

public Tree getParent()
BaseTree doesn't track parent pointers.

Specified by:
getParent in interface Tree

setParent

public void setParent(Tree t)
Specified by:
setParent in interface Tree

hasAncestor

public boolean hasAncestor(int ttype)
Walk upwards looking for ancestor with this token type.

Specified by:
hasAncestor in interface Tree

getAncestor

public Tree getAncestor(int ttype)
Walk upwards and get first ancestor with this token type.

Specified by:
getAncestor in interface Tree

getAncestors

public java.util.List 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:
getAncestors in interface Tree

toStringTree

public java.lang.String toStringTree()
Print out a whole tree not just a node

Specified by:
toStringTree in interface Tree

getLine

public int getLine()
Description copied from interface: Tree
In case we don't have a token payload, what is the line for errors?

Specified by:
getLine in interface Tree

getCharPositionInLine

public int getCharPositionInLine()
Specified by:
getCharPositionInLine in interface Tree

toString

public abstract java.lang.String toString()
Override to say how a node (not a tree) should look as text

Specified by:
toString in interface Tree
Overrides:
toString in class java.lang.Object


Copyright © 2011. All Rights Reserved.