View Javadoc

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