Class CSTNode

java.lang.Object
org.codehaus.groovy.syntax.CSTNode
Direct Known Subclasses:
Reduction, Token

public abstract class CSTNode extends Object
An abstract base class for nodes in the concrete syntax tree that is the result of parsing. Note that the CSTNode is inextricably linked with the Token in that every CSTNode has a Token as its root.
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    add(CSTNode element)
    Adds an element to the node.
    void
    Adds all children of the specified node to this one.
    abstract Reduction
    Creates a Reduction from this node.
    boolean
    canMean(int type)
    Returns true if the node can be coerced to the specified type.
    int
    Returns the number of non-root elements in the node.
    abstract CSTNode
    get(int index)
    Returns the specified element, or null.
    get(int index, boolean safe)
    Returns the specified element, or Token.NULL if safe is set and the specified element is null (or doesn't exist).
    Returns a description of the node.
    int
    Returns the meaning of this node.
    int
    getMeaningAs(int[] types)
    Returns the first matching meaning of the specified types.
    abstract Token
    Returns the root of the node.
    getRoot(boolean safe)
    Returns the root of the node, the Token that indicates its type.
    Returns the text of the root.
    int
    Returns the starting column of the node.
    int
    Returns the starting line of the node.
    int
    Returns the actual type of the node.
    boolean
    Returns true if the node has any non-root elements.
    boolean
    isA(int type)
    Returns true if the node's meaning matches the specified type.
    boolean
    isAllOf(int[] types)
    Returns true if the node's meaning matches all of the specified types.
    boolean
    Returns true if the node is a complete expression.
    boolean
    Returns true if the node is completely empty (no root, even).
    boolean
    isOneOf(int[] types)
    Returns true if the node's meaning matches any of the specified types.
    void
    Marks the node a complete expression.
    set(int index, CSTNode element)
    Sets an element node in at the specified index.
    setMeaning(int meaning)
    Sets the meaning for this node (and its root Token).
    abstract int
    Returns the number of elements in the node (including root).
    Formats the node as a String and returns it.
    void
    Formats the node and writes it to the specified Writer.
    protected void
    write(PrintWriter writer, String indent)
    Formats the node and writes it to the specified Writer.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • CSTNode

      public CSTNode()
  • Method Details

    • getMeaning

      public int getMeaning()
      Returns the meaning of this node. If the node isEmpty(), returns the type of Token.NULL.
    • setMeaning

      public CSTNode setMeaning(int meaning)
      Sets the meaning for this node (and its root Token). Not valid if the node isEmpty(). Returns the node, for convenience.
    • getType

      public int getType()
      Returns the actual type of the node. If the node isEmpty(), returns the type of Token.NULL.
    • canMean

      public boolean canMean(int type)
      Returns true if the node can be coerced to the specified type.
    • isA

      public boolean isA(int type)
      Returns true if the node's meaning matches the specified type.
    • isOneOf

      public boolean isOneOf(int[] types)
      Returns true if the node's meaning matches any of the specified types.
    • isAllOf

      public boolean isAllOf(int[] types)
      Returns true if the node's meaning matches all of the specified types.
    • getMeaningAs

      public int getMeaningAs(int[] types)
      Returns the first matching meaning of the specified types. Returns Types.UNKNOWN if there are no matches.
    • isEmpty

      public boolean isEmpty()
      Returns true if the node is completely empty (no root, even).
    • size

      public abstract int size()
      Returns the number of elements in the node (including root).
    • hasChildren

      public boolean hasChildren()
      Returns true if the node has any non-root elements.
    • children

      public int children()
      Returns the number of non-root elements in the node.
    • get

      public abstract CSTNode get(int index)
      Returns the specified element, or null.
    • get

      public CSTNode get(int index, boolean safe)
      Returns the specified element, or Token.NULL if safe is set and the specified element is null (or doesn't exist).
    • getRoot

      public abstract Token getRoot()
      Returns the root of the node. By convention, all nodes have a Token as the first element (or root), which indicates the type of the node. May return null if the node isEmpty().
    • getRoot

      public Token getRoot(boolean safe)
      Returns the root of the node, the Token that indicates its type. Returns a Token.NULL if safe and the actual root is null.
    • getRootText

      public String getRootText()
      Returns the text of the root. Uses getRoot(true) to get the root, so you will only receive null in return if the root token returns it.
    • getDescription

      public String getDescription()
      Returns a description of the node.
    • getStartLine

      public int getStartLine()
      Returns the starting line of the node. Returns -1 if not known.
    • getStartColumn

      public int getStartColumn()
      Returns the starting column of the node. Returns -1 if not known.
    • markAsExpression

      public void markAsExpression()
      Marks the node a complete expression. Not all nodes support this operation!
    • isAnExpression

      public boolean isAnExpression()
      Returns true if the node is a complete expression.
    • add

      public CSTNode add(CSTNode element)
      Adds an element to the node. Returns the element for convenience. Not all nodes support this operation!
    • addChildrenOf

      public void addChildrenOf(CSTNode of)
      Adds all children of the specified node to this one. Not all nodes support this operation!
    • set

      public CSTNode set(int index, CSTNode element)
      Sets an element node in at the specified index. Returns the element for convenience. Not all nodes support this operation!
    • asReduction

      public abstract Reduction asReduction()
      Creates a Reduction from this node. Returns self if the node is already a Reduction.
    • toString

      public String toString()
      Formats the node as a String and returns it.
      Overrides:
      toString in class Object
    • write

      public void write(PrintWriter writer)
      Formats the node and writes it to the specified Writer.
    • write

      protected void write(PrintWriter writer, String indent)
      Formats the node and writes it to the specified Writer. The indent is prepended to each output line, and is increased for each recursion.