All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.plugins.groovy.lang.lexer.TokenSets Maven / Gradle / Ivy

Go to download

A packaging of the IntelliJ Community Edition groovy-psi library. This is release number 1 of trunk branch 142.

The newest version!
/*
 * Copyright 2000-2014 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 org.jetbrains.plugins.groovy.lang.lexer;

import com.intellij.psi.TokenType;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.TokenSet;
import com.intellij.util.containers.hash.HashMap;
import org.jetbrains.plugins.groovy.lang.groovydoc.lexer.GroovyDocTokenTypes;
import org.jetbrains.plugins.groovy.lang.groovydoc.parser.GroovyDocElementTypes;
import org.jetbrains.plugins.groovy.lang.parser.GroovyElementTypes;

import java.util.Map;

/**
 * Utility classdef, tha contains various useful TokenSets
 *
 * @author ilyas
 */
public abstract class TokenSets {

  public static final TokenSet COMMENTS_TOKEN_SET = TokenSet.create(
    GroovyTokenTypes.mSH_COMMENT,
    GroovyTokenTypes.mSL_COMMENT,
    GroovyTokenTypes.mML_COMMENT,
    GroovyDocElementTypes.GROOVY_DOC_COMMENT
  );
  public static final TokenSet ALL_COMMENT_TOKENS = TokenSet.orSet(COMMENTS_TOKEN_SET, GroovyDocTokenTypes.GROOVY_DOC_TOKENS);

  public static final TokenSet SEPARATORS = TokenSet.create(
    GroovyTokenTypes.mNLS,
    GroovyTokenTypes.mSEMI
  );


  public static final TokenSet WHITE_SPACE_TOKEN_SET = TokenSet.create(
      TokenType.WHITE_SPACE
  );

  public static final TokenSet NUMBERS = TokenSet.create(
    GroovyTokenTypes.mNUM_INT,
    GroovyTokenTypes.mNUM_BIG_DECIMAL,
    GroovyTokenTypes.mNUM_BIG_INT,
    GroovyTokenTypes.mNUM_DOUBLE,
    GroovyTokenTypes.mNUM_FLOAT,
    GroovyTokenTypes.mNUM_LONG);


  public static final TokenSet CONSTANTS = TokenSet.create(
    GroovyTokenTypes.mNUM_INT,
    GroovyTokenTypes.mNUM_BIG_DECIMAL,
    GroovyTokenTypes.mNUM_BIG_INT,
    GroovyTokenTypes.mNUM_DOUBLE,
    GroovyTokenTypes.mNUM_FLOAT,
    GroovyTokenTypes.mNUM_LONG,
    GroovyTokenTypes.kTRUE,
    GroovyTokenTypes.kFALSE,
    GroovyTokenTypes.kNULL,
    GroovyTokenTypes.mSTRING_LITERAL,
    GroovyTokenTypes.mGSTRING_LITERAL,
    GroovyTokenTypes.mREGEX_LITERAL,
    GroovyTokenTypes.mDOLLAR_SLASH_REGEX_LITERAL
  );

  public static final TokenSet BUILT_IN_TYPES = TokenSet.create(
    GroovyTokenTypes.kVOID,
    GroovyTokenTypes.kBOOLEAN,
    GroovyTokenTypes.kBYTE,
    GroovyTokenTypes.kCHAR,
    GroovyTokenTypes.kSHORT,
    GroovyTokenTypes.kINT,
    GroovyTokenTypes.kFLOAT,
    GroovyTokenTypes.kLONG,
    GroovyTokenTypes.kDOUBLE
  );

  public static final TokenSet PROPERTY_NAMES =
    TokenSet.create(GroovyTokenTypes.mIDENT, GroovyTokenTypes.mSTRING_LITERAL, GroovyTokenTypes.mGSTRING_LITERAL,
                    GroovyTokenTypes.mREGEX_LITERAL, GroovyTokenTypes.mDOLLAR_SLASH_REGEX_LITERAL);

  public static final TokenSet KEYWORDS = TokenSet.create(GroovyTokenTypes.kABSTRACT, GroovyTokenTypes.kAS, GroovyTokenTypes.kASSERT,
                                                          GroovyTokenTypes.kBOOLEAN, GroovyTokenTypes.kBREAK, GroovyTokenTypes.kBYTE,
                                                          GroovyTokenTypes.kCASE, GroovyTokenTypes.kCATCH, GroovyTokenTypes.kCHAR,
                                                          GroovyTokenTypes.kCLASS,
                                                          GroovyTokenTypes.kCONTINUE, GroovyTokenTypes.kDEF, GroovyTokenTypes.kDEFAULT,
                                                          GroovyTokenTypes.kDO, GroovyTokenTypes.kDOUBLE, GroovyTokenTypes.kELSE,
                                                          GroovyTokenTypes.kEXTENDS, GroovyTokenTypes.kENUM, GroovyTokenTypes.kFALSE,
                                                          GroovyTokenTypes.kFINAL,
                                                          GroovyTokenTypes.kFLOAT, GroovyTokenTypes.kFOR, GroovyTokenTypes.kFINALLY,
                                                          GroovyTokenTypes.kIF, GroovyTokenTypes.kIMPLEMENTS, GroovyTokenTypes.kIMPORT,
                                                          GroovyTokenTypes.kIN, GroovyTokenTypes.kINSTANCEOF, GroovyTokenTypes.kINT,
                                                          GroovyTokenTypes.kINTERFACE, GroovyTokenTypes.kLONG, GroovyTokenTypes.kNATIVE,
                                                          GroovyTokenTypes.kNEW, GroovyTokenTypes.kNULL, GroovyTokenTypes.kPACKAGE,
                                                          GroovyTokenTypes.kPRIVATE, GroovyTokenTypes.kPROTECTED, GroovyTokenTypes.kPUBLIC,
                                                          GroovyTokenTypes.kRETURN, GroovyTokenTypes.kSHORT, GroovyTokenTypes.kSTATIC,
                                                          GroovyTokenTypes.kSTRICTFP, GroovyTokenTypes.kSUPER, GroovyTokenTypes.kSWITCH,
                                                          GroovyTokenTypes.kSYNCHRONIZED, GroovyTokenTypes.kTHIS,
                                                          GroovyTokenTypes.kTHROW, GroovyTokenTypes.kTHROWS, GroovyTokenTypes.kTRAIT,
                                                          GroovyTokenTypes.kTRANSIENT, GroovyTokenTypes.kTRUE, GroovyTokenTypes.kTRY,
                                                          GroovyTokenTypes.kVOID, GroovyTokenTypes.kVOLATILE, GroovyTokenTypes.kWHILE);

  public static final TokenSet REFERENCE_NAMES = TokenSet.orSet(KEYWORDS, PROPERTY_NAMES, NUMBERS);
  public static final TokenSet REFERENCE_NAMES_WITHOUT_NUMBERS = TokenSet.orSet(KEYWORDS, PROPERTY_NAMES);

  public static final TokenSet REFERENCE_NAME_PREFIXES = TokenSet.orSet(NUMBERS, KEYWORDS, TokenSet.create(GroovyTokenTypes.mIDENT,
                                                                                                           GroovyTokenTypes.mSTRING_LITERAL,
                                                                                                           GroovyTokenTypes.mGSTRING_LITERAL,
                                                                                                           GroovyTokenTypes.mGSTRING_BEGIN,
                                                                                                           GroovyTokenTypes.mREGEX_BEGIN,
                                                                                                           GroovyTokenTypes.mDOLLAR_SLASH_REGEX_BEGIN,
                                                                                                           GroovyTokenTypes.mAT));


  public static final TokenSet VISIBILITY_MODIFIERS = TokenSet.create(
    GroovyTokenTypes.kPRIVATE,
    GroovyTokenTypes.kPROTECTED,
    GroovyTokenTypes.kPUBLIC
  );

  public static final TokenSet MODIFIERS = TokenSet.create(
    GroovyTokenTypes.kABSTRACT,
    GroovyTokenTypes.kPRIVATE,
    GroovyTokenTypes.kPUBLIC,
    GroovyTokenTypes.kPROTECTED,
    GroovyTokenTypes.kSTATIC,
    GroovyTokenTypes.kTRANSIENT,
    GroovyTokenTypes.kFINAL,
    GroovyTokenTypes.kABSTRACT,
    GroovyTokenTypes.kNATIVE,
    GroovyTokenTypes.kSYNCHRONIZED,
    GroovyTokenTypes.kSTRICTFP,
    GroovyTokenTypes.kVOLATILE,
    GroovyTokenTypes.kSTRICTFP,
    GroovyTokenTypes.kDEF
  );

  public static final TokenSet STRING_LITERALS = TokenSet.create(
    GroovyTokenTypes.mSTRING_LITERAL,
    GroovyTokenTypes.mGSTRING_LITERAL,
    GroovyTokenTypes.mGSTRING_BEGIN,
    GroovyTokenTypes.mGSTRING_CONTENT,
    GroovyTokenTypes.mGSTRING_END,
    GroovyTokenTypes.mREGEX_LITERAL,
    GroovyTokenTypes.mREGEX_BEGIN,
    GroovyTokenTypes.mREGEX_CONTENT,
    GroovyTokenTypes.mREGEX_END,
    GroovyTokenTypes.mDOLLAR_SLASH_REGEX_LITERAL,
    GroovyTokenTypes.mDOLLAR_SLASH_REGEX_BEGIN,
    GroovyTokenTypes.mDOLLAR_SLASH_REGEX_CONTENT,
    GroovyTokenTypes.mDOLLAR_SLASH_REGEX_END
  );

  public static final TokenSet GSTRING_CONTENT_PARTS = TokenSet.create(GroovyElementTypes.GSTRING_CONTENT,
                                                                       GroovyElementTypes.GSTRING_INJECTION);

  public static final TokenSet FOR_IN_DELIMITERS = TokenSet.create(GroovyTokenTypes.kIN, GroovyTokenTypes.mCOLON);

  public static final TokenSet RELATIONS = TokenSet.create(
    GroovyTokenTypes.mLT,
    GroovyTokenTypes.mGT,
    GroovyTokenTypes.mLE,
    GroovyTokenTypes.mGE,
    GroovyTokenTypes.kIN
  );
  public static final TokenSet WHITE_SPACES_SET = TokenSet.create(GroovyTokenTypes.mNLS, TokenType.WHITE_SPACE);

  public static final TokenSet COMMENT_SET = TokenSet.create(GroovyTokenTypes.mML_COMMENT, GroovyTokenTypes.mSH_COMMENT,
                                                             GroovyTokenTypes.mSL_COMMENT, GroovyDocElementTypes.GROOVY_DOC_COMMENT);

  public static final TokenSet STRING_LITERAL_SET = TokenSet.create(GroovyTokenTypes.mSTRING_LITERAL, GroovyTokenTypes.mGSTRING_LITERAL,
                                                                    GroovyTokenTypes.mREGEX_LITERAL,
                                                                    GroovyTokenTypes.mDOLLAR_SLASH_REGEX_LITERAL);

  public static final TokenSet BRACES = TokenSet.create(GroovyTokenTypes.mLBRACK, GroovyTokenTypes.mRBRACK, GroovyTokenTypes.mLPAREN,
                                                        GroovyTokenTypes.mRPAREN, GroovyTokenTypes.mLCURLY, GroovyTokenTypes.mRCURLY);

  public static final TokenSet ASSIGN_OP_SET = TokenSet.create(GroovyTokenTypes.mASSIGN, GroovyTokenTypes.mBAND_ASSIGN,
                                                               GroovyTokenTypes.mBOR_ASSIGN, GroovyTokenTypes.mBSR_ASSIGN,
                                                               GroovyTokenTypes.mBXOR_ASSIGN, GroovyTokenTypes.mDIV_ASSIGN,
                                                               GroovyTokenTypes.mMINUS_ASSIGN, GroovyTokenTypes.mMOD_ASSIGN,
                                                               GroovyTokenTypes.mPLUS_ASSIGN, GroovyTokenTypes.mSL_ASSIGN,
                                                               GroovyTokenTypes.mSR_ASSIGN,
                                                               GroovyTokenTypes.mSTAR_ASSIGN, GroovyTokenTypes.mSTAR_STAR_ASSIGN);

  public static final TokenSet UNARY_OP_SET = TokenSet.create(GroovyTokenTypes.mBNOT, GroovyTokenTypes.mLNOT, GroovyTokenTypes.mMINUS,
                                                              GroovyTokenTypes.mDEC, GroovyTokenTypes.mPLUS, GroovyTokenTypes.mINC);

  public static final TokenSet POSTFIX_UNARY_OP_SET = TokenSet.create(GroovyTokenTypes.mDEC, GroovyTokenTypes.mINC);

  public static final TokenSet BINARY_OP_SET = TokenSet.create(GroovyTokenTypes.mBAND, GroovyTokenTypes.mBOR, GroovyTokenTypes.mBXOR,
                                                               GroovyTokenTypes.mDIV, GroovyTokenTypes.mEQUAL, GroovyTokenTypes.mGE,
                                                               GroovyTokenTypes.mGT, GroovyTokenTypes.mLOR, GroovyTokenTypes.mLT,
                                                               GroovyTokenTypes.mLE, GroovyTokenTypes.mMINUS, GroovyTokenTypes.kAS,
                                                               GroovyTokenTypes.kIN,
                                                               GroovyTokenTypes.mMOD, GroovyTokenTypes.mPLUS, GroovyTokenTypes.mSTAR,
                                                               GroovyTokenTypes.mSTAR_STAR, GroovyTokenTypes.mNOT_EQUAL,
                                                               GroovyTokenTypes.mCOMPARE_TO, GroovyTokenTypes.mLAND,
                                                               GroovyTokenTypes.kINSTANCEOF,
                                                               GroovyElementTypes.COMPOSITE_LSHIFT_SIGN,
                                                               GroovyElementTypes.COMPOSITE_RSHIFT_SIGN,
                                                               GroovyElementTypes.COMPOSITE_TRIPLE_SHIFT_SIGN,
                                                               GroovyTokenTypes.mREGEX_FIND, GroovyTokenTypes.mREGEX_MATCH,
                                                               GroovyTokenTypes.mRANGE_INCLUSIVE, GroovyTokenTypes.mRANGE_EXCLUSIVE);

  public static final TokenSet ASSOCIATIVE_BINARY_OP_SET = TokenSet.create(GroovyTokenTypes.mBAND, GroovyTokenTypes.mBOR,
                                                                           GroovyTokenTypes.mBXOR, GroovyTokenTypes.mEQUAL,
                                                                           GroovyTokenTypes.mLOR, GroovyTokenTypes.mPLUS,
                                                                           GroovyTokenTypes.mSTAR, GroovyTokenTypes.mNOT_EQUAL,
                                                                           GroovyTokenTypes.mLAND);


  public static final TokenSet BINARY_EXPRESSIONS = TokenSet.create(GroovyElementTypes.ADDITIVE_EXPRESSION,
                                                                    GroovyElementTypes.MULTIPLICATIVE_EXPRESSION,
                                                                    GroovyElementTypes.POWER_EXPRESSION,
                                                                    GroovyElementTypes.POWER_EXPRESSION_SIMPLE,
                                                                    GroovyElementTypes.LOGICAL_OR_EXPRESSION,
                                                                    GroovyElementTypes.LOGICAL_AND_EXPRESSION,
                                                                    GroovyElementTypes.INCLUSIVE_OR_EXPRESSION,
                                                                    GroovyElementTypes.EXCLUSIVE_OR_EXPRESSION,
                                                                    GroovyElementTypes.AND_EXPRESSION,
                                                                    GroovyElementTypes.REGEX_FIND_EXPRESSION,
                                                                    GroovyElementTypes.REGEX_MATCH_EXPRESSION,
                                                                    GroovyElementTypes.EQUALITY_EXPRESSION,
                                                                    GroovyElementTypes.RELATIONAL_EXPRESSION,
                                                                    GroovyElementTypes.SHIFT_EXPRESSION,
                                                                    GroovyElementTypes.RANGE_EXPRESSION);

  public static final TokenSet DOTS = TokenSet.create(GroovyTokenTypes.mSPREAD_DOT, GroovyTokenTypes.mOPTIONAL_DOT,
                                                      GroovyTokenTypes.mMEMBER_POINTER, GroovyTokenTypes.mDOT);

  public static final TokenSet WHITE_SPACES_OR_COMMENTS = TokenSet.orSet(WHITE_SPACES_SET, COMMENT_SET);

  public static final Map ASSIGNMENTS_TO_OPERATORS = new HashMap();
  static {
    ASSIGNMENTS_TO_OPERATORS.put(GroovyTokenTypes.mMINUS_ASSIGN, GroovyTokenTypes.mMINUS);
    ASSIGNMENTS_TO_OPERATORS.put(GroovyTokenTypes.mPLUS_ASSIGN, GroovyTokenTypes.mPLUS);
    ASSIGNMENTS_TO_OPERATORS.put(GroovyTokenTypes.mDIV_ASSIGN, GroovyTokenTypes.mDIV);
    ASSIGNMENTS_TO_OPERATORS.put(GroovyTokenTypes.mSTAR_ASSIGN, GroovyTokenTypes.mSTAR);
    ASSIGNMENTS_TO_OPERATORS.put(GroovyTokenTypes.mMOD_ASSIGN, GroovyTokenTypes.mMOD);
    ASSIGNMENTS_TO_OPERATORS.put(GroovyTokenTypes.mSL_ASSIGN, GroovyElementTypes.COMPOSITE_LSHIFT_SIGN);
    ASSIGNMENTS_TO_OPERATORS.put(GroovyTokenTypes.mSR_ASSIGN, GroovyElementTypes.COMPOSITE_RSHIFT_SIGN);
    ASSIGNMENTS_TO_OPERATORS.put(GroovyTokenTypes.mBSR_ASSIGN, GroovyElementTypes.COMPOSITE_TRIPLE_SHIFT_SIGN);
    ASSIGNMENTS_TO_OPERATORS.put(GroovyTokenTypes.mBAND_ASSIGN, GroovyTokenTypes.mBAND);
    ASSIGNMENTS_TO_OPERATORS.put(GroovyTokenTypes.mBOR_ASSIGN, GroovyTokenTypes.mBOR);
    ASSIGNMENTS_TO_OPERATORS.put(GroovyTokenTypes.mBXOR_ASSIGN, GroovyTokenTypes.mBXOR);
    ASSIGNMENTS_TO_OPERATORS.put(GroovyTokenTypes.mSTAR_STAR_ASSIGN, GroovyTokenTypes.mSTAR_STAR);
  }

  public static final TokenSet ASSIGNMENTS = TokenSet.create(
    GroovyTokenTypes.mASSIGN,
    GroovyTokenTypes.mPLUS_ASSIGN,
    GroovyTokenTypes.mMINUS_ASSIGN,
    GroovyTokenTypes.mSTAR_ASSIGN,
    GroovyTokenTypes.mDIV_ASSIGN,
    GroovyTokenTypes.mMOD_ASSIGN,
    GroovyTokenTypes.mSL_ASSIGN,
    GroovyTokenTypes.mSR_ASSIGN,
    GroovyTokenTypes.mBSR_ASSIGN,
    GroovyTokenTypes.mBAND_ASSIGN,
    GroovyTokenTypes.mBOR_ASSIGN,
    GroovyTokenTypes.mBXOR_ASSIGN,
    GroovyTokenTypes.mSTAR_STAR_ASSIGN
  );

  public static final TokenSet SHIFT_SIGNS = TokenSet.create(GroovyElementTypes.COMPOSITE_LSHIFT_SIGN,
                                                             GroovyElementTypes.COMPOSITE_RSHIFT_SIGN,
                                                             GroovyElementTypes.COMPOSITE_TRIPLE_SHIFT_SIGN);
  public static final TokenSet CODE_REFERENCE_ELEMENT_NAME_TOKENS = TokenSet.create(GroovyTokenTypes.mIDENT, GroovyTokenTypes.kDEF,
                                                                                    GroovyTokenTypes.kIN, GroovyTokenTypes.kAS);

  public static final TokenSet BLOCK_SET = TokenSet.create(GroovyElementTypes.CLOSABLE_BLOCK, GroovyElementTypes.BLOCK_STATEMENT,
                                                           GroovyElementTypes.CONSTRUCTOR_BODY, GroovyElementTypes.OPEN_BLOCK,
                                                           GroovyElementTypes.ENUM_BODY, GroovyElementTypes.CLASS_BODY);
  public static final TokenSet METHOD_DEFS = TokenSet.create(GroovyElementTypes.METHOD_DEFINITION,
                                                             GroovyElementTypes.CONSTRUCTOR_DEFINITION,
                                                             GroovyElementTypes.ANNOTATION_METHOD);
  public static final TokenSet VARIABLES = TokenSet.create(GroovyElementTypes.VARIABLE, GroovyElementTypes.FIELD);
  public static final TokenSet TYPE_ELEMENTS = TokenSet.create(GroovyElementTypes.CLASS_TYPE_ELEMENT, GroovyElementTypes.ARRAY_TYPE,
                                                               GroovyElementTypes.BUILT_IN_TYPE, GroovyElementTypes.TYPE_ARGUMENT,
                                                               GroovyElementTypes.DISJUNCTION_TYPE_ELEMENT);


  public static final TokenSet TYPE_DEFINITIONS = TokenSet.create(GroovyElementTypes.CLASS_DEFINITION, 
                                                                  GroovyElementTypes.ENUM_DEFINITION,
                                                                  GroovyElementTypes.INTERFACE_DEFINITION,
                                                                  GroovyElementTypes.ANNOTATION_DEFINITION,
                                                                  GroovyElementTypes.TRAIT_DEFINITION);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy