Изменения

Перейти к: навигация, поиск

Атрибутные транслирующие грамматики

95 байт добавлено, 16:35, 5 июня 2015
Пример работы с атрибутами в нисходящем разборе
$
В данном примере не требуется дерево разбора в явном виде. В данной реализации рекурсивные функции от нетерминалов получают на вход(если необходимо) наследуемые атрибуты узла и возвращают синтезируемые (вершины дерева разбора, в атрибутах которых записан результат вычислений соответствующего подвыражения). Как мы видим, $val$ - синтезируемый атрибут, $acc$ - наследуемый атрибут, $ADD$ - транслирующий символ. Синим подсвечены строки, отвечающие за работы с атрибутами.
E() : '''Node'''
res.addChild(T())
<font color="blue">temp = res.children[T].val
ADD.res = ADD(acc, temp)</font>
res.addChild(E'(ADD.res))
<font color="blue">res.val = res.children[E'].val</font>
'''break'''
'''case''' '$', ')' :
Анонимный участник

Навигация