📄 drlscanner.java
字号:
package org.drools.ide.editors.scanners;
import java.util.ArrayList;
import java.util.List;
import org.drools.ide.editors.ColorManager;
import org.drools.ide.editors.Keywords;
import org.eclipse.jface.text.TextAttribute;
import org.eclipse.jface.text.rules.EndOfLineRule;
import org.eclipse.jface.text.rules.IRule;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.RuleBasedScanner;
import org.eclipse.jface.text.rules.SingleLineRule;
import org.eclipse.jface.text.rules.Token;
import org.eclipse.jface.text.rules.WhitespaceRule;
import org.eclipse.jface.text.rules.WordRule;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
/**
* Basic keyword scanner for syntax highlighting.
*
* @author Michael Neale
*/
public class DRLScanner extends RuleBasedScanner {
private static Color KEYWORD_COLOUR = ColorManager.getInstance().getColor(ColorManager.KEYWORD);
private static Color COMMENT_COLOR = ColorManager.getInstance().getColor(ColorManager.SINGLE_LINE_COMMENT);
private static Color STRING_COLOR = ColorManager.getInstance().getColor(ColorManager.STRING);
private static Color DEFAULT = ColorManager.getInstance().getColor(ColorManager.DEFAULT);
private static String[] fgDroolsKeywords= Keywords.getInstance().getAllDroolsKeywords();
private static String[] fgJavaKeywords= Keywords.getInstance().getAllJavaKeywords();
private static String[] fgTypes= { "void", "boolean", "char", "byte", "short", "strictfp", "int", "long", "float", "double" };
private static String[] fgConstants= { "false", "true", "null" };
public DRLScanner() {
IToken keyword = new Token(new TextAttribute(KEYWORD_COLOUR, null, SWT.BOLD));
IToken comment= new Token(new TextAttribute(COMMENT_COLOR));
IToken string = new Token(new TextAttribute(STRING_COLOR));
IToken other = new Token(new TextAttribute(DEFAULT));
List rules = new ArrayList();
rules.add(new EndOfLineRule("//", comment));
rules.add(new EndOfLineRule("#", comment));
// Add rule for strings and character constants.
rules.add(new SingleLineRule("\"", "\"", string, '\\'));
rules.add(new SingleLineRule("'", "'", string, '\\'));
//for unfilled "holes"
//rules.add(new SingleLineRule("{", "}", comment));
// Add generic whitespace rule.
rules.add(new WhitespaceRule(new WhitespaceDetector()));
// Add word rule for keywords, types, and constants.
WordRule wordRule= new WordRule(new RuleWordDetector(), other);
for (int i= 0; i < fgDroolsKeywords.length; i++)
wordRule.addWord(fgDroolsKeywords[i], keyword);
for (int i= 0; i < fgJavaKeywords.length; i++)
wordRule.addWord(fgJavaKeywords[i], keyword);
for (int i= 0; i < fgTypes.length; i++)
wordRule.addWord(fgTypes[i], keyword);
for (int i= 0; i < fgConstants.length; i++)
wordRule.addWord(fgConstants[i], keyword);
rules.add(wordRule);
IRule[] result= new IRule[rules.size()];
rules.toArray(result);
setRules(result);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -