001: /*
002: * Copyright (C) 2005 - 2008 JasperSoft Corporation. All rights reserved.
003: * http://www.jaspersoft.com.
004: *
005: * Unless you have purchased a commercial license agreement from JasperSoft,
006: * the following license terms apply:
007: *
008: * This program is free software; you can redistribute it and/or modify
009: * it under the terms of the GNU General Public License version 2 as published by
010: * the Free Software Foundation.
011: *
012: * This program is distributed WITHOUT ANY WARRANTY; and without the
013: * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
014: * See the GNU General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
018: * or write to:
019: *
020: * Free Software Foundation, Inc.,
021: * 59 Temple Place - Suite 330,
022: * Boston, MA USA 02111-1307
023: *
024: *
025: *
026: *
027: * Token.java
028: *
029: */
030:
031: package org.syntax.jedit.tokenmarker;
032:
033: /**
034: * A linked list of tokens. Each token has three fields - a token
035: * identifier, which is a byte value that can be looked up in the
036: * array returned by <code>SyntaxDocument.getColors()</code>
037: * to get a color value, a length value which is the length of the
038: * token in the text, and a pointer to the next token in the list.
039: *
040: * @author Slava Pestov
041: * @version $Id: Token.java 1167 2008-01-15 18:49:05Z gtoffoli $
042: */
043:
044: public class Token {
045: /**
046: * Normal text token id. This should be used to mark
047: * normal text.
048: */
049: public static final byte NULL = 0;
050:
051: /**
052: * Comment 1 token id. This can be used to mark a comment.
053: */
054: public static final byte COMMENT1 = 1;
055:
056: /**
057: * Comment 2 token id. This can be used to mark a comment.
058: */
059: public static final byte COMMENT2 = 2;
060:
061: /**
062: * Literal 1 token id. This can be used to mark a string
063: * literal (eg, C mode uses this to mark "..." literals)
064: */
065: public static final byte LITERAL1 = 3;
066:
067: /**
068: * Literal 2 token id. This can be used to mark an object
069: * literal (eg, Java mode uses this to mark true, false, etc)
070: */
071: public static final byte LITERAL2 = 4;
072:
073: /**
074: * Label token id. This can be used to mark labels
075: * (eg, C mode uses this to mark ...: sequences)
076: */
077: public static final byte LABEL = 5;
078:
079: /**
080: * Keyword 1 token id. This can be used to mark a
081: * keyword. This should be used for general language
082: * constructs.
083: */
084: public static final byte KEYWORD1 = 6;
085:
086: /**
087: * Keyword 2 token id. This can be used to mark a
088: * keyword. This should be used for preprocessor
089: * commands, or variables.
090: */
091: public static final byte KEYWORD2 = 7;
092:
093: /**
094: * Keyword 3 token id. This can be used to mark a
095: * keyword. This should be used for data types.
096: */
097: public static final byte KEYWORD3 = 8;
098:
099: /**
100: * Operator token id. This can be used to mark an
101: * operator. (eg, SQL mode marks +, -, etc with this
102: * token type)
103: */
104: public static final byte OPERATOR = 9;
105:
106: /**
107: * Invalid token id. This can be used to mark invalid
108: * or incomplete tokens, so the user can easily spot
109: * syntax errors.
110: */
111: public static final byte INVALID = 10;
112:
113: public static final byte PARAMETER = 11;
114: public static final byte PARAMETER_OK = 12;
115:
116: /**
117: * The total number of defined token ids.
118: */
119: public static final byte ID_COUNT = 13;
120:
121: /**
122: * The first id that can be used for internal state
123: * in a token marker.
124: */
125: public static final byte INTERNAL_FIRST = 100;
126:
127: /**
128: * The last id that can be used for internal state
129: * in a token marker.
130: */
131: public static final byte INTERNAL_LAST = 126;
132:
133: /**
134: * The token type, that along with a length of 0
135: * marks the end of the token list.
136: */
137: public static final byte END = 127;
138:
139: /**
140: * The length of this token.
141: */
142: public int length;
143:
144: /**
145: * The id of this token.
146: */
147: public byte id;
148:
149: /**
150: * The next token in the linked list.
151: */
152: public Token next;
153:
154: /**
155: * Creates a new token.
156: * @param length The length of the token
157: * @param id The id of the token
158: */
159: public Token(int length, byte id) {
160: this .length = length;
161: this .id = id;
162: }
163:
164: /**
165: * Returns a string representation of this token.
166: */
167: public String toString() {
168: return "[id=" + id + ",length=" + length + "]";
169: }
170: }
|