/* * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.intellij.coldFusion.model.lexer; import com.intellij.coldFusion.model.psi.CfmlElementType; import com.intellij.coldFusion.model.psi.CfmlOperatorTokenType; import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.TokenSet; import static com.intellij.coldFusion.model.psi.CfmlExpressionTypeCalculator.*; /** * Created by Lera Nikolaenko * Date: 24.11.2008 */ public interface CfscriptTokenTypes { IElementType COMMENT = new CfmlElementType("COMMENT"); IElementType WHITE_SPACE = new CfmlElementType("WHITE_SPACE"); IElementType L_BRACKET = new CfmlElementType("L_BRACKET"); // ( IElementType R_BRACKET = new CfmlElementType("R_BRACKET"); // ) IElementType L_SQUAREBRACKET = new CfmlElementType("L_SQUAREBRACKET"); // [ IElementType R_SQUAREBRACKET = new CfmlElementType("R_SQUAREBRACKET"); // ] IElementType L_CURLYBRACKET = new CfmlElementType("L_CURLYBRACKET"); // { IElementType R_CURLYBRACKET = new CfmlElementType("R_CURLYBRACKET"); // } IElementType SEMICOLON = new CfmlElementType("SEMICOLON"); // ; IElementType QUESTION = new CfmlElementType("QUESTION"); IElementType ELVIS = new CfmlOperatorTokenType("ELVIS", PLUS_CALCULATOR); IElementType COMMA = new CfmlElementType("COMMA"); IElementType POINT = new CfmlElementType("POINT"); IElementType DOTDOT = new CfmlElementType("DOTDOT"); /* arithmetic operators */ /* boolean logic operators */ IElementType NOT = new CfmlOperatorTokenType("NOT", BOOLEAN_CALCULATOR); IElementType OR = new CfmlOperatorTokenType("OR", BOOLEAN_CALCULATOR); IElementType AND = new CfmlOperatorTokenType("AND", BOOLEAN_CALCULATOR); /* boolean literal logic operators */ IElementType NOT_L = new CfmlOperatorTokenType("NOT_L", BOOLEAN_CALCULATOR); IElementType AND_L = new CfmlOperatorTokenType("AND_L", BOOLEAN_CALCULATOR); IElementType OR_L = new CfmlOperatorTokenType("OR_L", BOOLEAN_CALCULATOR); IElementType NOT_XOR_L = new CfmlOperatorTokenType("NOT_XOR_L", BOOLEAN_CALCULATOR); IElementType XOR_L = new CfmlOperatorTokenType("XOR_L", BOOLEAN_CALCULATOR); IElementType IMP_L = new CfmlOperatorTokenType("IMP_L", BOOLEAN_CALCULATOR); /* boolean literal comparison operators */ IElementType EQ_L = new CfmlOperatorTokenType("EQ_L", BOOLEAN_CALCULATOR); IElementType NEQ_L = new CfmlOperatorTokenType("NEQ_L", BOOLEAN_CALCULATOR); IElementType CONTAINS_L = new CfmlOperatorTokenType("CONTAINS_L", BOOLEAN_CALCULATOR); IElementType NOT_CONTAINS_L = new CfmlOperatorTokenType("NOT_CONTAINS_L", BOOLEAN_CALCULATOR); IElementType GT_L = new CfmlOperatorTokenType("GT_L", BOOLEAN_CALCULATOR); IElementType LT_L = new CfmlOperatorTokenType("LT_L", BOOLEAN_CALCULATOR); IElementType GE_L = new CfmlOperatorTokenType("GE_L", BOOLEAN_CALCULATOR); IElementType LE_L = new CfmlOperatorTokenType("LE_L", BOOLEAN_CALCULATOR); /* boolean comparison operators */ IElementType EQEQ = new CfmlOperatorTokenType("EQEQ", BOOLEAN_CALCULATOR); IElementType NEQ = new CfmlOperatorTokenType("NEQ", BOOLEAN_CALCULATOR); IElementType LT = new CfmlOperatorTokenType("LT", BOOLEAN_CALCULATOR); IElementType LTE = new CfmlOperatorTokenType("LTE", BOOLEAN_CALCULATOR); IElementType GT = new CfmlOperatorTokenType("GT", BOOLEAN_CALCULATOR); IElementType GTE = new CfmlOperatorTokenType("GTE", BOOLEAN_CALCULATOR); /* string operator */ IElementType CONCAT = new CfmlOperatorTokenType("CONCAT", CONCATINATION_CALCULATOR); // & IElementType CONCAT_EQ = new CfmlOperatorTokenType("CONCAT_EQ", CONCATINATION_CALCULATOR); // & /* numeric operators */ IElementType ADD = new CfmlOperatorTokenType("ADD", PLUS_CALCULATOR); IElementType ADD_EQ = new CfmlOperatorTokenType("ADD_EQ", PLUS_CALCULATOR); IElementType MINUS = new CfmlOperatorTokenType("MINUS", MINUS_CALCULATOR); IElementType MINUS_EQ = new CfmlOperatorTokenType("MINUS_EQ", MINUS_CALCULATOR); IElementType MUL = new CfmlOperatorTokenType("MUL", MULTIPLICATIVE_CALCULATOR); IElementType MUL_EQ = new CfmlOperatorTokenType("MUL_EQ", MULTIPLICATIVE_CALCULATOR); IElementType DEV = new CfmlOperatorTokenType("DEV", MULTIPLICATIVE_CALCULATOR); IElementType DEV_EQ = new CfmlOperatorTokenType("DEV_EQ", MULTIPLICATIVE_CALCULATOR); IElementType MOD_L = new CfmlOperatorTokenType("MOD_L", MINUS_CALCULATOR); IElementType INC = new CfmlElementType("INC"); IElementType DEC = new CfmlElementType("DEC"); IElementType MOD = new CfmlElementType("MOD"); IElementType INT_DEV = new CfmlElementType("INT_DEV"); IElementType POW = new CfmlOperatorTokenType("POW", MULTIPLICATIVE_CALCULATOR); IElementType IN_L = new CfmlElementType("IN_L"); // IElementType ASSIGN = new CfmlElementType("ASSIGN"); /* literals */ IElementType INTEGER = new CfmlElementType("INTEGER"); IElementType DOUBLE = new CfmlElementType("DOUBLE"); /* IElementType SINGLE_QUOTE = new CfmlElementType("SINGLE_QUOTE"); IElementType DOUBLE_QUOTE = new CfmlElementType("DOUBLE_QUOTE"); IElementType SINGLE_QUOTE_CLOSER = new CfmlElementType("SINGLE_QUOTE_CLOSER"); IElementType DOUBLE_QUOTE_CLOSER = new CfmlElementType("DOUBLE_QUOTE_CLOSER"); */ IElementType BOOLEAN = new CfmlElementType("BOOLEAN"); IElementType OPENSHARP = new CfmlElementType("OPENSHARP"); IElementType CLOSESHARP = new CfmlElementType("CLOSESHARP"); // TokenSet STRING_ELEMENTS = TokenSet.create(SINGLE_QUOTE, DOUBLE_QUOTE, SINGLE_QUOTE_CLOSER, DOUBLE_QUOTE_CLOSER); TokenSet ASSIGN_OPERATORS = TokenSet.create(CONCAT_EQ, ADD_EQ, MINUS_EQ, MUL_EQ, DEV_EQ, CfmlTokenTypes.ASSIGN); TokenSet WORD_BINARY_OPERATIONS = TokenSet.create(MOD_L, AND_L, OR_L, NOT_XOR_L, XOR_L, IMP_L, EQ_L, NEQ_L, CONTAINS_L, NOT_CONTAINS_L, GT_L, LT_L, GE_L, LE_L, IN_L); TokenSet WORD_PREFIX_OPERATIONS = TokenSet.create(NOT_L); TokenSet SYMBOL_BINARY_OPERATIONS = TokenSet .create(CfmlTokenTypes.ASSIGN, ADD, ADD_EQ, MINUS, MINUS_EQ, MUL, MUL_EQ, DEV, DEV_EQ, MOD, INT_DEV, POW, AND, OR, CONCAT, CONCAT_EQ, EQEQ, NEQ, LT, LTE, GT, GTE, ELVIS); TokenSet SYMBOL_PREFIX_OPERATIONS = TokenSet.create(MINUS, ADD, INC, DEC, NOT); TokenSet SYMBOL_POSTFIX_OPERATIONS = TokenSet.create(INC, DEC); // for lexer highlighting TokenSet SYMBOL_OPERATIONS = TokenSet.orSet(TokenSet.orSet(SYMBOL_BINARY_OPERATIONS, SYMBOL_PREFIX_OPERATIONS), SYMBOL_POSTFIX_OPERATIONS); TokenSet WORD_OPERATIONS = TokenSet.orSet(WORD_BINARY_OPERATIONS, WORD_PREFIX_OPERATIONS); TokenSet OPERATIONS = TokenSet.orSet(SYMBOL_OPERATIONS, WORD_OPERATIONS); // for parsing //TokenSet BINARY_OPERATIONS = TokenSet.orSet(SYMBOL_BINARY_OPERATIONS, WORD_BINARY_OPERATIONS); TokenSet PREFIX_OPERATIONS = TokenSet.orSet(SYMBOL_PREFIX_OPERATIONS, WORD_PREFIX_OPERATIONS); TokenSet POSTFIX_OPERATIONS = SYMBOL_POSTFIX_OPERATIONS; TokenSet BRACKETS = TokenSet.create(L_BRACKET, R_BRACKET, L_SQUAREBRACKET, R_SQUAREBRACKET, L_CURLYBRACKET, R_CURLYBRACKET); IElementType IDENTIFIER = new CfmlElementType("IDENTIFIER"); IElementType BAD_CHARACTER = new CfmlElementType("BAD_CHARACTER"); IElementType BREAK_KEYWORD = new CfmlElementType("BREAK_KEYWORD"); IElementType ABORT_KEYWORD = new CfmlElementType("ABORT_KEYWORD"); IElementType INCLUDE_KEYWORD = new CfmlElementType("INCLUDE_KEYWORD"); IElementType DEFAULT_KEYWORD = new CfmlElementType("DEFAULT_KEYWORD"); IElementType FUNCTION_KEYWORD = new CfmlElementType("FUNCTION_KEYWORD"); IElementType SWITCH_KEYWORD = new CfmlElementType("SWITCH_KEYWORD"); IElementType CASE_KEYWORD = new CfmlElementType("CASE_KEYWORD"); IElementType DO_KEYWORD = new CfmlElementType("DO_KEYWORD"); IElementType IF_KEYWORD = new CfmlElementType("IF_KEYWORD"); IElementType TRY_KEYWORD = new CfmlElementType("TRY_KEYWORD"); IElementType CATCH_KEYWORD = new CfmlElementType("CATCH_KEYWORD"); IElementType FINALLY_KEYWORD = new CfmlElementType("FINALLY_KEYWORD"); IElementType RETHROW_KEYWORD = new CfmlElementType("RETHROW_KEYWORD"); IElementType ELSE_KEYWORD = new CfmlElementType("ELSE_KEYWORD"); IElementType VAR_KEYWORD = new CfmlElementType("VAR_KEYWORD"); IElementType WHILE_KEYWORD = new CfmlElementType("WHILE_KEYWORD"); IElementType CONTINUE_KEYWORD = new CfmlElementType("CONTINUE_KEYWORD"); IElementType FOR_KEYWORD = new CfmlElementType("FOR_KEYWORD"); IElementType RETURN_KEYWORD = new CfmlElementType("RETURN_KEYWORD"); IElementType SCOPE_KEYWORD = new CfmlElementType("SCOPE_KEYWORD"); // ColdFusion9 IElementType COMPONENT_KEYWORD = new CfmlElementType("COMPONENT_KEYWORD"); IElementType INTERFACE_KEYWORD = new CfmlElementType("INTERFACE_KEYWORD"); IElementType PAGEENCODING_KEYWORD = new CfmlElementType("PAGEENCODING_KEYWORD"); IElementType REQUIRED_KEYWORD = new CfmlElementType("REQUIRED_KEYWORD"); IElementType PUBLIC_KEYWORD = new CfmlElementType("PUBLIC_KEYWORD"); IElementType PRIVATE_KEYWORD = new CfmlElementType("PRIVATE_KEYWORD"); IElementType REMOTE_KEYWORD = new CfmlElementType("REMOTE_KEYWORD"); IElementType PACKAGE_KEYWORD = new CfmlElementType("PACKAGE_KEYWORD"); IElementType ANY_TYPE = new CfmlElementType("ANY_TYPE"); IElementType ARRAY_TYPE = new CfmlElementType("ARRAY_TYPE"); IElementType BINARY_TYPE = new CfmlElementType("BINARY_TYPE"); IElementType BOOLAEN_TYPE = new CfmlElementType("BOOLAEN_TYPE"); IElementType DATE_TYPE = new CfmlElementType("DATE_TYPE"); IElementType GUID_TYPE = new CfmlElementType("GUID_TYPE"); IElementType NUMERIC_TYPE = new CfmlElementType("NUMERIC_TYPE"); IElementType QUERY_TYPE = new CfmlElementType("QUERY_TYPE"); IElementType STRING_TYPE = new CfmlElementType("STRING_TYPE"); IElementType STRUCT_TYPE = new CfmlElementType("STRUCT_TYPE"); IElementType UUID_TYPE = new CfmlElementType("UUID_TYPE"); IElementType VARIABLENAME_TYPE = new CfmlElementType("VARIABLENAME_TYPE"); IElementType VOID_TYPE = new CfmlElementType("VOID_TYPE"); IElementType XML_TYPE = new CfmlElementType("XML_TYPE"); IElementType ACTION_NAME = new CfmlElementType("ACTION_NAME"); IElementType IMPORT_KEYWORD = new CfmlElementType("IMPORT_KEYWORD"); TokenSet TYPE_KEYWORDS = TokenSet .create(ANY_TYPE, ARRAY_TYPE, BINARY_TYPE, BOOLAEN_TYPE, DATE_TYPE, GUID_TYPE, NUMERIC_TYPE, QUERY_TYPE, STRING_TYPE, STRUCT_TYPE, UUID_TYPE, VARIABLENAME_TYPE, VOID_TYPE, XML_TYPE, COMPONENT_KEYWORD); TokenSet ACCESS_KEYWORDS = TokenSet.create(PUBLIC_KEYWORD, PRIVATE_KEYWORD, REMOTE_KEYWORD, PACKAGE_KEYWORD); TokenSet KEYWORDS = TokenSet .create(SCOPE_KEYWORD, DEFAULT_KEYWORD, FUNCTION_KEYWORD, SWITCH_KEYWORD, CASE_KEYWORD, DO_KEYWORD, IF_KEYWORD, TRY_KEYWORD, CATCH_KEYWORD, ELSE_KEYWORD, VAR_KEYWORD, WHILE_KEYWORD, CONTINUE_KEYWORD, FOR_KEYWORD, RETHROW_KEYWORD, RETURN_KEYWORD, BREAK_KEYWORD, ABORT_KEYWORD, INCLUDE_KEYWORD, BOOLEAN, COMPONENT_KEYWORD, INTERFACE_KEYWORD, PUBLIC_KEYWORD, PRIVATE_KEYWORD, REMOTE_KEYWORD, PACKAGE_KEYWORD, REQUIRED_KEYWORD, ANY_TYPE, ARRAY_TYPE, BINARY_TYPE, BOOLAEN_TYPE, DATE_TYPE, GUID_TYPE, NUMERIC_TYPE, QUERY_TYPE, STRING_TYPE, STRUCT_TYPE, UUID_TYPE, VARIABLENAME_TYPE, VOID_TYPE, XML_TYPE, FINALLY_KEYWORD, IMPORT_KEYWORD, ACTION_NAME); TokenSet LOGICAL_OPERATIONS = TokenSet.create(OR, AND, AND_L, OR_L, NOT_XOR_L, XOR_L, IMP_L); TokenSet RELATIONAL_OPERATIONS = TokenSet.create(EQ_L, NEQ_L, CONTAINS_L, NOT_CONTAINS_L, GT_L, LT_L, GE_L, LE_L, EQEQ, NEQ, LT, LTE, GT, GTE); TokenSet ADDITIVE_OPERATIONS = TokenSet.create(ADD, MINUS); TokenSet MULTIPLICATIVE_OPERATIONS = TokenSet.create(POW, MUL, DEV, MOD_L, CONCAT); TokenSet UNARY_OPERATIONS = TokenSet.create(MINUS, NOT, NOT_L, INC, DEC); }