2 * $RCSfile: JSPartitionScanner.java,v $
5 * CH-1700 Fribourg, Switzerland
8 *========================================================================
9 * Modifications history
10 *========================================================================
11 * $Log: not supported by cvs2svn $
12 * Revision 1.2 2004/11/02 19:51:53 axelcl
15 * Revision 1.2 2004/09/15 06:52:15 agfitzp
16 * added finally keyword... finally
18 * Revision 1.1 2004/02/26 02:25:42 agfitzp
19 * renamed packages to match xml & css
21 * Revision 1.1 2004/02/05 03:10:08 agfitzp
24 * Revision 1.1.2.1 2003/12/12 21:37:24 agfitzp
25 * Experimental work for Classes view
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.
30 * Revision 1.2 2003/05/28 20:47:58 agfitzp
31 * Outline the document, not the file.
33 * Revision 1.1 2003/05/28 15:17:12 agfitzp
34 * net.sf.wdte.js.core 0.0.1 code base
36 *========================================================================
39 package net.sourceforge.phpeclipse.js.core.parser;
41 import java.util.ArrayList;
42 import java.util.List;
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;
54 * @author $Author: stefanbjarni $, $Date: 2005-05-06 00:58:28 $
56 * @version $Revision: 1.3 $
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";
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);
70 * Array of keyword token strings.
72 private static String[] keywordTokens= {
74 "case", "catch", "continue",
77 "finally", "for", "function",
83 "this", "throw", "try",
89 * Array of constant token strings.
91 private static String[] constantTokens= { "false", "null", "true" };
95 * Creates a new JSPartitionScanner object.
97 public JSPartitionScanner() {
98 List rules = new ArrayList();
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, '\\'));
105 PredicateWordRule keywordRule = new PredicateWordRule(new JSWordDetector(), TOKEN_DEFAULT, keywordTokens, TOKEN_KEYWORD);
106 keywordRule.addWords(constantTokens, TOKEN_KEYWORD);
107 rules.add(keywordRule);
113 private void setRuleList(List rules)
115 IPredicateRule[] result = new IPredicateRule[rules.size()];
116 rules.toArray(result);
117 setPredicateRules(result);