org.codehaus.groovy.syntax

## Class Token

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

    public class Token
    extends CSTNode

A `CSTNode` produced by the `Lexer`.

Author:
  bob mcwhirter, Chris Poirier
See Also:
  `Parser`, `Token`, `Reduction`, `Types`

### Field Summary

Fields
`static Token` `EOF`
`static Token` `NULL`

### Constructor Summary

Constructors
Constructor and Description
`Token(int type, java.lang.String text, int startLine, int startColumn)` Initializes the Token with the specified information.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`Reduction` `asReduction()` Creates a `Reduction` from this token.
`Reduction` `asReduction(CSTNode second)` Creates a `Reduction` from this token, adding the supplied node as the second element.
`Reduction` `asReduction(CSTNode second, CSTNode third)` Creates a `Reduction` from this token, adding the supplied nodes as the second and third element, respectively.
`Reduction` `asReduction(CSTNode second, CSTNode third, CSTNode fourth)` Creates a `Reduction` from this token, adding the supplied nodes as the second, third, and fourth element, respectively.
`Token` `dup()` Returns a copy of this Token.
`CSTNode` `get(int index)` Returns the specified element, or null.
`int` `getMeaning()` Returns the meaning of this node.
`Token` `getRoot()` Returns the root of the node.
`java.lang.String` `getRootText()` Returns the text of the root node.
`int` `getStartColumn()` Returns the starting column of the node.
`int` `getStartLine()` Returns the starting line of the node.
`java.lang.String` `getText()` Returns the text of the token.
`int` `getType()` Returns the actual type of the node.
`static Token` `newDecimal(java.lang.String text, int startLine, int startColumn)` Creates a token that represents a decimal number.
`static Token` `newIdentifier(java.lang.String text, int startLine, int startColumn)` Creates a token that represents an identifier.
`static Token` `newInteger(java.lang.String text, int startLine, int startColumn)` Creates a token that represents an integer.
`static Token` `newKeyword(java.lang.String text, int startLine, int startColumn)` Creates a token that represents a keyword.
`static Token` `newPlaceholder(int type)` Creates a token with the specified meaning.
`static Token` `newString(java.lang.String text, int startLine, int startColumn)` Creates a token that represents a double-quoted string.
`static Token` `newSymbol(int type, int startLine, int startColumn)` Creates a token that represents a symbol, using a library for the text.
`static Token` `newSymbol(java.lang.String type, int startLine, int startColumn)` Creates a token that represents a symbol, using a library for the type.
`CSTNode` `setMeaning(int meaning)` Sets the meaning for this node (and it's root Token).
`void` `setText(java.lang.String text)` Not advisable, but if you need to adjust the token's text, this will do it.
`int` `size()` Returns the number of elements in the node (including root).

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

`add, addChildrenOf, canMean, children, get, getDescription, getMeaningAs, getRoot, hasChildren, isA, isAllOf, isAnExpression, isEmpty, isOneOf, markAsExpression, set, toString, write, write`

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

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

### Field Detail

#### NULL

    public static final Token NULL

#### EOF

    public static final Token EOF

### Constructor Detail

#### Token

    public Token(int type,
                 java.lang.String text,
                 int startLine,
                 int startColumn)

Initializes the Token with the specified information.

### Method Detail

#### dup

    public Token dup()

Returns a copy of this Token.

#### getMeaning

    public int getMeaning()

Returns the meaning of this node. If the node isEmpty(), returns the type of Token.NULL.

Overrides:
  `getMeaning` in class `CSTNode`

#### setMeaning

    public CSTNode setMeaning(int meaning)

Sets the meaning for this node (and it's root Token). Not valid if the node isEmpty(). Returns this token, for convenience.

Overrides:
  `setMeaning` in class `CSTNode`

#### getType

    public int getType()

Returns the actual type of the node. If the node isEmpty(), returns the type of Token.NULL.

Overrides:
  `getType` in class `CSTNode`

#### size

    public int size()

Returns the number of elements in the node (including root).

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

Specified by:
  `getRoot` in class `CSTNode`

#### getRootText

    public java.lang.String getRootText()

Returns the text of the root node. Uses `getRoot(true)` to get the root, so you will only receive null in return if the root token returns it.

Overrides:
  `getRootText` in class `CSTNode`

#### getText

    public java.lang.String getText()

Returns the text of the token. Equivalent to `getRootText()` when called directly.

#### setText

    public void setText(java.lang.String text)

Not advisable, but if you need to adjust the token's text, this will do it.

#### getStartLine

    public int getStartLine()

Returns the starting line of the node. Returns -1 if not known.

Overrides:
  `getStartLine` in class `CSTNode`

#### getStartColumn

    public int getStartColumn()

Returns the starting column of the node. Returns -1 if not known.

Overrides:
  `getStartColumn` in class `CSTNode`

#### asReduction

    public Reduction asReduction()

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

Specified by:
  `asReduction` in class `CSTNode`

#### asReduction

    public Reduction asReduction(CSTNode second)

Creates a `Reduction` from this token, adding the supplied node as the second element.

#### asReduction

    public Reduction asReduction(CSTNode second,
                                 CSTNode third)

Creates a `Reduction` from this token, adding the supplied nodes as the second and third element, respectively.

#### asReduction

    public Reduction asReduction(CSTNode second,
                                 CSTNode third,
                                 CSTNode fourth)

Creates a `Reduction` from this token, adding the supplied nodes as the second, third, and fourth element, respectively.

#### newKeyword

    public static Token newKeyword(java.lang.String text,
                                   int startLine,
                                   int startColumn)

Creates a token that represents a keyword. Returns null if the specified text isn't a keyword.

#### newString

    public static Token newString(java.lang.String text,
                                  int startLine,
                                  int startColumn)

Creates a token that represents a double-quoted string.

#### newIdentifier

    public static Token newIdentifier(java.lang.String text,
                                      int startLine,
                                      int startColumn)

Creates a token that represents an identifier.

#### newInteger

    public static Token newInteger(java.lang.String text,
                                   int startLine,
                                   int startColumn)

Creates a token that represents an integer.

#### newDecimal

    public static Token newDecimal(java.lang.String text,
                                   int startLine,
                                   int startColumn)

Creates a token that represents a decimal number.

#### newSymbol

    public static Token newSymbol(int type,
                                  int startLine,
                                  int startColumn)

Creates a token that represents a symbol, using a library for the text.

#### newSymbol

    public static Token newSymbol(java.lang.String type,
                                  int startLine,
                                  int startColumn)

Creates a token that represents a symbol, using a library for the type.

#### newPlaceholder

    public static Token newPlaceholder(int type)

Creates a token with the specified meaning.