package com.hundsun.ares.studio.ui.editor.text;
import org.eclipse.jface.text.rules.EndOfLineRule;
import org.eclipse.jface.text.rules.IPredicateRule;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.MultiLineRule;
import org.eclipse.jface.text.rules.RuleBasedPartitionScanner;
import org.eclipse.jface.text.rules.SingleLineRule;
import org.eclipse.jface.text.rules.Token;
public class ARESPartitionScanner extends RuleBasedPartitionScanner {
public static final String HS_STRING = "__hs_string";
public static final String HS_COMMENT = "__hs_comment";
public static final String HS_CHARACTOR = "__hs_charactor";
public static final String HS_MACRO = "__hs_macro";
// public static final String HS_STDFIELD = "__hs_stdf";
//
// public static class StdWordDetector implements IWordDetector {
//
// /* (non-Javadoc)
// * @see org.eclipse.jface.text.rules.IWordDetector#isWordPart(char)
// */
// public boolean isWordPart(char c) {
// return (c >= 'a' && c <= 'z') || (c>= 'A' && c <= 'Z') || (c == '_') || (c>= '0' && c <= '9');
// //return Character.isJavaIdentifierPart(c);
// }
//
// /* (non-Javadoc)
// * @see org.eclipse.jface.text.rules.IWordDetector#isWordStart(char)
// */
// public boolean isWordStart(char c) {
// return c == '@';
// //return Character.isJavaIdentifierStart(c);
// }
//
// }
public ARESPartitionScanner() {
IToken comment = new Token(HS_COMMENT);
IToken macro = new Token(HS_MACRO);
IToken string = new Token(HS_STRING);
IToken charactor = new Token(HS_CHARACTOR);
// IToken stdf = new Token(HS_STDFIELD);
IPredicateRule[] rules = new IPredicateRule[5];
rules[0] = new EndOfLineRule("//", comment);
rules[1] = new MultiLineRule("/*", "*/", comment);
rules[2] = new MultiLineRule("[", "]", macro);
rules[3] = new SingleLineRule("\"", "\"", string);
rules[4] = new SingleLineRule("\'", "\'", charactor);
// rules[5] = new WordPatternRule(new StdWordDetector(), "@", null, stdf);
setPredicateRules(rules);
}
}