Organized imports
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.js.core / src / net / sourceforge / phpeclipse / js / core / parser / JSPartitionScanner.java
1 /*
2  * $RCSfile: JSPartitionScanner.java,v $
3  *
4  * Copyright 2002
5  * CH-1700 Fribourg, Switzerland
6  * All rights reserved.
7  *
8  *========================================================================
9  * Modifications history
10  *========================================================================
11  * $Log: not supported by cvs2svn $
12  * Revision 1.2  2004/11/02 19:51:53  axelcl
13  * delete finally
14  *
15  * Revision 1.2  2004/09/15 06:52:15  agfitzp
16  * added finally keyword... finally
17  *
18  * Revision 1.1  2004/02/26 02:25:42  agfitzp
19  * renamed packages to match xml & css
20  *
21  * Revision 1.1  2004/02/05 03:10:08  agfitzp
22  * Initial Submission
23  *
24  * Revision 1.1.2.1  2003/12/12 21:37:24  agfitzp
25  * Experimental work for Classes view
26  *
27  * Revision 1.3  2003/05/30 20:53:09  agfitzp
28  * 0.0.2 : Outlining is now done as the user types. Some other bug fixes.
29  *
30  * Revision 1.2  2003/05/28 20:47:58  agfitzp
31  * Outline the document, not the file.
32  *
33  * Revision 1.1  2003/05/28 15:17:12  agfitzp
34  * net.sf.wdte.js.core 0.0.1 code base
35  *
36  *========================================================================
37 */
38
39 package net.sourceforge.phpeclipse.js.core.parser;
40
41 import java.util.ArrayList;
42 import java.util.List;
43
44 import org.eclipse.jface.text.rules.IPredicateRule;
45 import org.eclipse.jface.text.rules.IToken;
46 import org.eclipse.jface.text.rules.MultiLineRule;
47 import org.eclipse.jface.text.rules.RuleBasedPartitionScanner;
48 import org.eclipse.jface.text.rules.SingleLineRule;
49 import org.eclipse.jface.text.rules.Token;
50
51 /**
52  * 
53  *
54  * @author $Author: stefanbjarni $, $Date: 2005-05-06 00:58:28 $
55  *
56  * @version $Revision: 1.3 $
57  */
58 public class JSPartitionScanner extends RuleBasedPartitionScanner {
59         public final static String JS_DEFAULT = "__js_default";
60         public final static String JS_COMMENT = "__js_comment";
61         public final static String JS_KEYWORD = "__js_keyword";
62         public final static String JS_STRING = "__js_string";
63
64         public final static IToken TOKEN_STRING = new Token(JS_STRING);
65         public final static IToken TOKEN_COMMENT = new Token(JS_COMMENT);
66         public final static IToken TOKEN_DEFAULT = new Token(JS_DEFAULT);
67         public final static IToken TOKEN_KEYWORD = new Token(JS_KEYWORD);
68
69         /**
70          * Array of keyword token strings.
71          */
72         private static String[] keywordTokens= {
73                 "break", 
74                 "case", "catch", "continue", 
75                 "default", "do", 
76                 "else", 
77                 "finally", "for", "function",
78                 "goto", 
79                 "if", "in", 
80                 "new", 
81                 "return",
82                 "switch",
83                 "this", "throw", "try",
84                 "var", "void",
85                 "while", "with"
86         };
87
88         /**
89          * Array of constant token strings.
90          */
91         private static String[] constantTokens= { "false", "null", "true" };
92
93
94         /**
95          * Creates a new JSPartitionScanner object.
96          */
97         public JSPartitionScanner() {
98                 List rules = new ArrayList();
99
100                 rules.add(new MultiLineRule("/*", "*/", TOKEN_COMMENT));
101                 rules.add(new SingleLineRule("//", "", TOKEN_COMMENT));
102                 rules.add(new SingleLineRule("\"", "\"", TOKEN_STRING, '\\'));
103                 rules.add(new SingleLineRule("'", "'", TOKEN_STRING, '\\'));
104                 
105                 PredicateWordRule keywordRule = new PredicateWordRule(new JSWordDetector(), TOKEN_DEFAULT, keywordTokens, TOKEN_KEYWORD);
106                 keywordRule.addWords(constantTokens, TOKEN_KEYWORD);
107                 rules.add(keywordRule);
108                 
109                 setRuleList(rules);
110         }
111
112
113         private void setRuleList(List rules)
114         {
115                 IPredicateRule[] result = new IPredicateRule[rules.size()];
116                 rules.toArray(result);
117                 setPredicateRules(result);
118         }
119 }