Изменения

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

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

259 байт добавлено, 00:54, 4 июня 2015
Нет описания правки
Атрибуты делятся на '''наследуемые''' и '''синтезируемые'''.
{{Определение
|definition =
'''Атрибут''', значение которого зависит от значений атрибутов братьев узла или атрибутов родителя, называется '''наследуемым'''. Если же значение атрибута зависит от значений детей узла или от других арибутов этого узла, то атрибут называется '''синтезируемым'''.
}}
В нашем примере видно, что $.val$ зависит только от детей, то есть синтезируемый атрибут. Результат умножителя ($MUL.res$) зависит только от атрибутов атрибутов самого умножителя ($MUL.op_1$ и $MUL.op_2$), а значит тоже является синтезируемым.==Синтезируемые атрибуты==
{{Определение
|definition =
Грамматика называется '''L-атрибутнойАтрибут''', если значения наследуемых значение которого зависит от значений атрибутов зависят только тот родителей и братьев слева (то есть не зависят детей узла или от значений других атрибутов братьев справа)этого узла, то атрибут называется '''синтезируемым'''.
}}
|style="background-color:#FFF;padding:2px 30px"| $F.val=E.val$
|}
 
В нашем примере видно, что $.val$ зависит только от детей, то есть синтезируемый атрибут. Результат умножителя ($MUL.res$) зависит только от атрибутов атрибутов самого умножителя ($MUL.op_1$ и $MUL.op_2$), а значит тоже является синтезируемым(аналогично с сумматором ADD).
<картинка>
Для изящности можно добавить еще одно правило $S \to E$ и действие(семантическое правило) {print(E.val)}. Тогда сразу после разбора выражения будет напечатан его результат.
Хотя всегда можно переписать синтаксически управляемое определение таким образом, чтобы использовать только синтезируемые атрибуты, зачастую более удобно и естественно воспользоваться также и наследуемыми атрибутами.
 
==Наследуемые атрибуты==
 
{{Определение
|definition =
'''Атрибут''', значение которого зависит от значений атрибутов братьев узла или атрибутов родителя, называется '''наследуемым'''.
}}
Хотя всегда можно переписать синтаксически управляемое определение таким образом{{Определение|definition =Грамматика называется '''L-атрибутной''', чтобы использовать если значения наследуемых атрибутов зависят только синтезируемые атрибуты, зачастую более удобно и естественно воспользоваться также тот родителей и наследуемыми атрибутамибратьев слева (то есть не зависят от значений атрибутов братьев справа).}}
Рассмотрим пример с L-атрибутной грамматики.
==Аспекты реализации==
Расмотрим некоторые аспекты реализации на более сложном примере.
497
правок

Навигация