1
2
3
4
5
6
7
8
9
10 package org.syntax.jedit.tokenmarker;
11
12 /***
13 * A linked list of tokens. Each token has three fields - a token
14 * identifier, which is a byte value that can be looked up in the
15 * array returned by <code>SyntaxDocument.getColors()</code>
16 * to get a color value, a length value which is the length of the
17 * token in the text, and a pointer to the next token in the list.
18 *
19 * @author Slava Pestov
20 * @version $Id$
21 */
22
23 public class Token
24 {
25 /***
26 * Normal text token id. This should be used to mark
27 * normal text.
28 */
29 public static final byte NULL = 0;
30
31 /***
32 * Comment 1 token id. This can be used to mark a comment.
33 */
34 public static final byte COMMENT1 = 1;
35
36 /***
37 * Comment 2 token id. This can be used to mark a comment.
38 */
39 public static final byte COMMENT2 = 2;
40
41
42 /***
43 * Literal 1 token id. This can be used to mark a string
44 * literal (eg, C mode uses this to mark "..." literals)
45 */
46 public static final byte LITERAL1 = 3;
47
48 /***
49 * Literal 2 token id. This can be used to mark an object
50 * literal (eg, Java mode uses this to mark true, false, etc)
51 */
52 public static final byte LITERAL2 = 4;
53
54 /***
55 * Label token id. This can be used to mark labels
56 * (eg, C mode uses this to mark ...: sequences)
57 */
58 public static final byte LABEL = 5;
59
60 /***
61 * Keyword 1 token id. This can be used to mark a
62 * keyword. This should be used for general language
63 * constructs.
64 */
65 public static final byte KEYWORD1 = 6;
66
67 /***
68 * Keyword 2 token id. This can be used to mark a
69 * keyword. This should be used for preprocessor
70 * commands, or variables.
71 */
72 public static final byte KEYWORD2 = 7;
73
74 /***
75 * Keyword 3 token id. This can be used to mark a
76 * keyword. This should be used for data types.
77 */
78 public static final byte KEYWORD3 = 8;
79
80 /***
81 * Operator token id. This can be used to mark an
82 * operator. (eg, SQL mode marks +, -, etc with this
83 * token type)
84 */
85 public static final byte OPERATOR = 9;
86
87 /***
88 * Invalid token id. This can be used to mark invalid
89 * or incomplete tokens, so the user can easily spot
90 * syntax errors.
91 */
92 public static final byte INVALID = 10;
93
94 /***
95 * The total number of defined token ids.
96 */
97 public static final byte ID_COUNT = 11;
98
99 /***
100 * The first id that can be used for internal state
101 * in a token marker.
102 */
103 public static final byte INTERNAL_FIRST = 100;
104
105 /***
106 * The last id that can be used for internal state
107 * in a token marker.
108 */
109 public static final byte INTERNAL_LAST = 126;
110
111 /***
112 * The token type, that along with a length of 0
113 * marks the end of the token list.
114 */
115 public static final byte END = 127;
116
117 /***
118 * The length of this token.
119 */
120 public int length;
121
122 /***
123 * The id of this token.
124 */
125 public byte id;
126
127 /***
128 * The next token in the linked list.
129 */
130 public Token next;
131
132 /***
133 * Creates a new token.
134 * @param length The length of the token
135 * @param id The id of the token
136 */
137 public Token(int length, byte id)
138 {
139 this.length = length;
140 this.id = id;
141 }
142
143 /***
144 * Returns a string representation of this token.
145 */
146 public String toString()
147 {
148 return "[id=" + id + ",length=" + length + "]";
149 }
150 }