001: /*
002: * Token.java - Generic token
003: * Copyright (C) 1998, 1999 Slava Pestov
004: *
005: * You may use and modify this package for any purpose. Redistribution is
006: * permitted, in both source and binary form, provided that this notice
007: * remains intact in all source distributions of this package.
008: */
009:
010: package org.syntax.jedit.tokenmarker;
011:
012: /**
013: * A linked list of tokens. Each token has three fields - a token
014: * identifier, which is a byte value that can be looked up in the
015: * array returned by <code>SyntaxDocument.getColors()</code>
016: * to get a color value, a length value which is the length of the
017: * token in the text, and a pointer to the next token in the list.
018: *
019: * @author Slava Pestov
020: * @version $Id: Token.java 3384 2005-05-25 03:49:43Z bquig $
021: */
022:
023: public class Token {
024: /**
025: * Normal text token id. This should be used to mark
026: * normal text.
027: */
028: public static final byte NULL = 0;
029:
030: /**
031: * Comment 1 token id. This can be used to mark a comment.
032: */
033: public static final byte COMMENT1 = 1;
034:
035: /**
036: * Comment 2 token id. This can be used to mark a comment.
037: */
038: public static final byte COMMENT2 = 2;
039:
040: /**
041: * Comment 3 token id. This can be used to mark a comment.
042: */
043: public static final byte COMMENT3 = 3;
044:
045: /**
046: * Literal 1 token id. This can be used to mark a string
047: * literal (eg, C mode uses this to mark "..." literals)
048: */
049: public static final byte LITERAL1 = 4;
050:
051: /**
052: * Literal 2 token id. This can be used to mark an object
053: * literal (eg, Java mode uses this to mark true, false, etc)
054: */
055: public static final byte PRIMITIVE = 5;
056:
057: /**
058: * Label token id. This can be used to mark labels
059: * (eg, C mode uses this to mark ...: sequences)
060: */
061: public static final byte LABEL = 6;
062:
063: /**
064: * Keyword 1 token id. This can be used to mark a
065: * keyword. This should be used for general language
066: * constructs.
067: */
068: public static final byte KEYWORD1 = 7;
069:
070: /**
071: * Keyword 2 token id. This can be used to mark a
072: * keyword. This should be used for preprocessor
073: * commands, or variables.
074: */
075: public static final byte KEYWORD2 = 8;
076:
077: /**
078: * Keyword 3 token id. This can be used to mark a
079: * keyword. This should be used for data types.
080: */
081: public static final byte KEYWORD3 = 9;
082:
083: /**
084: * Operator token id. This can be used to mark an
085: * operator. (eg, SQL mode marks +, -, etc with this
086: * token type)
087: */
088: public static final byte OPERATOR = 10;
089:
090: /**
091: * Invalid token id. This can be used to mark invalid
092: * or incomplete tokens, so the user can easily spot
093: * syntax errors.
094: */
095: public static final byte INVALID = 11;
096:
097: /**
098: * The total number of defined token ids.
099: */
100: public static final byte ID_COUNT = 12;
101:
102: /**
103: * For compatibility with newer TokenMarkers
104: * Not needed for our bluej modified Java tokens
105: */
106: public static final byte LITERAL2 = 13;
107:
108: /**
109: * The first id that can be used for internal state
110: * in a token marker.
111: */
112: public static final byte INTERNAL_FIRST = 100;
113:
114: /**
115: * The last id that can be used for internal state
116: * in a token marker.
117: */
118: public static final byte INTERNAL_LAST = 126;
119:
120: /**
121: * The token type, that along with a length of 0
122: * marks the end of the token list.
123: */
124: public static final byte END = 127;
125:
126: /**
127: * The length of this token.
128: */
129: public int length;
130:
131: /**
132: * The id of this token.
133: */
134: public byte id;
135:
136: /**
137: * The next token in the linked list.
138: */
139: public Token next;
140:
141: /**
142: * Creates a new token.
143: * @param length The length of the token
144: * @param id The id of the token
145: */
146: public Token(int length, byte id) {
147: this .length = length;
148: this .id = id;
149: }
150:
151: /**
152: * Returns a string representation of this token.
153: */
154: public String toString() {
155: return "[id=" + id + ",length=" + length + "]";
156: }
157: }
|