org.codehaus.groovy.syntax

## Class Reduction

- java.lang.Object
- - org.codehaus.groovy.syntax.CSTNode
  - - org.codehaus.groovy.syntax.Reduction

-     public class Reduction
      extends CSTNode

  A syntax reduction, produced by the `Parser`.
  Author:
    bob mcwhirter, Chris Poirier
  See Also:
    `Parser`, `Token`, `CSTNode`, `Types`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static Reduction` | `EMPTY`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Reduction(Token root)` Initializes the `Reduction` with the specified root.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `CSTNode` | `add(CSTNode element)` Adds an element to the node.
    `Reduction` | `asReduction()` Creates a `Reduction` from this node.
    `CSTNode` | `get(int index)` Returns the specified element, or null.
    `Token` | `getRoot()` Returns the root of the node, the Token that indicates it's type.
    `boolean` | `isAnExpression()` Returns true if the node is a complete expression.
    `boolean` | `isEmpty()` Returns true if the node is completely empty (no root, even).
    `void` | `markAsExpression()` Marks the node a complete expression.
    `static Reduction` | `newContainer()` Creates a new `Reduction` with `Token.NULL` as it's root.
    `CSTNode` | `remove(int index)` Removes a node from the `Reduction`.
    `CSTNode` | `set(int index, CSTNode element)` Sets an element in at the specified index.
    `int` | `size()` Returns the number of elements in the node.

    - ### Methods inherited from class org.codehaus.groovy.syntax.CSTNode

      `addChildrenOf, canMean, children, get, getDescription, getMeaning, getMeaningAs, getRoot, getRootText, getStartColumn, getStartLine, getType, hasChildren, isA, isAllOf, isOneOf, setMeaning, toString, write, write`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### EMPTY

          public static final Reduction EMPTY

  - ### Constructor Detail

    - #### Reduction

          public Reduction(Token root)

      Initializes the `Reduction` with the specified root.

  - ### Method Detail

    - #### newContainer

          public static Reduction newContainer()

      Creates a new `Reduction` with `Token.NULL` as it's root.

    - #### isEmpty

          public boolean isEmpty()

      Returns true if the node is completely empty (no root, even).
      Overrides:
        `isEmpty` in class `CSTNode`

    - #### size

          public int size()

      Returns the number of elements in the node.
      Specified by:
        `size` in class `CSTNode`

    - #### get

          public CSTNode get(int index)

      Returns the specified element, or null.
      Specified by:
        `get` in class `CSTNode`

    - #### getRoot

          public Token getRoot()

      Returns the root of the node, the Token that indicates it's type. Returns null if there is no root (usually only if the node is a placeholder of some kind -- see isEmpty()).
      Specified by:
        `getRoot` in class `CSTNode`

    - #### markAsExpression

          public void markAsExpression()

      Marks the node a complete expression.
      Overrides:
        `markAsExpression` in class `CSTNode`

    - #### isAnExpression

          public boolean isAnExpression()

      Returns true if the node is a complete expression.
      Overrides:
        `isAnExpression` in class `CSTNode`

    - #### add

          public CSTNode add(CSTNode element)

      Adds an element to the node.
      Overrides:
        `add` in class `CSTNode`

    - #### set

          public CSTNode set(int index,
                             CSTNode element)

      Sets an element in at the specified index.
      Overrides:
        `set` in class `CSTNode`

    - #### remove

          public CSTNode remove(int index)

      Removes a node from the `Reduction`. You cannot remove the root node (index 0).

    - #### asReduction

          public Reduction asReduction()

      Creates a `Reduction` from this node. Returns self if the node is already a `Reduction`.
      Specified by:
        `asReduction` in class `CSTNode`