001/** 002 * GRANITE DATA SERVICES 003 * Copyright (C) 2006-2013 GRANITE DATA SERVICES S.A.S. 004 * 005 * This file is part of the Granite Data Services Platform. 006 * 007 * Granite Data Services is free software; you can redistribute it and/or 008 * modify it under the terms of the GNU Lesser General Public 009 * License as published by the Free Software Foundation; either 010 * version 2.1 of the License, or (at your option) any later version. 011 * 012 * Granite Data Services is distributed in the hope that it will be useful, 013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser 015 * General Public License for more details. 016 * 017 * You should have received a copy of the GNU Lesser General Public 018 * License along with this library; if not, write to the Free Software 019 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 020 * USA, or see <http://www.gnu.org/licenses/>. 021 */ 022/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */ 023/** 024 * 025 * Licensed to the Apache Software Foundation (ASF) under one or more 026 * contributor license agreements. See the NOTICE file distributed with 027 * this work for additional information regarding copyright ownership. 028 * The ASF licenses this file to You under the Apache License, Version 2.0 029 * (the "License"); you may not use this file except in compliance with 030 * the License. You may obtain a copy of the License at 031 * 032 * http://www.apache.org/licenses/LICENSE-2.0 033 * 034 * Unless required by applicable law or agreed to in writing, software 035 * distributed under the License is distributed on an "AS IS" BASIS, 036 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 037 * See the License for the specific language governing permissions and 038 * limitations under the License. 039 */ 040 041package org.granite.gravity.selector; 042 043/** 044 * Describes the input token stream. 045 */ 046public class Token { 047 048 /** 049 * An integer that describes the kind of this token. This numbering 050 * system is determined by JavaCCParser, and a table of these numbers is 051 * stored in the file ...Constants.java. 052 */ 053 public int kind; 054 055 /** 056 * beginLine and beginColumn describe the position of the first character 057 * of this token; endLine and endColumn describe the position of the 058 * last character of this token. 059 */ 060 public int beginLine, beginColumn, endLine, endColumn; 061 062 /** 063 * The string image of the token. 064 */ 065 public String image; 066 067 /** 068 * A reference to the next regular (non-special) token from the input 069 * stream. If this is the last token from the input stream, or if the 070 * token manager has not read tokens beyond this one, this field is 071 * set to null. This is true only if this token is also a regular 072 * token. Otherwise, see below for a description of the contents of 073 * this field. 074 */ 075 public Token next; 076 077 /** 078 * This field is used to access special tokens that occur prior to this 079 * token, but after the immediately preceding regular (non-special) token. 080 * If there are no such special tokens, this field is set to null. 081 * When there are more than one such special token, this field refers 082 * to the last of these special tokens, which in turn refers to the next 083 * previous special token through its specialToken field, and so on 084 * until the first special token (whose specialToken field is null). 085 * The next fields of special tokens refer to other special tokens that 086 * immediately follow it (without an intervening regular token). If there 087 * is no such token, this field is null. 088 */ 089 public Token specialToken; 090 091 /** 092 * Returns the image. 093 */ 094 @Override 095 public String toString() 096 { 097 return image; 098 } 099 100 /** 101 * Returns a new Token object, by default. However, if you want, you 102 * can create and return subclass objects based on the value of ofKind. 103 * Simply add the cases to the switch for all those special cases. 104 * For example, if you have a subclass of Token called IDToken that 105 * you want to create if ofKind is ID, simlpy add something like : 106 * 107 * case MyParserConstants.ID : return new IDToken(); 108 * 109 * to the following switch statement. Then you can cast matchedToken 110 * variable to the appropriate type and use it in your lexical actions. 111 */ 112 public static final Token newToken(int ofKind) 113 { 114 switch(ofKind) 115 { 116 default : return new Token(); 117 } 118 } 119 120}