4.3 Описание символов действия

{ ЗРМ}XYR1R2

Запись размера массива в структуру идентификатора.

X-номер идентификатора в ТИ (куда нужно записать)

Y-номер числа в ТЧ (что нужно записать)

R1-порядковый номер числа, описывающего количество элементов в R1-ом уровне (номер уровня массива)

R2-возвращает порядковый номер следуюшего числа, описывающего количество эл-ементов в R2-ом уровне. R2=R1+1.

{ФМБ}ABX ({ФМЧ}ABX)

Формирвание массва Bool({ФМБ}) или Char({ФМЧ})

A-номер очередной свободной ячейки ТЗ откуда можно начинать формирование

B-возвращает новый номер очередной свободной ячейки ТЗ

X-номер идентификатора в ТИ, в структуре которого находится информация о мас-сиве.

Проверяет допустимую размерность массива и допустимое количество элементов. Ес-ли все в порядке, то формирует в ТЗ массив.

{ФСД}XYR1R2P1P2

Формирование сдвига элемента массива относительно начала массива

X-номер идентификатора массива в ТИ

Y-номер числа в ТЧ (числа-индекс элемента массива)

R1-порядковый номер числа, описывающего индекс элемента массива

R2-возвращает порядковый номер следуюшего числа, описывающего индекс элемента массива. R2=R1+1.

P1-текущее значение сдвига

P2-новое значение сдвига

Если P1=0, то P2=число с номером Y в ТЧ

иначе P2=P1*dimc[R1]+число с номером Y в ТЧ

Проверяет возможность сдвига.

{ФУТЗЭМ}XPT

Формирование указателя на ячейку памяти элемента массива

X-номер в ТИ идентификатора массива

P-сдвиг элемента массива относительно начала массива

T-вычисленное значение номера ячейки памяти данного элемента массива

{ВПБ}ABX ({ВПБ}ABX)

Выделение памяти под переменную Bool ({ВПБ}) или Char ({ВПЧ})

A-номер ячейки памяти, которую можно выделить.

В-номер следующей свободной ячейки

X-идентификатор переменной, для которой выделяем память.

Устанавливает указатель на таблицу значений в структуре идентификатора.

{ЗТЗ}XZ

Запись в ТЗ значения переменной

X-номер идентификатора в ТИ переменной

Z-номер ячейки таблице констант где хранится значение константы.

Проверяет по значению поля type структуры ячейка памяти типы Оп1 и Оп2, если они совпадают, то формирует атом (=,Оп1,Оп2), где Оп1-номер ячейки памяти, на которую указывает указатель в структуре идентификатора с номером X в ТИ, Оп2-номер ячейки в таблице констант, в которой хранится значение константы.

{ЗТЗМБ}XZP1P2 ({ЗТЗМЧ}XZP1P2)

Запись в ТЗ значения элемента массива

X-идентификатор массива, которому принадлежит элемент

Z-номер ячейки в таблице констант где хранится значение константы.

P1-сдвиг элемента массива относительно начала массива

P2-сдвиг следующего элемента массива

P2=P1+1

Проверяет по значению поля type структуры ячейка памяти типы Оп1 и Оп2, если они совпадают, то формирует атом (=,Оп1,Оп2,Оп1), где Оп1-номер ячейки памяти элемента массива, Оп2-номер ячейки таблицы констант, в которой хранится значение константы.

{ФAT=}T1T2T3

Формирование атома (=,Оп1,Оп2,Рез)

T1-номер ячейки памяти в ТЗ, где хранится Операнд1

T2-номер ячейки памяти в ТЗ, где хранится Операнд2

T3-номер ячейки памяти в ТЗ, куда поместить Результат операции

Проверяет по значению поля type структуры ячейка памяти типы Оп1 и Оп2, если они совпадают, то формирует атом (=,Оп1,Оп2,Оп1).

{ФAT&}T1T2T3

Формирование атома (&,Оп1,Оп2,Рез)

T1-номер ячейки памяти в ТЗ, где хранится Операнд1

T2-номер ячейки памяти в ТЗ, где хранится Операнд2

T3-номер ячейки памяти в ТЗ, куда поместить Результат операции

Проверяет по значению поля type структуры ячейка памяти типы Оп1 и Оп2, если они совпадают, то формирует атом (&,Оп1,Оп2,Оп1).

{ФATv}T1T2T3

Формирование атома (v,Оп1,Оп2,Рез)

T1-номер ячейки памяти в ТЗ, где хранится Операнд1

T2-номер ячейки памяти в ТЗ, где хранится Операнд2

T3-номер ячейки памяти в ТЗ, куда поместить Результат операции

Проверяет по значению поля type структуры ячейка памяти типы Оп1 и Оп2, если они совпадают, то формирует атом (v,Оп1,Оп2,Оп1).

{ФAT!}T1T2T3

Формирование атома (!,Оп1,NULL,Рез)

T1-номер ячейки памяти в ТЗ, где хранится Операнд1

T2-NULL, т.к. в перации участвует всего один Операнд1

T3-номер ячейки памяти в ТЗ, куда поместить Результат операции

Формирует атом (!,Оп1,NULL,Оп1).

{УК}B1B2

Получение номера очередной свободной ячейки.

B1-номер какой-либо ячейки

B2-возвращаемый номер очередной свободной ячейки

{ФУТЗИ}XT

Формироваание указателя на ТЗ переменной

X-номер идентификатора переменной в ТИ

T-возвращаемый номер ячейки памяти в ТЗ, на которую указывает указатель в струк-туре идентификатор

4.4 Пример вывода в атрибутной грамматике

Выведем цепочку

{<bool>a7</bool>;<ass>a7 <not>’false’</not></ass>;}

<I>5 B1 {<Опис.>5 B2<Опер.>A3 B3}5 B1

{<bool><Тип bool>5 B9</bool>;<R5>A10 B10 5 B2<Опер.> A3 B3}5 B1

{<bool><Ид.>1{ВПБ}5 6 1<R6>6 B16</bool>;<R5>A10 B10 5 B2<Опер.> A3 B3}5 B1

{<bool>a7 1 {ВПБ}5 6 1 6 6</bool>;<R5>6 B10 5 B2<Опер.> A3 B3}5 B1

{<bool>a7 1 {ВПБ}5 6 1 6 6</bool>;6 6<Опер.> 6 B3}5 B1

{<bool>a7 1 {ВПБ}5 6 1 6 6</bool>;6 6<ass><Оп.1> 1 ’ ‘<Л.опер.>6 B62 T24</ass>;<R10> A51 B51 6 B3}5 B1

{<bool>a7 1 {ВПБ}5 6 1 6 6</bool>;6 6<ass><Ид.>X57{ФУТЗИ}X58T9 ’ ‘<Л.опер.>6 B62 T24</ass>;<R10> A51 B51 6 B3}5 B1

{<bool>a7 1 {ВПБ}5 6 1 6 6</bool>;6 6<ass>A7 1{ФУТЗИ}1 1 ’ ‘<Л.опер.>6 B62 T24</ass>;<R10> A51 B51 6 B3}5 B1

{<bool>a7 1 {ВПБ}5 6 1 6 6</bool>;6 6<ass>A7 1{ФУТЗИ}1 1 ’ ‘

<not><Оп.2>A63 B63 T25{ФАТ!}T26 T27 T28 {УК}B64 B65</not>6 B62T24</ass>;

<R10> A51 B51 6 B3}5 B1

{<bool>a7 1 {ВПБ}5 6 1 6 6</bool>;6 6<ass>A7 1{ФУТЗИ}1 1 ’ ‘

<not><Оп.2>A63 B63 T25{ФАТ!}NULL 1 6 {УК}6 7</not>6 7 6</ass>;

<R10> 7 B51 6 B3}5 B1

{<bool>a7 1 {ВПБ}5 6 1 6 6</bool>;6 6<ass>A7 1{ФУТЗИ}1 1 ’ ‘

<not><Оп.2>A63 B63 T25{ФАТ!}NULL 1 6 {УК}6 7</not>6 7 6</ass>;

<R10> 7 7 6 7}5 6

Соседние файлы в папке Курсовой проект по дисциплине Формальные грамматики, языки и автоматы