Class 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 Detail

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

      • CommonTree

        public CommonTree()
      • CommonTree

        public CommonTree​(CommonTree node)
      • CommonTree

        public CommonTree​(Token t)
    • Method Detail

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