mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-27 05:20:36 +03:00
160 lines
8.9 KiB
TypeScript
160 lines
8.9 KiB
TypeScript
![]() |
//! 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': 'Попытка перебрать бесконечное множество!'
|