11 package net.sf.gridarta.textedit.textarea.tokenmarker;
13 import javax.swing.text.Segment;
31 private final boolean cpp;
61 final char[] array = line.array;
62 final int offset = line.offset;
65 final int length = line.count + offset;
66 boolean backslash =
false;
68 byte currentToken = token;
70 for (
int i = offset; i <
length; i++) {
73 final char c = array[i];
75 backslash = !backslash;
79 switch (currentToken) {
87 addToken(i - lastOffset, currentToken);
100 addToken(i - lastOffset, currentToken);
112 addToken(i - lastOffset, currentToken);
120 if (lastKeyword == offset) {
134 if (length - i > 1) {
137 addToken(i - lastOffset, currentToken);
140 if (length - i > 2 && array[i + 2] ==
'*') {
148 addToken(i - lastOffset, currentToken);
159 if (!Character.isLetterOrDigit(c) && c !=
'_') {
169 if (c ==
'*' && length - i > 1) {
170 if (array[i1] ==
'/') {
172 addToken(i + 1 - lastOffset, currentToken);
183 }
else if (c ==
'"') {
184 addToken(i1 - lastOffset, currentToken);
194 }
else if (c ==
'\'') {
203 throw new InternalError(
"Invalid state: " + currentToken);
211 switch (currentToken) {
219 addToken(length - lastOffset, currentToken);
226 addToken(length - lastOffset, currentToken);
238 if (cKeywords == null) {
290 private void doKeyword(
final Segment line,
final int i) {
291 final int i1 = i + 1;
294 final byte
id = keywords.
lookup(line, lastKeyword, len);
296 if (lastKeyword != lastOffset) {
int length
The number of lines in the model being tokenized.
static final byte COMMENT2
Comment 2 token id.
final boolean cpp
Whether preprocessor tokens should be marked.
byte markTokensImpl(final byte token, final Segment line)
CTokenMarker(final boolean cpp, final KeywordMap keywords)
Creates a new instance.
void doKeyword(final Segment line, final int i)
byte lookup(final Segment text, final int offset, final int length)
Looks up a key.
void add(final CharSequence keyword, final byte id)
Adds a key-value mapping.
static final byte COMMENT1
Comment 1 token id.
void addToken(final int length, final byte id)
Adds a token to the token list.
static final byte LITERAL1
Literal 1 token id.
static final byte KEYWORD3
Keyword 3 token id.
Base package of all Gridarta classes.
This package contains the other part of the script editor.
static KeywordMap cKeywords
Default keywords for C.
static final byte LITERAL2
Literal 2 token id.
Maps (parts of) Segments to.
static final byte NULL
Normal text token id.
static final byte KEYWORD2
Keyword 2 token id.
A token marker that splits lines of text into tokens.
final KeywordMap keywords
The keywords to mark.
static final byte KEYWORD1
Keyword 1 token id.
static KeywordMap getCKeywords()
Returns the default keywords for C.
static final byte INVALID
Invalid token id.
static final byte LABEL
Label token id.
CTokenMarker()
Create a new instance using default keywords.