001/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
002package org.apache.commons.jxpath.ri.parser;
003
004/**
005 * Describes the input token stream.
006 */
007
008public class Token {
009
010  /**
011   * An integer that describes the kind of this token.  This numbering
012   * system is determined by JavaCCParser, and a table of these numbers is
013   * stored in the file ...Constants.java.
014   */
015  public int kind;
016
017  /**
018   * beginLine and beginColumn describe the position of the first character
019   * of this token; endLine and endColumn describe the position of the
020   * last character of this token.
021   */
022  public int beginLine, beginColumn, endLine, endColumn;
023
024  /**
025   * The string image of the token.
026   */
027  public String image;
028
029  /**
030   * A reference to the next regular (non-special) token from the input
031   * stream.  If this is the last token from the input stream, or if the
032   * token manager has not read tokens beyond this one, this field is
033   * set to null.  This is true only if this token is also a regular
034   * token.  Otherwise, see below for a description of the contents of
035   * this field.
036   */
037  public Token next;
038
039  /**
040   * This field is used to access special tokens that occur prior to this
041   * token, but after the immediately preceding regular (non-special) token.
042   * If there are no such special tokens, this field is set to null.
043   * When there are more than one such special token, this field refers
044   * to the last of these special tokens, which in turn refers to the next
045   * previous special token through its specialToken field, and so on
046   * until the first special token (whose specialToken field is null).
047   * The next fields of special tokens refer to other special tokens that
048   * immediately follow it (without an intervening regular token).  If there
049   * is no such token, this field is null.
050   */
051  public Token specialToken;
052
053  /**
054   * Returns the image.
055   */
056  public String toString()
057  {
058     return image;
059  }
060
061  /**
062   * Returns a new Token object, by default. However, if you want, you
063   * can create and return subclass objects based on the value of ofKind.
064   * Simply add the cases to the switch for all those special cases.
065   * For example, if you have a subclass of Token called IDToken that
066   * you want to create if ofKind is ID, simlpy add something like :
067   *
068   *    case MyParserConstants.ID : return new IDToken();
069   *
070   * to the following switch statement. Then you can cast matchedToken
071   * variable to the appropriate type and use it in your lexical actions.
072   */
073  public static final Token newToken(int ofKind)
074  {
075     switch(ofKind)
076     {
077       default : return new Token();
078     }
079  }
080
081}