5.1.3. Пример АТ-грамматики
Атрибутные
транслирующие грамматики могут
быть использованы для построения выводов, в которых построение цепочки
совмещается с вычислением значений атрибутов. Чтобы различать атрибуты
в правилах вывода, условимся записывать синтезируемые атрибуты с префиксом
в виде знака процента (%), а наследуемые
- с префиксом в виде наклонной черты (/).
Например, если символ <X> имеет
один синтезируемый атрибут a и два
наследуемых атрибута b, c,
а символы <Y>
и <Z> имеют по одному наследуемому
атрибуту d и e,
то правило <X> Ю
<Y><Z> может быть записано в
виде:
В качестве первого примера рассмотрим АТ-грамматику, описывающую трансляцию выражений, состоящих из констант C, в значение заданного выражения.
Допустим, что у каждого нетерминала <E>, <T>, <P> имеется по одному атрибуту, принимающему целочисленные значения. Терминальный символ C также имеет один атрибут, определяющий значение константы и принимающий целочисленные значения. Операционный символ грамматики {ответ} имеет наследуемый атрибут с целочисленной областью значений. Начальным символом грамматики служит символ <S>.
В тех случаях, когда
атрибуты символов действия должны передаваться на выход вместе с этими
символами действия, как это имеет место в рассматриваемом примере, условимся
записывать атрибуты символов действия внутри фигурных скобок.