| /* |
| * 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"); |
| } |