loom

Форк
0
107 строк · 7.0 Кб
1
        // Начальные операции для выполнения раскрутки.
2
        // Используются в семантических вставках при разборе правил грамматики (кроме Print).
3

4
        None                    = 0,    ///< Пустая операция
5
        PushConstant            = 1,    ///< Операция помещения на стек константы
6
        PushVariable            = 2,    ///< Операция помещения на стек значения переменной
7
        ObjectElement           = 3,    ///< Операция взятия адреса члена кортежа
8
        FunctionCall            = 4,    ///< Операция вызова функции
9
        ProcedureCheck          = 5,    ///< Проверка вызова процедуры 
10
        Print                   = 6,    ///< Оператор вывода сообщения на консоль
11
        Block                   = 7,    ///< Начало группы операторов
12
        Pop                     = 8,    ///< Снятие переменной со стека
13
        
14
        // Остальные операции SBL
15
        ArrayElement            = 9,    ///< Получение элемента по индексу
16

17
        // Работа с контрактами и переменными
18

19
        ObjectStructure         = 10,   ///< Структура записи (объекта)
20
        ArrayStructure          = 11,   ///< Структура массива
21
        Import                  = 12,   ///< Импорт контракта
22
        Contract                = 13,   ///< Определение контракта
23
        Type                    = 14,   ///< Определение типа
24
        Announcement            = 15,   ///< Объявление о контракте или типе
25
        Declaration             = 16,   ///< Объявление переменной
26
        Initialize              = 17,   ///< Начальное присвоение значение переменной
27
        DeclarationOnce         = 18,   ///< Объявление переменной, если такое имя ещё не объявлено
28
        PostInitialize          = 19,   ///< Необходимо для пересчёта рекурсивных объявлений
29

30
        Announcements_Completed = 20,   ///< Объявления завершены (нужно почистить сохранённые контракты)
31

32
        Assignment              = 21,   ///< Присвоение значение переменной
33
        // PostAssignment          = 22,   ///< Необходимо для пересчёта рекурсивных объявлений
34

35
        // присваивания_с_итерацией
36
        AssignmentAddition      = 23,
37
        AssignmentSubtraction   = 24,
38
        AssignmentMultiplication= 25,
39
        AssignmentDivision      = 26,
40
        AssignmentModulo        = 27,
41

42
        // Передача по ссылке
43
        Reference               = 30,
44

45
        // Определение функции
46
        FunctionDefinition      = 31,
47
        FunctionDefinitionEnd   = 32,
48
        FunctionTethered        = 33,
49
        ReturnExpression        = 35,
50
        Return                  = 36,
51

52
        // Unary Operations
53
        Plus                    = 41,   ///< Унарный плюс
54
        Minus                   = 42,   ///< Унарный минус
55
        Not                     = 43,   ///< Логическое отрицание
56
        
57
        // Binary Operations
58
        Or                      = 51,   ///< Логическое "или"
59
        And                     = 52,   ///< Логическое "и"
60
        Equal                   = 53,   ///< Логическое равенство
61
        NotEqual                = 54,   ///< Логическое неравенство
62
        Less                    = 55,   ///< Логическое меньше
63
        LessOrEqual             = 56,   ///< Логическое меньше или равно
64
        More                    = 57,   ///< Логическое больше
65
        MoreOrEqual             = 58,   ///< Логическое больше или равно
66
        
67
        Addition                = 61,   ///< Арифметическое сложение
68
        Subtraction             = 62,   ///< Арифметическое вычитание
69
        Multiplication          = 63,   ///< Арифметическое умножение
70
        Division                = 64,   ///< Арифметическое деление
71
        Modulo                  = 65,   ///< Остаток от деления
72
        Power                   = 66,   ///< Арифметическое возведение в степень
73

74
        // Тернарный оператор и условный оператор
75
        Ternary                 = 71,   ///< Тернарный оператор
76
        If                      = 72,   ///< Условный оператор
77

78
        //
79
        //
80
        For                     = 81,   ///< Оператор for
81
        While                   = 82,   ///< Оператор while
82
        DoWhile                 = 83,   ///< Оператор do-while
83

84
        // 
85
        Break                   = 85,   ///< Break
86
        Continue                = 86,   ///< Continue
87

88
        //
89
        Apply                   = 91,   ///< Оператор объявления умолчания для контракта, типа или модуля
90
        Using                   = 92,   ///< Оператор объявления локального умолчания для контракта, типа или модуля
91

92
        /// \todo Попробовать сократить сущности!
93
        AutoDefine              = 95,   ///< Автоматическое определение типа переменной
94
        AutoDeclaration         = 96,   ///< Объявление автоматической переменной (нужна для определения простой функции)
95

96
        CheckState              = 100,  ///< Для выполнения внутренних постпроверок 
97

98
        ArrayPush               = 101,  ///< Добавление среза к массиву
99
        ArrayPop                = 102,  ///< Отрезание верхнего среза с массива
100

101
        //
102
        FiberMake               = 110,  ///< Определения нити
103
        FiberFlow               = 111,  ///< Запуск потока нити
104
        FiberWait               = 112,  ///< Ожидание (потока) нити
105
        FiberPush               = 113,  ///< Передача состояния нити
106
        FiberPull               = 114,  ///< Получение состояния нити
107
        FiberCut                = 115,  ///< Завершение работы с нитью
108

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.