Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
13. ТЯП-госы.doc
Скачиваний:
5
Добавлен:
26.08.2019
Размер:
502.27 Кб
Скачать

Синтаксически управляемые определения

Синтаксически управляемое определение представляет собой обобщение контекстно-свободной грамматики, в кот каждый грамматич символ имеет связанное множ-во атрибутов — синтезируемые и наследуе­мые атрибуты. Если рассматривать узел грамматич символа в дереве разбора как запись с полями для хранения информации, то атрибут соответствует имени поля.

Атрибут может представлять собой все, что угодно, — строку, число, тип, адрес памяти и т.д. Знач-е атрибута в узле дерева разбора определ-ся семантическими правилами, связанными с используемой в данном узле продукцией.

Значение синтезируемого атрибута в узле вычисляется по значениям атрибутов в дочерних по отношению к данному узлах.

Значения наследуемых атрибутов определяются значениями атрибутов соседних (т.е. узлов, дочерних по отношению к родительскому узлу данного) и родительского узлов.

Дерево разбора, показывающее значения атрибутов в каждом узле, называется анно­тированным, а процесс вычисления значений атрибутов в узлах дерева— аннотирова­нием дерева разбора.

Вид синтаксически управляемого определения

В синтаксически управляемом определении каждая продукция грамматики А → α имеет связанное с ней множество семантических правил вида

b:=f1, с2, …,сk), где f — функция, с1 с2,…,ск — атрибуты грамматических символов продукции, а b — синтези­руемый атрибут символа А или наследуемый атрибут одного из грамматических симво­лов правой части продукции.

В любом случае атрибут b зависит от атрибутов с1, с2, …,сk.

Атри­бутная грамматика является синтаксически управляемым определением, в котором функции в семантических правилах не имеют побочных эффектов.

Функции в семантических правилах зачастую записываются как выражения. Иногда единственная цель семантического правила в синтаксически управляемом определении состоит именно в создании побочного эффекта. Такие семантические правила записывают­ся как вызовы процедур или фрагменты программ. Их можно рассматривать как правила, определяющие значения фиктивных синтезируемых атрибутов нетерминала в левой части связанной продукции; фиктивный атрибут и знак присвоения : = при этом не указываются.

В синтаксически управляемом определении предполагается, что терминалы могут иметь только синтезируемые атрибуты, поскольку определение не дает никаких семантических правил для терминалов (обычно значения атрибутов терминалов предоставляются лексическим анализатором). Кроме того, если не оговорено особо, стартовый символ не имеет наследуемых атрибутов.

Синтезируемые атрибуты

Синтезируемые атрибуты часто используются на практике.

S-атрибутным определением называется синтаксически управляемое определение, использующее только синтезируемые атрибуты.

Дерево разбора для S-атрибутного определения всегда может быть аннотировано путем выполнения семантических правил для атрибутов в каждом узле снизу вверх, от листьев к корню.

Наследуемые атрибуты

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

Наследуемые атрибуты удобны для выражения зависимости конструкций языка программирования от контекста, в котором они появляются. Например, наследуемые атрибуты используются для отслеживания, появляется ли идентификатор слева или справа от знака присвоения, чтобы определить, потребуется ли адрес или значение данного иденти­фикатора. Хотя всегда можно переписать синтаксически управляемое определение таким об­разом, чтобы использовать только синтезируемые атрибуты, зачастую более естественно вос­пользоваться синтаксически управляемым определением с наследуемыми атрибутами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]