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 Details

  • Constructor Details

    • 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 Details

    • getChild

      public Tree getChild(int i)
      Specified by:
      getChild in interface Tree
    • 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:
      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(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: Tree
      Set ith child (0..n-1) to t; t must be non-null and non-nil node
      Specified by:
      setChild in interface Tree
    • 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:
      deleteChild in interface Tree
    • 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:
      replaceChildren in interface Tree
    • createChildrenList

      protected List<Object> 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)
    • 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:
      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 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:
      getAncestors in interface Tree
    • toStringTree

      public 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 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 Object