⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drlscanner.java

📁 jboss规则引擎
💻 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 + -