001 /* Generated By:JavaCC: Do not edit this line. Token.java Version 5.0 */ 002 /* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ 003 /* 004 * Copyright (c) 2009 The JOMC Project 005 * Copyright (c) 2005 Christian Schulte <cs@jomc.org> 006 * All rights reserved. 007 * 008 * Redistribution and use in source and binary forms, with or without 009 * modification, are permitted provided that the following conditions 010 * are met: 011 * 012 * o Redistributions of source code must retain the above copyright 013 * notice, this list of conditions and the following disclaimer. 014 * 015 * o Redistributions in binary form must reproduce the above copyright 016 * notice, this list of conditions and the following disclaimer in 017 * the documentation and/or other materials provided with the 018 * distribution. 019 * 020 * THIS SOFTWARE IS PROVIDED BY THE JOMC PROJECT AND CONTRIBUTORS "AS IS" 021 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 022 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 023 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JOMC PROJECT OR 024 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 025 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 026 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 027 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 028 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 029 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 030 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 031 * 032 * $Id: VersionParser.jj 733 2009-10-05 17:22:57Z schulte2005 $ 033 * 034 */ 035 package org.jomc.util; 036 037 /** 038 * Describes the input token stream. 039 */ 040 041 public class Token implements java.io.Serializable { 042 043 /** 044 * The version identifier for this Serializable class. 045 * Increment only if the <i>serialized</i> form of the 046 * class changes. 047 */ 048 private static final long serialVersionUID = 1L; 049 050 /** 051 * An integer that describes the kind of this token. This numbering 052 * system is determined by JavaCCParser, and a table of these numbers is 053 * stored in the file ...Constants.java. 054 */ 055 public int kind; 056 057 /** The line number of the first character of this Token. */ 058 public int beginLine; 059 /** The column number of the first character of this Token. */ 060 public int beginColumn; 061 /** The line number of the last character of this Token. */ 062 public int endLine; 063 /** The column number of the last character of this Token. */ 064 public int endColumn; 065 066 /** 067 * The string image of the token. 068 */ 069 public String image; 070 071 /** 072 * A reference to the next regular (non-special) token from the input 073 * stream. If this is the last token from the input stream, or if the 074 * token manager has not read tokens beyond this one, this field is 075 * set to null. This is true only if this token is also a regular 076 * token. Otherwise, see below for a description of the contents of 077 * this field. 078 */ 079 public Token next; 080 081 /** 082 * This field is used to access special tokens that occur prior to this 083 * token, but after the immediately preceding regular (non-special) token. 084 * If there are no such special tokens, this field is set to null. 085 * When there are more than one such special token, this field refers 086 * to the last of these special tokens, which in turn refers to the next 087 * previous special token through its specialToken field, and so on 088 * until the first special token (whose specialToken field is null). 089 * The next fields of special tokens refer to other special tokens that 090 * immediately follow it (without an intervening regular token). If there 091 * is no such token, this field is null. 092 */ 093 public Token specialToken; 094 095 /** 096 * An optional attribute value of the Token. 097 * Tokens which are not used as syntactic sugar will often contain 098 * meaningful values that will be used later on by the compiler or 099 * interpreter. This attribute value is often different from the image. 100 * Any subclass of Token that actually wants to return a non-null value can 101 * override this method as appropriate. 102 */ 103 public Object getValue() { 104 return null; 105 } 106 107 /** 108 * No-argument constructor 109 */ 110 public Token() {} 111 112 /** 113 * Constructs a new token for the specified Image. 114 */ 115 public Token(int kind) 116 { 117 this(kind, null); 118 } 119 120 /** 121 * Constructs a new token for the specified Image and Kind. 122 */ 123 public Token(int kind, String image) 124 { 125 this.kind = kind; 126 this.image = image; 127 } 128 129 /** 130 * Returns the image. 131 */ 132 public String toString() 133 { 134 return image; 135 } 136 137 /** 138 * Returns a new Token object, by default. However, if you want, you 139 * can create and return subclass objects based on the value of ofKind. 140 * Simply add the cases to the switch for all those special cases. 141 * For example, if you have a subclass of Token called IDToken that 142 * you want to create if ofKind is ID, simply add something like : 143 * 144 * case MyParserConstants.ID : return new IDToken(ofKind, image); 145 * 146 * to the following switch statement. Then you can cast matchedToken 147 * variable to the appropriate type and use sit in your lexical actions. 148 */ 149 public static Token newToken(int ofKind, String image) 150 { 151 switch(ofKind) 152 { 153 default : return new Token(ofKind, image); 154 } 155 } 156 157 public static Token newToken(int ofKind) 158 { 159 return newToken(ofKind, null); 160 } 161 162 } 163 /* JavaCC - OriginalChecksum=9aa809715876b7db9611a62322c43cb4 (do not edit this line) */