Package: org.codehaus.groovy.syntax

## [Java] Class Reduction

- org.codehaus.groovy.syntax.Reduction

- A syntax reduction, produced by the `Parser`.

  See Also:
    antlr.Parser
    Token
    CSTNode
    Types
  Authors:
    bob mcwhirter
    Chris Poirier

- - ### Field Summary

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `static Reduction` | `EMPTY` |

  - ### Constructor Summary

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

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name 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.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class CSTNode` | `add, addChildrenOf, asReduction, canMean, children, get, get, getDescription, getMeaning, getMeaningAs, getRoot, getRoot, getRootText, getStartColumn, getStartLine, getType, hasChildren, isA, isAllOf, isAnExpression, isEmpty, isOneOf, markAsExpression, set, setMeaning, size, toString, write, write`
    `class Object` | `equals, toString, hashCode, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### public static final Reduction EMPTY

  - ### Constructor Detail

    - #### public Reduction(Token root)

      Initializes the `Reduction` with the specified root.

  - ### Method Detail

    - #### public CSTNode add(CSTNode element)

      Adds an element to the node.

    - #### public Reduction asReduction()

      Creates a `Reduction` from this node. Returns self if the node is already a `Reduction`.

    - #### public CSTNode get(int index)

      Returns the specified element, or null.

    - #### 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()).

    - #### public boolean isAnExpression()

      Returns true if the node is a complete expression.

    - #### public boolean isEmpty()

      Returns true if the node is completely empty (no root, even).

    - #### public void markAsExpression()

      Marks the node a complete expression.

    - #### public static Reduction newContainer()

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

    - #### public CSTNode remove(int index)

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

    - #### public CSTNode set(int index, CSTNode element)

      Sets an element in at the specified index.

    - #### public int size()

      Returns the number of elements in the node.