- •2.1. Входная грамматика в структурированной форме
- •2.2. Су-схема и транслирующая грамматика
- •2.3. Функции переходов преобразователя
- •3.1. Грамматика лексических единиц и структура лексем
- •3.2. Диаграмма состояний лексического анализатора
- •3.3. Структуры данных и символы действия
- •4.1. Неформальное описание семантики
- •4.2. Атрибутная грамматика
- •4.3. Описание символов действия
- •4.4. Пример вывода в атрибутной грамматике.
- •5.1. Построение функций переходов атрибутного преобразователя.
- •5.2. Построение инструкций атрибутного преобразователя.
4.3. Описание символов действия
{WrRM}↓x ↓y Запись размера массива в структуру идентификатора.
x– ссылка на идентификатор в ТИ (куда нужно записать)
y– ссылка на число в ТЧ (что нужно записать)
{FMB}↓a ↑b ↓x Формирование массиваBoolean
{FMC}↓a ↑b ↓x Формирование массиваChar
a– указатель на первую свободную ячейку ТЗ, откуда можно начинать формирование
b– новый указатель на первую свободную ячейку ТЗ
x– ссылка на идентификатор в ТИ (в структуре которого находится информация о массиве)
Проверяет количество элементов на допустимое значение, если значение допустимо, то формирует в ТЗ массив.
{FUkTZEM}↓x ↓y ↑t Формирование указателя на ячейку ТЗ, в которой хранится значение элемента массива
x– ссылка на идентификатор массива в ТИ
y– ссылка на число в ТЧ (номер элемента в массиве)
t– сформированный указатель на ячейку ТЗ
{NewB}↓a ↑b ↓x Выделение памяти под переменную типаBoolean
{NewC}↓a ↑b ↓x Выделение памяти под переменную типаChar
a– указатель на первую свободную ячейку ТЗ (выделяемая ячейка)
b– новый указатель на первую свободную ячейку ТЗ
x– ссылка на идентификатор переменной в ТИ, для которой необходимо выделить память
Устанавливает указатель на ТЗ в структуре идентификатора.
{FUkTZId}↓x ↑t Формирование указателя на ячейку ТЗ, в которой хранится значение переменной
x– ссылка на идентификатор переменной в ТИ
t– сформированный указатель на ячейку ТЗ
{FAt=}↓t1 ↓t2 ↓t3 Формирование атома (=, Операнд1, Операнд2, Результат)
t1 – указатель на ячейку памяти, в которой хранится значение Операнд1
t2 – указатель на ячейку памяти, в которой хранится значение Операнд2
t3 – указатель на ячейку памяти, в которую нужно записать Результат
Проверяет по значению поля TypeZструктуры ячейка памяти типы
Операнд1 и Операнд2. Если они совпадают, то формирует атом (=, Операнд1, Операнд2, Операнд1).
{FAt&}↓t1 ↓t2 ↓t3 Формирование атома (&, Операнд1, Операнд2, Результат)
t1 – указатель на ячейку памяти, в которой хранится значение Операнд1
t2 – указатель на ячейку памяти, в которой хранится значение Операнд2
t3 – указатель на ячейку памяти, в которую нужно записать Результат
Проверяет по значению поля TypeZструктуры ячейка памяти типы
Операнд1 и Операнд2. Если они совпадают и имеют значение TBool, то формирует атом (=, Операнд1, Операнд2, Результат).
{FAtV}↓t1 ↓t2 ↓t3 Формирование атома (&, Операнд1, Операнд2, Результат)
t1 – указатель на ячейку памяти, в которой хранится значение Операнд1
t2 – указатель на ячейку памяти, в которой хранится значение Операнд2
t3 – указатель на ячейку памяти, в которую нужно записать Результат
Проверяет по значению поля TypeZструктуры ячейка памяти типы
Операнд1 и Операнд2. Если они совпадают и имеют значение TBool, то формирует атом (V, Операнд1, Операнд2, Результат).
{FAt!}↓t1 ↓t2 ↓t3 Формирование атома (!, Операнд,NULL, Результат)
t1 – указатель на ячейку памяти, в которой хранится значение Операнд
t2 –NULL(унарная операция)
t3 – указатель на ячейку памяти, в которую нужно записать Результат
Проверяет по значению поля TypeZструктуры ячейка памяти тип
Операнд. Если он имеет значение TBool, то формирует атом (!, Операнд,NULL, Операнд).
{NextZ}↓a ↑b Получение указателя на очередную свободную ячейку ТЗ
а – указатель на ячейку ТЗ
b– сформированный указатель на очередную свободную ячейку ТЗ