1 | /* |
---|
2 | * Created on Jan 27, 2005 |
---|
3 | * |
---|
4 | * TODO To change the template for this generated file go to |
---|
5 | * Window - Preferences - Java - Code Style - Code Templates |
---|
6 | */ |
---|
7 | package org.modelica.mdt.editor; |
---|
8 | |
---|
9 | import org.eclipse.jface.text.TextAttribute; |
---|
10 | import org.eclipse.jface.text.rules.EndOfLineRule; |
---|
11 | import org.eclipse.jface.text.rules.IRule; |
---|
12 | import org.eclipse.jface.text.rules.IToken; |
---|
13 | import org.eclipse.jface.text.rules.RuleBasedScanner; |
---|
14 | import org.eclipse.jface.text.rules.SingleLineRule; |
---|
15 | import org.eclipse.jface.text.rules.MultiLineRule; |
---|
16 | import org.eclipse.jface.text.rules.WordRule; |
---|
17 | import org.eclipse.jface.text.rules.Token; |
---|
18 | import org.eclipse.swt.SWT; |
---|
19 | import org.eclipse.swt.graphics.Color; |
---|
20 | import org.eclipse.swt.graphics.RGB; |
---|
21 | import org.eclipse.swt.widgets.Display; |
---|
22 | import java.lang.String; |
---|
23 | |
---|
24 | /** |
---|
25 | * @author Peter Bunus |
---|
26 | * |
---|
27 | * TODO To change the template for this generated type comment go to |
---|
28 | * Window - Preferences - Java - Code Style - Code Templates |
---|
29 | */ |
---|
30 | public class ModelicaRuleScanner extends RuleBasedScanner |
---|
31 | implements ModelicaSyntax { |
---|
32 | |
---|
33 | //comments are shown in green 4 (0,139,0) |
---|
34 | private static Color COMMENT_COLOR = new Color(Display.getCurrent(), new RGB(0, 139, 0)); |
---|
35 | //Modelica reserved keywords are shown in red4 (139,0,0) |
---|
36 | private static Color KEYWORD_COLOR = new Color(Display.getCurrent(), new RGB(139, 0, 0)); |
---|
37 | //Modelica types are shown in blue4 (0,0,139) |
---|
38 | private static Color TYPES_COLOR = new Color(Display.getCurrent(), new RGB(0, 0, 139)); |
---|
39 | |
---|
40 | public ModelicaRuleScanner() { |
---|
41 | |
---|
42 | IToken commentToken = new Token(new TextAttribute(COMMENT_COLOR,null,SWT.BOLD)); |
---|
43 | IToken keywordToken = new Token(new TextAttribute(KEYWORD_COLOR,null,SWT.BOLD)); |
---|
44 | IToken typesToken = new Token(new TextAttribute(TYPES_COLOR,null,SWT.BOLD)); |
---|
45 | |
---|
46 | IRule[] rules = new IRule[4]; |
---|
47 | |
---|
48 | |
---|
49 | // Add word rule for keywords, types, and constants. |
---|
50 | WordRule wordRule = new WordRule(new ModelicaKeywordDetector()); |
---|
51 | for (int i = 0; i < reservedwords.length; i++) |
---|
52 | wordRule.addWord(reservedwords[i], keywordToken); |
---|
53 | for (int i = 0; i < types.length; i++) |
---|
54 | wordRule.addWord(types[i], typesToken); |
---|
55 | for (int i = 0; i < constants.length; i++) |
---|
56 | wordRule.addWord(constants[i], keywordToken); |
---|
57 | rules[0]=wordRule; |
---|
58 | |
---|
59 | // this will match single line Modelica comments given between quotes "this is a comment" |
---|
60 | String begging = "this if \\u0022" ; |
---|
61 | System.out.println(begging); |
---|
62 | rules[1] = (new SingleLineRule( "\"", "\"", commentToken,'\\')); |
---|
63 | // this will match sinle line Modelica comments precceded by double backslash |
---|
64 | rules[2] = (new EndOfLineRule("//", commentToken,'\\')); |
---|
65 | //Add rules for multi-line comments |
---|
66 | rules[3] = (new MultiLineRule("/*", "*/", commentToken, (char) 0, true)); |
---|
67 | |
---|
68 | setRules(rules); |
---|
69 | } |
---|
70 | |
---|
71 | } |
---|