Class CommonTree

java.lang.Object
org.antlr.runtime.tree.BaseTree
org.antlr.runtime.tree.CommonTree
All Implemented Interfaces:
Tree
Direct Known Subclasses:
CommonErrorNode, TreeWizard.TreePattern

public class CommonTree extends BaseTree
A tree node that is wrapper for a Token object. After 3.0 release while building tree rewrite stuff, it became clear that computing parent and child index is very difficult and cumbersome. Better to spend the space in every tree node. If you don't want these extra fields, it's easy to cut them out in your own BaseTree subclass.
  • Field Details

    • token

      public Token token
      A single token is the payload
    • startIndex

      protected int startIndex
      What token indexes bracket all tokens associated with this node and below?
    • stopIndex

      protected int stopIndex
      What token indexes bracket all tokens associated with this node and below?
    • parent

      public CommonTree parent
      Who is the parent node of this node; if null, implies node is root
    • childIndex

      public int childIndex
      What index is this node in the child list? Range: 0..n-1
  • Constructor Details

    • CommonTree

      public CommonTree()
    • CommonTree

      public CommonTree(CommonTree node)
    • CommonTree

      public CommonTree(Token t)
  • Method Details

    • getToken

      public Token getToken()
    • dupNode

      public Tree dupNode()
    • 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
      Overrides:
      isNil in class BaseTree
    • getType

      public int getType()
      Description copied from interface: Tree
      Return a token type; needed for tree parsing
    • getText

      public String getText()
    • 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
      Overrides:
      getLine in class BaseTree
    • getCharPositionInLine

      public int getCharPositionInLine()
      Specified by:
      getCharPositionInLine in interface Tree
      Overrides:
      getCharPositionInLine in class BaseTree
    • getTokenStartIndex

      public int getTokenStartIndex()
      Description copied from interface: Tree
      What is the smallest token index (indexing from 0) for this node and its children?
    • setTokenStartIndex

      public void setTokenStartIndex(int index)
    • getTokenStopIndex

      public int getTokenStopIndex()
      Description copied from interface: Tree
      What is the largest token index (indexing from 0) for this node and its children?
    • setTokenStopIndex

      public void setTokenStopIndex(int index)
    • setUnknownTokenBoundaries

      public void setUnknownTokenBoundaries()
      For every node in this subtree, make sure it's start/stop token's are set. Walk depth first, visit bottom up. Only updates nodes with at least one token index < 0.
    • getChildIndex

      public int getChildIndex()
      Description copied from class: BaseTree
      BaseTree doesn't track child indexes.
      Specified by:
      getChildIndex in interface Tree
      Overrides:
      getChildIndex in class BaseTree
    • getParent

      public Tree getParent()
      Description copied from class: BaseTree
      BaseTree doesn't track parent pointers.
      Specified by:
      getParent in interface Tree
      Overrides:
      getParent in class BaseTree
    • setParent

      public void setParent(Tree t)
      Specified by:
      setParent in interface Tree
      Overrides:
      setParent in class BaseTree
    • setChildIndex

      public void setChildIndex(int index)
      Specified by:
      setChildIndex in interface Tree
      Overrides:
      setChildIndex in class BaseTree
    • toString

      public String toString()
      Description copied from class: BaseTree
      Override to say how a node (not a tree) should look as text
      Specified by:
      toString in interface Tree
      Specified by:
      toString in class BaseTree