9

Как найти, если атрибут синтезирован или унаследован из производных грамматики?Синтезируемый и унаследованный атрибуты

Я предполагаю, что атрибут должен быть предопределен в задаче - если его значение зависит от дочерних или родительских узлов. Но есть ли способ проанализировать, если атрибут наследуется или синтезируется из грамматических производств.

+0

т. Е. Атрибут t должен быть предопределен как S или I. Я могу рассказать по семантическим правилам, связанным с производством, или нет. Приведу пример. – user2047167

ответ

7

Синтетический атрибут: Атрибут, который получает свои значения из атрибутов, связанных с дочерними элементами его нетерминальных.

Унаследованный атрибут: Атрибут, который получает свои значения из атрибутов, прикрепленных к родительскому (или родственным) его нетерминальным.

  **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 

Как видно из данной грамматики (производство), вдыхание является наследственным признаком и син является синтезированный атрибут.

+1

T.val = T'.syn, видя только это правило, является val syn. атрибут .... – user2047167

+1

@ user2047167-Да, val - это syn. атрибут, поскольку T.val принимает значения из своего дочернего узла T..syn; вы абсолютно правы! –

+1

Что, если есть атрибут, который в одном правиле использует атрибут родителя для его оценки, а в другом правиле он использует значение своих детей для оценки – user2047167

1

Атрибут, который принимает значения данных из его дочерних узлов, называется синтезированным атрибутом.

Они также называются s-приписываемой продукцией. Атрибут, который принимает значения, составляющие родительские или родственные узлы, называется унаследованными атрибутами. Правило производства с унаследованным атрибутом называется L-атрибутами.