package com.hundsun.ares.studio.cres.extend.ui.text.c; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.text.TextAttribute; 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.Token; import org.eclipse.jface.text.rules.WhitespaceRule; import org.eclipse.jface.text.rules.WordRule; import org.eclipse.swt.SWT; import com.hundsun.ares.studio.ui.ARESColorManager; import com.hundsun.ares.studio.ui.editor.text.ARESWhitespaceDetector; import com.hundsun.ares.studio.ui.editor.text.ARESWordDetector; public class CRuleBasedScanner extends RuleBasedScanner { private final String[] keywords = new String[] { "auto", "enum", "unsigned", "break", "extern", "return", "void", "case", "float", "short", "volatile", "char", "for", "signed", "while", "const", "goto", "sizeof", "continue", "if", "static", "defaule", "struct", "do", "int", "switch", "double", "long", "typedef", "else", "register", "union", // ���� "NULL", }; public CRuleBasedScanner(ARESColorManager colorManager) { IToken keyword = new Token(new TextAttribute(colorManager.getColor(ARESColorManager.KEYWORD), null, SWT.BOLD)); IToken defaultToken = new Token(new TextAttribute(colorManager.getColor(ARESColorManager.DEFAULT))); List<IRule> rules = new ArrayList<IRule>(); rules.add(new WhitespaceRule(new ARESWhitespaceDetector())); WordRule wordRule = new WordRule(new ARESWordDetector(), defaultToken); for(String s : keywords) { wordRule.addWord(s, keyword); } rules.add(wordRule); setRules(rules.toArray(new IRule[0])); } }