/*
 * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
 * Use of this file is governed by the BSD 3-clause license that
 * can be found in the LICENSE.txt file in the project root.
 */

package org.antlr.v4.runtime.tree.pattern;

import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.TokenSource;

A Token object representing an entire subtree matched by a parser rule; e.g., <expr>. These tokens are created for TagChunk chunks where the tag corresponds to a parser rule.
/** * A {@link Token} object representing an entire subtree matched by a parser * rule; e.g., {@code <expr>}. These tokens are created for {@link TagChunk} * chunks where the tag corresponds to a parser rule. */
public class RuleTagToken implements Token {
This is the backing field for getRuleName.
/** * This is the backing field for {@link #getRuleName}. */
private final String ruleName;
The token type for the current token. This is the token type assigned to the bypass alternative for the rule during ATN deserialization.
/** * The token type for the current token. This is the token type assigned to * the bypass alternative for the rule during ATN deserialization. */
private final int bypassTokenType;
This is the backing field for getLabel.
/** * This is the backing field for {@link #getLabel}. */
private final String label;
Constructs a new instance of RuleTagToken with the specified rule name and bypass token type and no label.
Params:
  • ruleName – The name of the parser rule this rule tag matches.
  • bypassTokenType – The bypass token type assigned to the parser rule.
Throws:
/** * Constructs a new instance of {@link RuleTagToken} with the specified rule * name and bypass token type and no label. * * @param ruleName The name of the parser rule this rule tag matches. * @param bypassTokenType The bypass token type assigned to the parser rule. * * @exception IllegalArgumentException if {@code ruleName} is {@code null} * or empty. */
public RuleTagToken(String ruleName, int bypassTokenType) { this(ruleName, bypassTokenType, null); }
Constructs a new instance of RuleTagToken with the specified rule name, bypass token type, and label.
Params:
  • ruleName – The name of the parser rule this rule tag matches.
  • bypassTokenType – The bypass token type assigned to the parser rule.
  • label – The label associated with the rule tag, or null if the rule tag is unlabeled.
Throws:
/** * Constructs a new instance of {@link RuleTagToken} with the specified rule * name, bypass token type, and label. * * @param ruleName The name of the parser rule this rule tag matches. * @param bypassTokenType The bypass token type assigned to the parser rule. * @param label The label associated with the rule tag, or {@code null} if * the rule tag is unlabeled. * * @exception IllegalArgumentException if {@code ruleName} is {@code null} * or empty. */
public RuleTagToken(String ruleName, int bypassTokenType, String label) { if (ruleName == null || ruleName.isEmpty()) { throw new IllegalArgumentException("ruleName cannot be null or empty."); } this.ruleName = ruleName; this.bypassTokenType = bypassTokenType; this.label = label; }
Gets the name of the rule associated with this rule tag.
Returns:The name of the parser rule associated with this rule tag.
/** * Gets the name of the rule associated with this rule tag. * * @return The name of the parser rule associated with this rule tag. */
public final String getRuleName() { return ruleName; }
Gets the label associated with the rule tag.
Returns:The name of the label associated with the rule tag, or null if this is an unlabeled rule tag.
/** * Gets the label associated with the rule tag. * * @return The name of the label associated with the rule tag, or * {@code null} if this is an unlabeled rule tag. */
public final String getLabel() { return label; }
{@inheritDoc}

Rule tag tokens are always placed on the Token.DEFAULT_CHANNEL.

/** * {@inheritDoc} * * <p>Rule tag tokens are always placed on the {@link #DEFAULT_CHANNEL}.</p> */
@Override public int getChannel() { return DEFAULT_CHANNEL; }
{@inheritDoc}

This method returns the rule tag formatted with < and > delimiters.

/** * {@inheritDoc} * * <p>This method returns the rule tag formatted with {@code <} and {@code >} * delimiters.</p> */
@Override public String getText() { if (label != null) { return "<" + label + ":" + ruleName + ">"; } return "<" + ruleName + ">"; }
{@inheritDoc}

Rule tag tokens have types assigned according to the rule bypass transitions created during ATN deserialization.

/** * {@inheritDoc} * * <p>Rule tag tokens have types assigned according to the rule bypass * transitions created during ATN deserialization.</p> */
@Override public int getType() { return bypassTokenType; }
{@inheritDoc}

The implementation for RuleTagToken always returns 0.

/** * {@inheritDoc} * * <p>The implementation for {@link RuleTagToken} always returns 0.</p> */
@Override public int getLine() { return 0; }
{@inheritDoc}

The implementation for RuleTagToken always returns -1.

/** * {@inheritDoc} * * <p>The implementation for {@link RuleTagToken} always returns -1.</p> */
@Override public int getCharPositionInLine() { return -1; }
{@inheritDoc}

The implementation for RuleTagToken always returns -1.

/** * {@inheritDoc} * * <p>The implementation for {@link RuleTagToken} always returns -1.</p> */
@Override public int getTokenIndex() { return -1; }
{@inheritDoc}

The implementation for RuleTagToken always returns -1.

/** * {@inheritDoc} * * <p>The implementation for {@link RuleTagToken} always returns -1.</p> */
@Override public int getStartIndex() { return -1; }
{@inheritDoc}

The implementation for RuleTagToken always returns -1.

/** * {@inheritDoc} * * <p>The implementation for {@link RuleTagToken} always returns -1.</p> */
@Override public int getStopIndex() { return -1; }
{@inheritDoc}

The implementation for RuleTagToken always returns null.

/** * {@inheritDoc} * * <p>The implementation for {@link RuleTagToken} always returns {@code null}.</p> */
@Override public TokenSource getTokenSource() { return null; }
{@inheritDoc}

The implementation for RuleTagToken always returns null.

/** * {@inheritDoc} * * <p>The implementation for {@link RuleTagToken} always returns {@code null}.</p> */
@Override public CharStream getInputStream() { return null; }
{@inheritDoc}

The implementation for RuleTagToken returns a string of the form ruleName:bypassTokenType.

/** * {@inheritDoc} * * <p>The implementation for {@link RuleTagToken} returns a string of the form * {@code ruleName:bypassTokenType}.</p> */
@Override public String toString() { return ruleName + ":" + bypassTokenType; } }