Пред.СтраницаСлед.Страница Раздел Содержание


5.4. Атрибутные преобразователи ( АП )

Атрибутные описания, рассмотренные в предыдущем разделе, являются обобщением синтаксически-ориентированного способа описания перевода, показывающим возможность совмещения семантических вычислений с процессом синтаксического анализа, а описанные в настоящем разделе правила работы и   построения атрибутного преобразователя демонстрируют возможность практического использования таких описаний при построении компиляторов для искусственных языков.
Рассматриваемые АП строятся на основе нисходящих символьных преобразователей, поэтому их называют нисходящими атрибутными преобразователями. Такие преобразователи позволяют выполнять в процессе работы такие действия, как, например, выделение памяти для промежуточных результатов, заполнение полей таблиц и проверку контекстных условий.
Естественно, что расширение функциональных возможностей по сравнению с символьными преобразователями достигается за счет усложнения структуры и правил работы АП. Эти усложнения, в основном, являются следствием необходимости сохранения и определения значений атрибутов в магазине в процессе  работы АП.

5.4.1. Представление правил LAT-грамматики в магазине.

Рассмотренное графическое изображение вывода в LАТ -грамматике является основой для программной реализации атрибутного преобразователя (АТ - преобразователя). Построение преобразователя начнем с того, что установим соответствие между графическим представлением правой части каждого правила LАТ-грамматики и его представлением в памяти, полагая, что в качестве памяти используется магазин. Базой для задания такого соответствия могут служить следующие положения:
а) каждому терминальному, нетерминальному и опреационному символам выделим один элемент памяти в магазине, в который запишем соответствующий символ,
б) каждому атрибуту, содержащемуся в правилах грамматики, отведем элемент памяти магазина, в который может быть записано либо значение атрибута, если оно определено, либо указатель на элемент магазина, в который следует записать значение атрибута, если оно еще не определено,
в) величина указателя для атрибута с неопределенным значением определяется правилами вычисления атрибутов в форме простого присваивания и соответствует стрелкам в графическом изображении вывода,
г) порядок расположения символов в магазине должен строго соответствовать их порядку следования в правиле грамматики , и символы, входящие в правила грамматики, должны располагаться так, чтобы каждый символ, стоящий слева, находился в магазине над символом, стоящим справа.
В качестве иллюстрации приведенных положений представим расположение в магазине символов правой части правила

E%d ® E%e+T%f{сложить}/x/y%z
x=e;  y=f; d=z;

следующим образом:


На рисунке атрибут левой части правила d расположен непосредственно под самым правым символом правой части правила, что соответствует построению левого вывода грамматики в магазине. Действительно, если заменять нетерминальные символы в вершине магазина правой частью правила грамматики, оставляя его атрибуты в магазине, то самый правый символ заменяющего правила окажется непосредственно над атрибутами удаляемого нетерминала.



Пред.СтраницаСлед.Страница Раздел Содержание