Синтезированные vs унаследованные атрибуты
Как я могу найти, синтезирован ли атрибут или унаследован от произведений грамматики?
Я думаю, что для этого атрибут должен быть предопределен в задаче - если его значение зависит от дочерних или родительских узлов. Но есть ли способ проанализировать, наследуется ли атрибут или синтезируется из грамматических произведений.
2 ответов
Синтезируемого Атрибута: атрибут, который получает свои значения из атрибутов привязаны к детям своего терминала.
Унаследованный Атрибут: атрибут, который получает свои значения из атрибутов, прикрепленных к родительскому (или братьям и сестрам) своего не-терминала.
**PRODUCTION** **SEMANTIC RULES**
T->FT’ T’.inh=F.val
T.val=T’.syn
T’->*FT1’ T1’.inh=T’.inh*F.val
T’.syn=T1’.syn
T’->Ɛ T’.syn=T’.inh
F->id F.val=id.lexval
Как вы можете видеть из данной грамматики(производств), inh является наследуемым атрибутом, а syn-синтезированным атрибут.
Furtter Читать: Атрибут Грамматик.
атрибут, который принимает значения данных из своих дочерних узлов, называется синтезированным атрибутом.
Они также называются s-атрибутивным производством. Атрибут, который принимает значения от родителей или узлов-братьев, называется унаследованными атрибутами. Производственное правило, имеющее унаследованный атрибут (каждый унаследованный атрибут ограничен наследованием только от родителя или левого брата), называется производствами с L-атрибутом.