nescrulebasedscanner.java
来自「plugin for eclipse」· Java 代码 · 共 83 行
JAVA
83 行
package isis.tinydt.editors.nesceditor;
import isis.tinydt.TinydtPlugin;
import java.util.ArrayList;
import java.util.List;
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.MultiLineRule;
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;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;
public class NesCRuleBasedScanner extends RuleBasedScanner implements INesCSyntax
{
private static Color DEF= new Color(Display.getCurrent(), new RGB(0, 0, 0));
public NesCRuleBasedScanner()
{
int i;
NesCColorProvider provider = TinydtPlugin.getDefault().getColorProvider();
IToken keyword = new Token(new TextAttribute(provider
.getColor(NesCColorProvider.KEYWORD), provider
.getColor(NesCColorProvider.BACKGROUND), SWT.BOLD));
IToken type = new Token(new TextAttribute(provider
.getColor(NesCColorProvider.TYPE), provider
.getColor(NesCColorProvider.BACKGROUND), SWT.BOLD));
IToken string = new Token(new TextAttribute(provider
.getColor(NesCColorProvider.STRING)));
IToken comment = new Token(new TextAttribute(provider
.getColor(NesCColorProvider.SINGLE_LINE_COMMENT)));
IToken multicomment = new Token(new TextAttribute(provider
.getColor(NesCColorProvider.MULTI_LINE_COMMENT)));
IToken other = new Token(new TextAttribute(DEF));
//setDefaultReturnToken(other);
List rules = new ArrayList();
// Add rules for multi-line comments
rules.add(new MultiLineRule("/*", "*/", comment, (char)0, true ));
// Add rule for single line comments.
rules.add(new EndOfLineRule("//", comment));
// Add rule for strings and character constants.
rules.add(new SingleLineRule("\"", "\"", string, '\\'));
rules.add(new SingleLineRule("'", "'", string, '\\'));
// Add generic whitespace rule.
rules.add(new WhitespaceRule(new NesCWhiteSpaceDetector()));
// Add word rule for keywords, types, and constants.
WordRule wordRule = new WordRule(new NesCWordDetector(),other);
for(i=0; i<reservedwords.length; i++)
wordRule.addWord(reservedwords[i], keyword);
for(i=0; i<c_keywords.length; i++)
wordRule.addWord(c_keywords[i], keyword);
for(i=0; i<types.length; i++)
wordRule.addWord(types[i], type);
for(i=0; i<constants.length; i++)
wordRule.addWord(constants[i], type);
rules.add(wordRule);
IRule[] result = new IRule[rules.size()];
rules.toArray(result);
setRules(result);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?