1d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
2d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen/*
3d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *  Copyright 2004 the mime4j project
4d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *
5d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *  Licensed under the Apache License, Version 2.0 (the "License");
6d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *  you may not use this file except in compliance with the License.
7d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *  You may obtain a copy of the License at
8d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *
9d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *      http://www.apache.org/licenses/LICENSE-2.0
10d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *
11d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *  Unless required by applicable law or agreed to in writing, software
12d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *  distributed under the License is distributed on an "AS IS" BASIS,
13d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *  See the License for the specific language governing permissions and
15d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen *  limitations under the License.
16d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen */
17d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenpackage org.apache.james.mime4j.field.contenttype.parser;
18d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
19d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen/**
20d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen * Describes the input token stream.
21d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen */
22d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
23d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chenpublic class Token {
24d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
25d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  /**
26d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * An integer that describes the kind of this token.  This numbering
27d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * system is determined by JavaCCParser, and a table of these numbers is
28d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * stored in the file ...Constants.java.
29d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   */
30d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  public int kind;
31d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
32d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  /**
33d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * beginLine and beginColumn describe the position of the first character
34d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * of this token; endLine and endColumn describe the position of the
35d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * last character of this token.
36d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   */
37d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  public int beginLine, beginColumn, endLine, endColumn;
38d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
39d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  /**
40d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * The string image of the token.
41d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   */
42d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  public String image;
43d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
44d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  /**
45d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * A reference to the next regular (non-special) token from the input
46d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * stream.  If this is the last token from the input stream, or if the
47d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * token manager has not read tokens beyond this one, this field is
48d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * set to null.  This is true only if this token is also a regular
49d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * token.  Otherwise, see below for a description of the contents of
50d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * this field.
51d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   */
52d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  public Token next;
53d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
54d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  /**
55d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * This field is used to access special tokens that occur prior to this
56d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * token, but after the immediately preceding regular (non-special) token.
57d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * If there are no such special tokens, this field is set to null.
58d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * When there are more than one such special token, this field refers
59d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * to the last of these special tokens, which in turn refers to the next
60d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * previous special token through its specialToken field, and so on
61d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * until the first special token (whose specialToken field is null).
62d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * The next fields of special tokens refer to other special tokens that
63d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * immediately follow it (without an intervening regular token).  If there
64d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * is no such token, this field is null.
65d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   */
66d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  public Token specialToken;
67d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
68d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  /**
69d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * Returns the image.
70d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   */
71d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  public String toString()
72d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  {
73d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen     return image;
74d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  }
75d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
76d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  /**
77d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * Returns a new Token object, by default. However, if you want, you
78d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * can create and return subclass objects based on the value of ofKind.
79d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * Simply add the cases to the switch for all those special cases.
80d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * For example, if you have a subclass of Token called IDToken that
81d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * you want to create if ofKind is ID, simlpy add something like :
82d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   *
83d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   *    case MyParserConstants.ID : return new IDToken();
84d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   *
85d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * to the following switch statement. Then you can cast matchedToken
86d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   * variable to the appropriate type and use it in your lexical actions.
87d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen   */
88d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  public static final Token newToken(int ofKind)
89d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  {
90d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen     switch(ofKind)
91d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen     {
92d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen       default : return new Token();
93d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen     }
94d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen  }
95d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen
96d186a38568ddec7efcba054ccc2fe8ed9b8945fcNancy Chen}
97