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

Version:
  $Id: Reduction.java 7922 2007-09-04 01:42:57Z paulk $
Author:
  bob mcwhirter, Chris Poirier
See Also:
  `Parser`, `Token`, `CSTNode`, `Types`

### Field Summary

Fields
`static Reduction` `EMPTY`

### Constructor Summary

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

### Method Summary

Methods
`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`