001    /* Generated By:JavaCC: Do not edit this line. Token.java Version 0.7pre3 */
002    
003    /*
004     * Cobertura - http://cobertura.sourceforge.net/
005     *
006     * This file was taken from JavaNCSS
007     * http://www.kclee.com/clemens/java/javancss/
008     * Copyright (C) 2000 Chr. Clemens Lee <clemens a.t kclee d.o.t com>
009     *
010     * Cobertura is free software; you can redistribute it and/or modify
011     * it under the terms of the GNU General Public License as published
012     * by the Free Software Foundation; either version 2 of the License,
013     * or (at your option) any later version.
014     *
015     * Cobertura is distributed in the hope that it will be useful, but
016     * WITHOUT ANY WARRANTY; without even the implied warranty of
017     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
018     * General Public License for more details.
019     *
020     * You should have received a copy of the GNU General Public License
021     * along with Cobertura; if not, write to the Free Software
022     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
023     * USA
024     */
025    
026    package net.sourceforge.cobertura.javancss;
027    
028    import java.io.Serializable;
029    
030    /**
031     * Describes the input token stream.
032     */
033    
034    class Token implements Serializable
035    {
036    
037            private static final long serialVersionUID = 0L;
038    
039            /**
040             * An integer that describes the kind of this token.  This numbering
041             * system is determined by JavaCCParser, and a table of these numbers is
042             * stored in the file ...Constants.java.
043             */
044            int kind;
045    
046            /**
047             * beginLine and beginColumn describe the position of the first character
048             * of this token; endLine and endColumn describe the position of the
049             * last character of this token.
050             */
051            int beginLine, beginColumn, endLine, endColumn;
052    
053            /**
054             * The string image of the token.
055             */
056            String image;
057    
058            /**
059             * A reference to the next regular (non-special) token from the input
060             * stream.  If this is the last token from the input stream, or if the
061             * token manager has not read tokens beyond this one, this field is
062             * set to null.  This is true only if this token is also a regular
063             * token.  Otherwise, see below for a description of the contents of
064             * this field.
065             */
066            Token next;
067    
068            /**
069             * This field is used to access special tokens that occur prior to this
070             * token, but after the immediately preceding regular (non-special) token.
071             * If there are no such special tokens, this field is set to null.
072             * When there are more than one such special token, this field refers
073             * to the last of these special tokens, which in turn refers to the next
074             * previous special token through its specialToken field, and so on
075             * until the first special token (whose specialToken field is null).
076             * The next fields of special tokens refer to other special tokens that
077             * immediately follow it (without an intervening regular token).  If there
078             * is no such token, this field is null.
079             */
080            Token specialToken;
081    
082            /**
083             * Returns the image.
084             */
085            public final String toString()
086            {
087                    return image;
088            }
089    
090            /**
091             * Returns a new Token object, by default. However, if you want, you
092             * can create and return subclass objects based on the value of ofKind.
093             * Simply add the cases to the switch for all those special cases.
094             * For example, if you have a subclass of Token called IDToken that
095             * you want to create if ofKind is ID, simlpy add something like :
096             *
097             *    case MyParserConstants.ID : return new IDToken();
098             *
099             * to the following switch statement. Then you can cast matchedToken
100             * variable to the appropriate type and use it in your lexical actions.
101             */
102            static final Token newToken(int ofKind)
103            {
104                    switch (ofKind)
105                    {
106                            default:
107                                    return new Token();
108                    }
109            }
110    
111    }