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