1 | package com.framsticks.framclipse.syntaxColoring; |
---|
2 | |
---|
3 | import java.util.ArrayList; |
---|
4 | import java.util.List; |
---|
5 | |
---|
6 | import org.eclipse.jface.text.TextAttribute; |
---|
7 | import org.eclipse.jface.text.rules.EndOfLineRule; |
---|
8 | import org.eclipse.jface.text.rules.IRule; |
---|
9 | import org.eclipse.jface.text.rules.IToken; |
---|
10 | import org.eclipse.jface.text.rules.RuleBasedScanner; |
---|
11 | import org.eclipse.jface.text.rules.SingleLineRule; |
---|
12 | import org.eclipse.jface.text.rules.Token; |
---|
13 | import org.eclipse.jface.text.rules.WordRule; |
---|
14 | import org.eclipse.swt.SWT; |
---|
15 | |
---|
16 | import com.framsticks.framclipse.Framclipse; |
---|
17 | |
---|
18 | |
---|
19 | public class FramscriptPropertyCodeScanner extends RuleBasedScanner { |
---|
20 | |
---|
21 | public final static String[] keywords = { "asm", "break", "call", "case", "continue", |
---|
22 | "default", "do", "else", "for", "function", "global", "goto", "if", "return", "switch", |
---|
23 | "typeof", "var", "while", }; |
---|
24 | |
---|
25 | public final static String[] operators = { "(", ")", "[", "]", "{", "}", "}", "=", "<", ">", |
---|
26 | "*", "/", "+", "-", "!", ";", "." }; |
---|
27 | |
---|
28 | public FramscriptPropertyCodeScanner() { |
---|
29 | ColorManager colorManager = Framclipse.getDefault().getColorManager(); |
---|
30 | IToken keyword = new Token(new TextAttribute(colorManager |
---|
31 | .getColor(FramclipseColors.KEYWORD), null, SWT.BOLD)); |
---|
32 | IToken comment = new Token(new TextAttribute(colorManager |
---|
33 | .getColor(FramclipseColors.COMMENT))); |
---|
34 | IToken string = new Token(new TextAttribute(colorManager.getColor(FramclipseColors.STRING))); |
---|
35 | IToken number = new Token(new TextAttribute(colorManager.getColor(FramclipseColors.NUMBER))); |
---|
36 | IToken code = new Token(new TextAttribute(colorManager.getColor(FramclipseColors.CODE))); |
---|
37 | IToken operator = new Token(new TextAttribute(colorManager |
---|
38 | .getColor(FramclipseColors.OPERATOR))); |
---|
39 | |
---|
40 | List<IRule> rules = new ArrayList<IRule>(); |
---|
41 | rules.add(new EndOfLineRule("//", comment)); |
---|
42 | rules.add(new SingleLineRule("\"", "\"", string, '\\')); |
---|
43 | rules.add(new SingleLineRule("\'", "\'", string, '\\')); |
---|
44 | |
---|
45 | WordRule numberRule = new WordRule(new FramscriptNumberDetector(), number); |
---|
46 | rules.add(numberRule); |
---|
47 | |
---|
48 | WordRule operatorRule = new WordRule(new FramscriptOperatorDetector(), code); |
---|
49 | for (int i = 0; i < operators.length; i++) { |
---|
50 | operatorRule.addWord(operators[i], operator); |
---|
51 | } |
---|
52 | rules.add(operatorRule); |
---|
53 | |
---|
54 | WordRule keywordRule = new WordRule(new FramscriptWordDetector(), code); |
---|
55 | for (int i = 0; i < keywords.length; i++) { |
---|
56 | keywordRule.addWord(keywords[i], keyword); |
---|
57 | } |
---|
58 | rules.add(keywordRule); |
---|
59 | |
---|
60 | setDefaultReturnToken(code); |
---|
61 | |
---|
62 | IRule[] result = new IRule[rules.size()]; |
---|
63 | result = rules.toArray(result); |
---|
64 | setRules(result); |
---|
65 | } |
---|
66 | } |
---|