blob: 9e34dadb03cd87deaa5791a0514f3cfb799d3de4 [file] [log] [blame]
/*
* 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.jetbrains.python;
import com.intellij.psi.TokenType;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.TokenSet;
import com.jetbrains.python.psi.PyElementType;
public class PyTokenTypes {
private PyTokenTypes() {
}
public static final PyElementType IDENTIFIER = new PyElementType("IDENTIFIER");
public static final PyElementType LINE_BREAK = new PyElementType("LINE_BREAK");
public static final PyElementType STATEMENT_BREAK = new PyElementType("STATEMENT_BREAK");
public static final PyElementType SPACE = new PyElementType("SPACE");
public static final PyElementType TAB = new PyElementType("TAB");
public static final PyElementType FORMFEED = new PyElementType("FORMFEED");
public static final IElementType BAD_CHARACTER = TokenType.BAD_CHARACTER;
public static final PyElementType INCONSISTENT_DEDENT = new PyElementType("INCONSISTENT_DEDENT");
public static final PyElementType END_OF_LINE_COMMENT = new PyElementType("END_OF_LINE_COMMENT");
public static final PyElementType AND_KEYWORD = new PyElementType("AND_KEYWORD");
public static final PyElementType AS_KEYWORD = new PyElementType("AS_KEYWORD");
public static final PyElementType ASSERT_KEYWORD = new PyElementType("ASSERT_KEYWORD");
public static final PyElementType BREAK_KEYWORD = new PyElementType("BREAK_KEYWORD");
public static final PyElementType CLASS_KEYWORD = new PyElementType("CLASS_KEYWORD");
public static final PyElementType CONTINUE_KEYWORD = new PyElementType("CONTINUE_KEYWORD");
public static final PyElementType DEF_KEYWORD = new PyElementType("DEF_KEYWORD");
public static final PyElementType DEL_KEYWORD = new PyElementType("DEL_KEYWORD");
public static final PyElementType ELIF_KEYWORD = new PyElementType("ELIF_KEYWORD");
public static final PyElementType ELSE_KEYWORD = new PyElementType("ELSE_KEYWORD");
public static final PyElementType EXCEPT_KEYWORD = new PyElementType("EXCEPT_KEYWORD");
public static final PyElementType EXEC_KEYWORD = new PyElementType("EXEC_KEYWORD");
public static final PyElementType FINALLY_KEYWORD = new PyElementType("FINALLY_KEYWORD");
public static final PyElementType FOR_KEYWORD = new PyElementType("FOR_KEYWORD");
public static final PyElementType FROM_KEYWORD = new PyElementType("FROM_KEYWORD");
public static final PyElementType GLOBAL_KEYWORD = new PyElementType("GLOBAL_KEYWORD");
public static final PyElementType IF_KEYWORD = new PyElementType("IF_KEYWORD");
public static final PyElementType IMPORT_KEYWORD = new PyElementType("IMPORT_KEYWORD");
public static final PyElementType IN_KEYWORD = new PyElementType("IN_KEYWORD", "__contains__");
public static final PyElementType IS_KEYWORD = new PyElementType("IS_KEYWORD");
public static final PyElementType LAMBDA_KEYWORD = new PyElementType("LAMBDA_KEYWORD");
public static final PyElementType NOT_KEYWORD = new PyElementType("NOT_KEYWORD");
public static final PyElementType OR_KEYWORD = new PyElementType("OR_KEYWORD");
public static final PyElementType PASS_KEYWORD = new PyElementType("PASS_KEYWORD");
public static final PyElementType PRINT_KEYWORD = new PyElementType("PRINT_KEYWORD");
public static final PyElementType RAISE_KEYWORD = new PyElementType("RAISE_KEYWORD");
public static final PyElementType RETURN_KEYWORD = new PyElementType("RETURN_KEYWORD");
public static final PyElementType TRY_KEYWORD = new PyElementType("TRY_KEYWORD");
public static final PyElementType WITH_KEYWORD = new PyElementType("WITH_KEYWORD");
public static final PyElementType WHILE_KEYWORD = new PyElementType("WHILE_KEYWORD");
public static final PyElementType YIELD_KEYWORD = new PyElementType("YIELD_KEYWORD");
// new keywords in Python 3
public static final PyElementType NONE_KEYWORD = new PyElementType("NONE_KEYWORD");
public static final PyElementType TRUE_KEYWORD = new PyElementType("TRUE_KEYWORD");
public static final PyElementType FALSE_KEYWORD = new PyElementType("FALSE_KEYWORD");
public static final PyElementType NONLOCAL_KEYWORD = new PyElementType("NONLOCAL_KEYWORD");
public static final PyElementType DEBUG_KEYWORD = new PyElementType("DEBUG_KEYWORD");
public static final PyElementType INTEGER_LITERAL = new PyElementType("INTEGER_LITERAL");
public static final PyElementType FLOAT_LITERAL = new PyElementType("FLOAT_LITERAL");
public static final PyElementType IMAGINARY_LITERAL = new PyElementType("IMAGINARY_LITERAL");
public static final PyElementType SINGLE_QUOTED_STRING = new PyElementType("SINGLE_QUOTED_STRING");
public static final PyElementType TRIPLE_QUOTED_STRING = new PyElementType("TRIPLE_QUOTED_STRING");
public static final PyElementType SINGLE_QUOTED_UNICODE = new PyElementType("SINGLE_QUOTED_UNICODE");
public static final PyElementType TRIPLE_QUOTED_UNICODE = new PyElementType("TRIPLE_QUOTED_UNICODE");
public static final PyElementType DOCSTRING = new PyElementType("DOCSTRING");
public static final TokenSet UNICODE_NODES = TokenSet.create(TRIPLE_QUOTED_UNICODE, SINGLE_QUOTED_UNICODE);
public static final TokenSet TRIPLE_NODES = TokenSet.create(TRIPLE_QUOTED_UNICODE, TRIPLE_QUOTED_STRING);
public static final TokenSet STRING_NODES = TokenSet.orSet(UNICODE_NODES, TokenSet.create(SINGLE_QUOTED_STRING,
TRIPLE_QUOTED_STRING, DOCSTRING));
// Operators
public static final PyElementType PLUS = new PyElementType("PLUS", "__add__");// +
public static final PyElementType MINUS = new PyElementType("MINUS", "__sub__");// -
public static final PyElementType MULT = new PyElementType("MULT", "__mul__");// *
public static final PyElementType EXP = new PyElementType("EXP", "__pow__");// **
public static final PyElementType DIV = new PyElementType("DIV", "__div__"); // /
public static final PyElementType FLOORDIV = new PyElementType("FLOORDIV", "__floordiv__"); // //
public static final PyElementType PERC = new PyElementType("PERC", "__mod__");// %
public static final PyElementType LTLT = new PyElementType("LTLT", "__lshift__");// <<
public static final PyElementType GTGT = new PyElementType("GTGT", "__rshift__");// >>
public static final PyElementType AND = new PyElementType("AND", "__and__");// &
public static final PyElementType OR = new PyElementType("OR", "__or__");// |
public static final PyElementType XOR = new PyElementType("XOR", "__xor__");// ^
public static final PyElementType TILDE = new PyElementType("TILDE", "__invert__");// ~
public static final PyElementType LT = new PyElementType("LT", "__lt__");// <
public static final PyElementType GT = new PyElementType("GT", "__gt__");// >
public static final PyElementType LE = new PyElementType("LE", "__le__");// <=
public static final PyElementType GE = new PyElementType("GE", "__ge__");// >=
public static final PyElementType EQEQ = new PyElementType("EQEQ", "__eq__");// ==
public static final PyElementType NE = new PyElementType("NE", "__ne__");// !=
public static final PyElementType NE_OLD = new PyElementType("NE_OLD", "__ne__");// <>
// Delimiters
public static final PyElementType LPAR = new PyElementType("LPAR");// (
public static final PyElementType RPAR = new PyElementType("RPAR");// )
public static final PyElementType LBRACKET = new PyElementType("LBRACKET");// [
public static final PyElementType RBRACKET = new PyElementType("RBRACKET");// ]
public static final PyElementType LBRACE = new PyElementType("LBRACE");// {
public static final PyElementType RBRACE = new PyElementType("RBRACE");// }
public static final PyElementType AT = new PyElementType("AT");// @
public static final PyElementType COMMA = new PyElementType("COMMA");// ,
public static final PyElementType COLON = new PyElementType("COLON");// :
public static final PyElementType DOT = new PyElementType("DOT");// .
public static final PyElementType TICK = new PyElementType("TICK");// `
public static final PyElementType EQ = new PyElementType("EQ");// =
public static final PyElementType SEMICOLON = new PyElementType("SEMICOLON");// ;
public static final PyElementType PLUSEQ = new PyElementType("PLUSEQ");// +=
public static final PyElementType MINUSEQ = new PyElementType("MINUSEQ");// -=
public static final PyElementType MULTEQ = new PyElementType("MULTEQ");// *=
public static final PyElementType DIVEQ = new PyElementType("DIVEQ"); // /=
public static final PyElementType FLOORDIVEQ = new PyElementType("FLOORDIVEQ"); // //=
public static final PyElementType PERCEQ = new PyElementType("PERCEQ");// %=
public static final PyElementType ANDEQ = new PyElementType("ANDEQ");// &=
public static final PyElementType OREQ = new PyElementType("OREQ");// |=
public static final PyElementType XOREQ = new PyElementType("XOREQ");// ^=
public static final PyElementType LTLTEQ = new PyElementType("LTLTEQ");// <<=
public static final PyElementType GTGTEQ = new PyElementType("GTGTEQ");// >>=
public static final PyElementType EXPEQ = new PyElementType("EXPEQ");// **=
public static final TokenSet OPERATIONS = TokenSet.create(
PLUS, MINUS, MULT, EXP, DIV, FLOORDIV, PERC, LTLT, GTGT, AND, OR,
XOR, TILDE, LT, GT, LE, GE, EQEQ, NE, NE_OLD, AT, COLON, TICK, EQ,
PLUSEQ, MINUSEQ,
MULTEQ, DIVEQ, FLOORDIVEQ, PERCEQ, ANDEQ, OREQ, XOREQ, LTLTEQ, GTGTEQ,
EXPEQ);
public static final TokenSet COMPARISON_OPERATIONS = TokenSet.create(
LT, GT, EQEQ, GE, LE, NE, NE_OLD, IN_KEYWORD, IS_KEYWORD, NOT_KEYWORD);
public static final TokenSet SHIFT_OPERATIONS = TokenSet.create(LTLT, GTGT);
public static final TokenSet ADDITIVE_OPERATIONS = TokenSet.create(PLUS, MINUS);
public static final TokenSet MULTIPLICATIVE_OPERATIONS = TokenSet.create(MULT, FLOORDIV, DIV, PERC);
public static final TokenSet MULTIPLICATIVE_OR_EXP = TokenSet.create(MULT, FLOORDIV, DIV, PERC, EXP);
public static final TokenSet UNARY_OPERATIONS = TokenSet.create(PLUS, MINUS, TILDE);
public static final TokenSet BITWISE_OPERATIONS = TokenSet.create(AND, OR, XOR);
public static final TokenSet EQUALITY_OPERATIONS = TokenSet.create(EQEQ, NE, NE_OLD);
public static final TokenSet RELATIONAL_OPERATIONS = TokenSet.create(LT, GT, LE, GE);
public static final TokenSet END_OF_STATEMENT = TokenSet.create(STATEMENT_BREAK, SEMICOLON);
public static final TokenSet WHITESPACE = TokenSet.create(SPACE, TAB, FORMFEED);
public static final TokenSet WHITESPACE_OR_LINEBREAK = TokenSet.create(SPACE, TAB, FORMFEED, LINE_BREAK);
public static final TokenSet OPEN_BRACES = TokenSet.create(LBRACKET, LBRACE, LPAR);
public static final TokenSet CLOSE_BRACES = TokenSet.create(RBRACKET, RBRACE, RPAR);
public static final TokenSet AUG_ASSIGN_OPERATIONS = TokenSet.create(PLUSEQ, MINUSEQ, MULTEQ, DIVEQ,
PERCEQ, EXPEQ, GTGTEQ, LTLTEQ, ANDEQ, OREQ, XOREQ, FLOORDIVEQ);
public static final PyElementType BACKSLASH = new PyElementType("BACKSLASH");
public static final PyElementType INDENT = new PyElementType("INDENT");
public static final PyElementType DEDENT = new PyElementType("DEDENT");
}