5.2. Cинтаксический анализ, с использованием АТ-грамматики
5.2.1. Процесс синтаксического анализа
Допустим, что задачей синтаксического
анализа такой цепочки является выделение каждой переменной элемента памяти
в виде строки ТЗ и занесение указателя
этой строки в ТП. Исходными данными
для выполнения этих действий является указатель на первый свободный элемент
ТЗ.
После завершения обработки описаний этот указатель должен изменить значение.
Новое значение должно определять первый свободный элемент ТЗ
после выделения памяти для переменных.
Синтаксис цепочек рассматриваемого
вида может быть задан следующей грамматикой с начальным символом <D>.
Учитывая сказанное выше, грамматику,
задающую перевод описаний значения
таблицы ТП, можно записать так:
Результаты вывода Отложенные вычисления
1. D%a/44
2. int V/10{ФОРМУ}/10/44R%f/45
d := 10; e :=
44;
g
:= 45
a = f
3. int V/10,{ФОРМУ}/10/44/,V/12{ФОРМУ}
/12/45R%j/46
m = 12, n
= 45, p = 46;
a = f; f
= j;
4. int V/10,{ФОРМУ}/10/44,V/12,{ФОРМУ}
/12/45,V/14{ФОРМУ}/14/46R%j'/47,
m' = 14, n'
= 46; p' = 47
a = f;
f = j; j =
j'
5. int V/10,{ФОРМУ}/10/44,V/12,{ФОРМУ}
/12/45,V/14{ФОРМУ}/14/46
a = f; f =
j; j = j';
j'
= 47; a = 47
В каждой строке приведенного примера показаны результаты очередного шага вывода, которые могут содержать символы действия с найденными значениями атрибутов. Учитывая, что атрибуты правой части каждого правила являются независимыми величинами, при повторном применении второго правила грамматики для обозначения атрибутов были использованы переменные с апострофами. Приведенные примеры показывают, что результатом вывода с помощью правил атрибутной грамматики является цепочка, состоящая из символов действия и входных символов, каждому из которых приписаны значения атрибутов. Если из заданной АТ-грамматики Г удалить все атрибуты, то получим транслирующую грамматику Г', а из каждой цепочки, выведенной в грамматике Г после удаления всех атрибутов, может быть получена цепочка, выводимая в грамматике Г'. Основываясь на этом соответствии, назовем множество пар, состоящих из цепочки входных символов, снабженных атрибутами, и цепочки выходных символов, имеющих атрибуты, атрибутным переводом, определяемым заданной атрибутной грамматикой.