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