/*
 * 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;

This interface provides information about the vocabulary used by a recognizer.
Author:Sam Harwell
See Also:
  • getVocabulary.getVocabulary()
/** * This interface provides information about the vocabulary used by a * recognizer. * * @see Recognizer#getVocabulary() * @author Sam Harwell */
public interface Vocabulary {
Returns the highest token type value. It can be used to iterate from zero to that number, inclusively, thus querying all stored entries.
Returns:the highest token type value
/** * Returns the highest token type value. It can be used to iterate from * zero to that number, inclusively, thus querying all stored entries. * @return the highest token type value */
int getMaxTokenType();
Gets the string literal associated with a token type. The string returned by this method, when not null, can be used unaltered in a parser grammar to represent this token type.

The following table shows examples of lexer rules and the literal names assigned to the corresponding token types.

Rule Literal Name Java String Literal
THIS : 'this'; 'this' "'this'"
SQUOTE : '\''; '\'' "'\\''"
ID : [A-Z]+; n/a null
Params:
  • tokenType – The token type.
Returns:The string literal associated with the specified token type, or null if no string literal is associated with the type.
/** * Gets the string literal associated with a token type. The string returned * by this method, when not {@code null}, can be used unaltered in a parser * grammar to represent this token type. * * <p>The following table shows examples of lexer rules and the literal * names assigned to the corresponding token types.</p> * * <table> * <tr> * <th>Rule</th> * <th>Literal Name</th> * <th>Java String Literal</th> * </tr> * <tr> * <td>{@code THIS : 'this';}</td> * <td>{@code 'this'}</td> * <td>{@code "'this'"}</td> * </tr> * <tr> * <td>{@code SQUOTE : '\'';}</td> * <td>{@code '\''}</td> * <td>{@code "'\\''"}</td> * </tr> * <tr> * <td>{@code ID : [A-Z]+;}</td> * <td>n/a</td> * <td>{@code null}</td> * </tr> * </table> * * @param tokenType The token type. * * @return The string literal associated with the specified token type, or * {@code null} if no string literal is associated with the type. */
String getLiteralName(int tokenType);
Gets the symbolic name associated with a token type. The string returned by this method, when not null, can be used unaltered in a parser grammar to represent this token type.

This method supports token types defined by any of the following methods:

  • Tokens created by lexer rules.
  • Tokens defined in a tokens{} block in a lexer or parser grammar.
  • The implicitly defined EOF token, which has the token type Token.EOF.

The following table shows examples of lexer rules and the literal names assigned to the corresponding token types.

Rule Symbolic Name
THIS : 'this'; THIS
SQUOTE : '\''; SQUOTE
ID : [A-Z]+; ID
Params:
  • tokenType – The token type.
Returns:The symbolic name associated with the specified token type, or null if no symbolic name is associated with the type.
/** * Gets the symbolic name associated with a token type. The string returned * by this method, when not {@code null}, can be used unaltered in a parser * grammar to represent this token type. * * <p>This method supports token types defined by any of the following * methods:</p> * * <ul> * <li>Tokens created by lexer rules.</li> * <li>Tokens defined in a <code>tokens{}</code> block in a lexer or parser * grammar.</li> * <li>The implicitly defined {@code EOF} token, which has the token type * {@link Token#EOF}.</li> * </ul> * * <p>The following table shows examples of lexer rules and the literal * names assigned to the corresponding token types.</p> * * <table> * <tr> * <th>Rule</th> * <th>Symbolic Name</th> * </tr> * <tr> * <td>{@code THIS : 'this';}</td> * <td>{@code THIS}</td> * </tr> * <tr> * <td>{@code SQUOTE : '\'';}</td> * <td>{@code SQUOTE}</td> * </tr> * <tr> * <td>{@code ID : [A-Z]+;}</td> * <td>{@code ID}</td> * </tr> * </table> * * @param tokenType The token type. * * @return The symbolic name associated with the specified token type, or * {@code null} if no symbolic name is associated with the type. */
String getSymbolicName(int tokenType);
Gets the display name of a token type.

ANTLR provides a default implementation of this method, but applications are free to override the behavior in any manner which makes sense for the application. The default implementation returns the first result from the following list which produces a non-null result.

  1. The result of getLiteralName
  2. The result of getSymbolicName
  3. The result of Integer.toString
Params:
  • tokenType – The token type.
Returns:The display name of the token type, for use in error reporting or other user-visible messages which reference specific token types.
/** * Gets the display name of a token type. * * <p>ANTLR provides a default implementation of this method, but * applications are free to override the behavior in any manner which makes * sense for the application. The default implementation returns the first * result from the following list which produces a non-{@code null} * result.</p> * * <ol> * <li>The result of {@link #getLiteralName}</li> * <li>The result of {@link #getSymbolicName}</li> * <li>The result of {@link Integer#toString}</li> * </ol> * * @param tokenType The token type. * * @return The display name of the token type, for use in error reporting or * other user-visible messages which reference specific token types. */
String getDisplayName(int tokenType); }