//! 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': 'Попытка перебрать бесконечное множество!'