/
fe328
/
pplogic
Обзор
Документация
Войти
/
fe328
/
pplogic
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
constants.py
113 строк
2 KB
Алексей Кирьянов
Initial commit
29 дек 2024, 11:20
29 дек 2024, 11:20
c66c2f1
Код
Авторство
О чём код?
import tokenize as t from enum import Enum IN = 100 ISNULL = 101 NOT = 102 REGEX = 103 RANGE = 104 BFALSE = 200 BTRUE = 201 BASE_OPERATORS = [ t.STAR, t.SLASH, t.PLUS, t.MINUS, t.PERCENT, t.EQEQUAL, t.GREATER, t.GREATEREQUAL, t.LESS, t.LESSEQUAL, t.NOTEQUAL, t.DOT, NOT, ISNULL, IN, ] ALLOWED_TOKENS = [ *BASE_OPERATORS, t.NAME, t.STRING, t.NUMBER, t.OP, t.COMMA, t.NEWLINE, t.COLON, t.INDENT, t.DEDENT, t.LSQB, t.RSQB, t.LPAR, t.RPAR, ] SKIPPING_TOKENS = [ t.ENCODING, t.COMMENT, t.ENDMARKER, t.NL, ] # SEPARATORS_NO_CLOSING_BRACKET = '(,' SEPARATORS_NO_CLOSING_BRACKET = [t.LPAR, t.COMMA, t.LSQB] SEPARATORS = [*SEPARATORS_NO_CLOSING_BRACKET, t.RPAR, t.RSQB] UNARY_OPERATORS_SYMBOLS = [NOT] OPERATORS_PRECEDENCE = { NOT: 10, IN: 20, ISNULL: 20, t.LESS: 20, t.GREATER: 20, t.LESSEQUAL: 20, t.GREATEREQUAL: 20, t.NOTEQUAL: 20, t.EQEQUAL: 20, t.PERCENT: 20, t.PLUS: 30, t.MINUS: 30, t.STAR: 40, t.SLASH: 40, t.DOT: 50 } class Associativity(Enum): NONE = 0 LEFT = 1 RIGHT = 2 OPERATORS_ASSOCIATIVITY: dict[str, Associativity] = { t.PLUS: Associativity.LEFT, t.MINUS: Associativity.LEFT, t.STAR: Associativity.LEFT, t.SLASH: Associativity.LEFT, IN: Associativity.LEFT, ISNULL: Associativity.LEFT, t.LESS: Associativity.LEFT, t.GREATER: Associativity.LEFT, t.LESSEQUAL: Associativity.LEFT, t.GREATEREQUAL: Associativity.LEFT, t.NOTEQUAL: Associativity.LEFT, t.EQEQUAL: Associativity.LEFT, t.PERCENT: Associativity.LEFT, t.DOT: Associativity.LEFT, NOT: Associativity.RIGHT, }