package org.jkiss.dbeaver.lang.parser;
import org.eclipse.jface.text.rules.ICharacterScanner;
import org.eclipse.jface.text.rules.IRule;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.Token;
import org.jkiss.dbeaver.lang.SCMToken;
public class LiteralRule implements IRule {
private static Token WORD_TOKEN = new Token(SCMToken.LITERAL);
@Override
public IToken evaluate(ICharacterScanner scanner) {
int c = scanner.read();
if (c != ICharacterScanner.EOF && isWordStart((char) c)) {
do {
c = scanner.read();
}
while (c != ICharacterScanner.EOF && isWordPart((char) c));
scanner.unread();
return WORD_TOKEN;
}
scanner.unread();
return Token.UNDEFINED;
}
private boolean isWordStart(char c) {
return Character.isLetter(c);
}
private boolean isWordPart(char c) {
return Character.isJavaIdentifierPart(c);
}
}