ConceptPortal-public/rsconcept/frontend/src/utils/enums.ts

160 lines
8.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//! RS language token types enumeration
export enum TokenID {
// Global, local IDs and literals
ID_LOCAL = 258,
ID_GLOBAL,
ID_FUNCTION,
ID_PREDICATE,
ID_RADICAL,
LIT_INTEGER,
LIT_INTSET,
LIT_EMPTYSET,
// Aithmetic
PLUS,
MINUS,
MULTIPLY,
// Integer predicate symbols
GREATER,
LESSER,
GREATER_OR_EQ,
LESSER_OR_EQ,
// Equality comparison
EQUAL,
NOTEQUAL,
// Logic predicate symbols
FORALL,
EXISTS,
NOT,
EQUIVALENT,
IMPLICATION,
OR,
AND,
// Set theory predicate symbols
IN,
NOTIN,
SUBSET,
SUBSET_OR_EQ,
NOTSUBSET,
// Set theory operators
DECART,
UNION,
INTERSECTION,
SET_MINUS,
SYMMINUS,
BOOLEAN,
// Structure operations
BIGPR,
SMALLPR,
FILTER,
CARD,
BOOL,
DEBOOL,
REDUCE,
// Term constructions prefixes
DECLARATIVE,
RECURSIVE,
IMPERATIVE,
// Punctuation
PUNC_DEFINE,
PUNC_STRUCT,
PUNC_ASSIGN,
PUNC_ITERATE,
PUNC_PL,
PUNC_PR,
PUNC_CL,
PUNC_CR,
PUNC_SL,
PUNC_SR,
PUNC_BAR,
PUNC_COMMA,
PUNC_SEMICOLON,
// ======= Non-terminal tokens =========
NT_ENUM_DECL, // Перечисление переменных в кванторной декларации
NT_TUPLE, // Кортеж (a,b,c), типизация B(T(a)xT(b)xT(c))
NT_ENUMERATION, // Задание множества перечислением
NT_TUPLE_DECL, // Декларация переменных с помощью кортежа
NT_ARG_DECL, // Объявление аргумента
NT_FUNC_DEFINITION, // Определение функции
NT_ARGUMENTS, // Задание аргументов функции
NT_FUNC_CALL, // Вызов функции
NT_DECLARATIVE_EXPR, // Задание множества с помощью выражения D{x из H | A(x) }
NT_IMPERATIVE_EXPR, // Императивное определение
NT_RECURSIVE_FULL, // Полная рекурсия
NT_RECURSIVE_SHORT, // Сокращенная рекурсия
NT_IMP_DECLARE, // Блок декларации
NT_IMP_ASSIGN, // Блок присвоения
NT_IMP_LOGIC, // Блок проверки
// ======= Helper tokens ========
INTERRUPT,
END,
}
export enum RSError {
}
// '8201': 'Число превышает максимально допустимое значение 2147483647!',
// '8203': 'Нераспознанный символ!',
// '8400': 'Неопределенная синтаксическая ошибка!',
// '8406': 'Пропущена скобка )!',
// '8407': 'Пропущена скобка }!',
// '8408': 'Некорректная кванторная декларация переменной!',
// '8414': 'Некорректное объявление аргументов функции!',
// '8415': 'Некорректное имя локальной переменной в декларации функции!',
// '2801': 'Повторное объявление локальной переменной!',
// '2802': 'Локальная переменная объявлена, но не использована!',
// '8801': 'Использование необъявленной локальной переменной!',
// '8802': 'Повторное объявление локальной переменной внутри области действия!',
// '8803': 'Типизация операндов не совпадает!',
// '8804': 'Использована конституента с неопределенной типизацией!',
// '8805': 'Одна из проекций декартова произведения не является типизированным множеством имеющим характер множества!',
// '8806': 'Аргумент булеана не является типизированным множеством имеющим характер множества!',
// '8807': 'Операнд теоретико-множественного оператора не является типизированным множеством имеющим характер множества!',
// '8808': 'Операнд оператора card не является типизированным множеством имеющим характер множества!',
// '8809': 'Операнд оператора debool не является типизированным множеством имеющим характер множества!',
// '880A': 'Неизвестное имя функции!',
// '880B': 'Некорректное использование имени функции без аргументов!',
// '8810': 'Операнд оператора red не является типизированным множеством имеющим характер двойного булеана!',
// '8811': 'Некорректная типизация аргумента: проекция не определена!',
// '8812': 'Некорректная типизация аргумента: T(Pri(a)) = B(Pi(D(T(a))))!',
// '8813': 'Типизация элементов перечисления не совпадает!',
// '8814': 'Некорректная декларация связанных локальных переменных: количестве переменных в кортеже не соответствует размерности декартова произведения типизации!',
// '8815': 'Локальная переменная используется вне области действия!',
// '8816': 'Несоответствие типизаций операндов для предиката!',
// '8818': 'Некорректное количество аргументов терм-функции!',
// '8819': 'Типизация аргумента терм-функции не совпадает с объявленной!',
// '881A': 'Сравнение кортежа или элемента с пустым множеством!',
// '881C': 'Выражение родовой структуры должно быть ступенью!',
// '881F': 'Ожидалось выражение объявления функции!',
// '8820': 'Некорректное использование пустого множества как типизированного выражения!',
// '8821': 'Радикалы запрещены вне деклараций терм-функций!',
// '8822': 'Типизация аргумента фильтра не корректна!',
// '8823': 'Количество параметров фильтра не соответствует количеству индексов!',
// '8824': 'Для выбранного типа не поддерживаются арифметические операции!',
// '8825': 'Типизации не совместимы для выбранной операции/предиката!',
// '8826': 'Для выбранного типа не поддерживаются предикаты порядка!',
// '8840': 'Используется неинтерпретируемый глобальный идентификатор!',
// '8841': 'Использование свойства в качестве значения!',
// '8842': 'Не удалось получить дерево разбора для глобального идентификатора!',
// '8843': 'Функция не интерпретируется для данных аргументов!',
// '8A00': 'Неизвестная ошибка: вычисление прервано!',
// '8A01': 'Превышен пределен количества элементов множества!',
// '8A02': 'Превышен пределен количества элементов в основании булеана!',
// '8A03': 'Использование конституенты с неопределенным значением!',
// '8A04': 'Превышен предел количества итераций!',
// '8A05': 'Попытка взять debool от многоэлементного множества!',
// '8A06': 'Попытка перебрать бесконечное множество!'