JSTokenTypes.java

1    /* 
2     * Copyright 2000-2005 JetBrains s.r.o. 
3     * 
4     * Licensed under the Apache License, Version 2.0 (the "License"); 
5     * you may not use this file except in compliance with the License. 
6     * You may obtain a copy of the License at 
7     * 
8     * http://www.apache.org/licenses/LICENSE-2.0 
9     * 
10    * Unless required by applicable law or agreed to in writing, software 
11    * distributed under the License is distributed on an "AS IS" BASIS, 
12    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
13    * See the License for the specific language governing permissions and 
14    * limitations under the License. 
15    */ 
16   package com.intellij.lang.javascript; 
17    
18   import com.intellij.psi.TokenType; 
19   import com.intellij.psi.tree.IElementType; 
20   import com.intellij.psi.tree.TokenSet; 
21    
22   /** 
23    * Created by IntelliJ IDEA. 
24    * User: max 
25    * Date: Jan 27, 2005 
26    * Time: 6:40:01 PM 
27    * To change this template use File | Settings | File Templates. 
28    */ 
29   public interface JSTokenTypes {   
30     IElementType IDENTIFIER = new JSElementType("IDENTIFIER"); 
31     IElementType WHITE_SPACE = TokenType.WHITE_SPACE; 
32     IElementType BAD_CHARACTER = TokenType.BAD_CHARACTER; 
33    
34     IElementType SEMANTIC_LINEFEED = new JSElementType("SEMANTIC_LINEFEED"); 
35    
36     IElementType END_OF_LINE_COMMENT = new JSElementType("END_OF_LINE_COMMENT"); 
37     IElementType C_STYLE_COMMENT = new JSElementType("C_STYLE_COMMENT"); 
38     IElementType XML_STYLE_COMMENT = new JSElementType("XML_STYLE_COMMENT"); 
39     IElementType DOC_COMMENT = new JSElementType("DOC_COMMENT"); 
40    
41     // Keywords: 
42     IElementType BREAK_KEYWORD = new JSElementType("BREAK_KEYWORD"); 
43     IElementType CASE_KEYWORD = new JSElementType("CASE_KEYWORD"); 
44     IElementType CATCH_KEYWORD = new JSElementType("CATCH_KEYWORD"); 
45     IElementType CONST_KEYWORD = new JSElementType("CONST_KEYWORD"); 
46     IElementType CONTINUE_KEYWORD = new JSElementType("CONTINUE_KEYWORD"); 
47     IElementType DELETE_KEYWORD = new JSElementType("DELETE_KEYWORD"); 
48     IElementType DEFAULT_KEYWORD = new JSElementType("DEFAULT_KEYWORD"); 
49     IElementType DO_KEYWORD = new JSElementType("DO_KEYWORD"); 
50     IElementType ELSE_KEYWORD = new JSElementType("ELSE_KEYWORD"); 
51     IElementType FINALLY_KEYWORD = new JSElementType("FINALLY_KEYWORD"); 
52     IElementType FOR_KEYWORD = new JSElementType("FOR_KEYWORD"); 
53     IElementType FUNCTION_KEYWORD = new JSElementType("FUNCTION_KEYWORD"); 
54     IElementType IF_KEYWORD = new JSElementType("IF_KEYWORD"); 
55     IElementType IN_KEYWORD = new JSElementType("IN_KEYWORD"); 
56     IElementType INSTANCEOF_KEYWORD = new JSElementType("INSTANCEOF_KEYWORD"); 
57     IElementType NEW_KEYWORD = new JSElementType("NEW_KEYWORD"); 
58     IElementType RETURN_KEYWORD = new JSElementType("RETURN_KEYWORD"); 
59     IElementType SWITCH_KEYWORD = new JSElementType("SWITCH_KEYWORD"); 
60     IElementType THIS_KEYWORD = new JSElementType("THIS_KEYWORD"); 
61     IElementType THROW_KEYWORD = new JSElementType("THROW_KEYWORD"); 
62     IElementType TRY_KEYWORD = new JSElementType("TRY_KEYWORD"); 
63     IElementType TYPEOF_KEYWORD = new JSElementType("TYPEOF_KEYWORD"); 
64     IElementType VAR_KEYWORD = new JSElementType("VAR_KEYWORD"); 
65     IElementType VOID_KEYWORD = new JSElementType("VOID_KEYWORD"); 
66     IElementType WHILE_KEYWORD = new JSElementType("WHILE_KEYWORD"); 
67     IElementType WITH_KEYWORD = new JSElementType("WITH_KEYWORD"); 
68    
69     // Hardcoded literals 
70     IElementType TRUE_KEYWORD = new JSElementType("TRUE_KEYWORD"); 
71     IElementType FALSE_KEYWORD = new JSElementType("FALSE_KEYWORD"); 
72     IElementType NULL_KEYWORD = new JSElementType("NULL_KEYWORD"); 
73    
74     TokenSet KEYWORDS = TokenSet.create( 
75                           BREAK_KEYWORD, CASE_KEYWORD, CATCH_KEYWORD, CONST_KEYWORD, CONTINUE_KEYWORD, DELETE_KEYWORD, DEFAULT_KEYWORD, 
76                               DO_KEYWORD, ELSE_KEYWORD, FINALLY_KEYWORD, FOR_KEYWORD, FUNCTION_KEYWORD, IF_KEYWORD, IN_KEYWORD, 
77                               INSTANCEOF_KEYWORD, NEW_KEYWORD, RETURN_KEYWORD, SWITCH_KEYWORD, THIS_KEYWORD, THROW_KEYWORD, 
78                               TRY_KEYWORD, TYPEOF_KEYWORD, VAR_KEYWORD, VOID_KEYWORD, WHILE_KEYWORD, WITH_KEYWORD, TRUE_KEYWORD, FALSE_KEYWORD, NULL_KEYWORD); 
79    
80     // Literals 
81     IElementType NUMERIC_LITERAL = new JSElementType("NUMERIC_LITERAL"); 
82     IElementType STRING_LITERAL = new JSElementType("STRING_LITERAL"); 
83     IElementType REGEXP_LITERAL = new JSElementType("REGEXP_LITERAL"); 
84    
85     // Punctuators 
86     IElementType LBRACE = new JSElementType("LBRACE");// { 
87     IElementType RBRACE = new JSElementType("RBRACE");// } 
88     IElementType LPAR = new JSElementType("LPAR");// ( 
89     IElementType RPAR = new JSElementType("RPAR");// ) 
90     IElementType LBRACKET = new JSElementType("LBRACKET");// [ 
91     IElementType RBRACKET = new JSElementType("RBRACKET");// ] 
92     IElementType DOT = new JSElementType("DOT");// . 
93     IElementType SEMICOLON = new JSElementType("SEMICOLON");// ; 
94     IElementType COMMA = new JSElementType("COMMA");// , 
95    
96     IElementType LT = new JSElementType("LT");// < 
97     IElementType GT = new JSElementType("GT");// > 
98     IElementType LE = new JSElementType("LE");// <= 
99     IElementType GE = new JSElementType("GE");// >= 
100    IElementType EQEQ = new JSElementType("EQEQ");// == 
101    IElementType NE = new JSElementType("NE");// != 
102    IElementType EQEQEQ = new JSElementType("EQEQEQ");// === 
103    IElementType NEQEQ = new JSElementType("NEQEQ");// !== 
104    IElementType PLUS = new JSElementType("PLUS");// + 
105    IElementType MINUS = new JSElementType("MINUS");// - 
106    IElementType MULT = new JSElementType("MULT");// * 
107    IElementType PERC = new JSElementType("PERC");// % 
108    IElementType PLUSPLUS = new JSElementType("PLUSPLUS");// ++ 
109    IElementType MINUSMINUS = new JSElementType("MINUSMINUS");// -- 
110    IElementType LTLT = new JSElementType("LTLT");// << 
111    IElementType GTGT = new JSElementType("GTGT");// >> 
112    IElementType GTGTGT = new JSElementType("GTGTGT");// >>> 
113    IElementType AND = new JSElementType("AND");// & 
114    IElementType OR = new JSElementType("OR");// | 
115    IElementType XOR = new JSElementType("XOR");// ^ 
116    IElementType EXCL = new JSElementType("EXCL");// ! 
117    IElementType TILDE = new JSElementType("TILDE");// ~ 
118    IElementType ANDAND = new JSElementType("ANDAND");// && 
119    IElementType OROR = new JSElementType("OROR");// || 
120    IElementType QUEST = new JSElementType("QUEST");// ? 
121    IElementType COLON = new JSElementType("COLON");// : 
122    IElementType EQ = new JSElementType("EQ");// = 
123    IElementType PLUSEQ = new JSElementType("PLUSEQ");// += 
124    IElementType MINUSEQ = new JSElementType("MINUSEQ");// -= 
125    IElementType MULTEQ = new JSElementType("MULTEQ");// *= 
126    IElementType PERCEQ = new JSElementType("PERCEQ");// %= 
127    IElementType LTLTEQ = new JSElementType("LTLTEQ");// <<= 
128    IElementType GTGTEQ = new JSElementType("GTGTEQ");// >>= 
129    IElementType GTGTGTEQ = new JSElementType("GTGTGTEQ");// >>>= 
130    IElementType ANDEQ = new JSElementType("ANDEQ");// &= 
131    IElementType OREQ = new JSElementType("OREQ");// |= 
132    IElementType XOREQ = new JSElementType("XOREQ");// ^= 
133    IElementType DIV = new JSElementType("DIV"); // / 
134    IElementType DIVEQ = new JSElementType("DIVEQ"); // /= 
135   
136    IElementType CDATA_START = new JSElementType("CDATA_START"); // <![CDATA[ 
137    IElementType CDATA_END = new JSElementType("CDATA_END"); // ]]> 
138   
139    TokenSet OPERATIONS = TokenSet.create( 
140      LT, GT, LE, GE, EQEQ, NE, EQEQEQ, NEQEQ, PLUS, MINUS, MULT, PERC, PLUSPLUS, MINUSMINUS, LTLT, GTGT, GTGTGT, AND, OR, 
141      XOR, EXCL, TILDE, ANDAND, OROR, QUEST, COLON, EQ, PLUSEQ, MINUSEQ, MULTEQ, PERCEQ, LTLTEQ, GTGTEQ, GTGTGTEQ, ANDEQ, 
142      OREQ, XOREQ, DIV, DIVEQ, COMMA 
143    ); 
144   
145    TokenSet ASSIGNMENT_OPERATIONS = TokenSet.create( 
146      EQ, PLUSEQ, MINUSEQ, MULTEQ, PERCEQ, LTLTEQ, GTGTEQ, GTGTGTEQ, ANDEQ, 
147      OREQ, XOREQ, DIVEQ 
148    ); 
149   
150   
151    TokenSet EQUALITY_OPERATIONS = TokenSet.create( 
152      EQEQ, NE, EQEQEQ, NEQEQ 
153    ); 
154   
155    TokenSet RELATIONAL_OPERATIONS = TokenSet.create( 
156      LT, GT, LE, GE, INSTANCEOF_KEYWORD, IN_KEYWORD 
157    ); 
158   
159    TokenSet ADDITIVE_OPERATIONS = TokenSet.create( 
160      PLUS, MINUS 
161    ); 
162   
163    TokenSet MULTIPLICATIVE_OPERATIONS = TokenSet.create( 
164      MULT, DIV, PERC 
165    ); 
166   
167    TokenSet SHIFT_OPERATIONS = TokenSet.create( 
168      LTLT, GTGT, GTGTGT 
169    ); 
170   
171    TokenSet UNARY_OPERATIONS = TokenSet.create( 
172      PLUS, MINUS, PLUSPLUS, MINUSMINUS, TILDE, EXCL, TYPEOF_KEYWORD, VOID_KEYWORD, DELETE_KEYWORD 
173    ); 
174   
175    TokenSet COMMENTS = TokenSet.create( 
176      END_OF_LINE_COMMENT, DOC_COMMENT, C_STYLE_COMMENT, XML_STYLE_COMMENT, CDATA_START, CDATA_END 
177    ); 
178  } 
179