source: java/FramclipsePlugin/src/main/java/com/framsticks/framclipse/syntaxColoring/FramscriptCodeScanner.java @ 193

Last change on this file since 193 was 193, checked in by Maciej Komosinski, 10 years ago

Set svn:eol-style native for all textual files

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