web-dev-qa-db-fra.com

Attributs synthétisés vs hérités

Comment puis-je trouver si un attribut est synthétisé ou hérité des productions d'une grammaire?

J'imagine que pour cela l'attribut doit être prédéfini dans le problème - si sa valeur dépend de nœuds enfants ou parents. Mais existe-t-il un moyen d'analyser si un attribut est hérité ou synthétisé à partir de productions grammaticales?.

9
user2047167

Attribut synthétisé: attribut qui tire ses valeurs des attributs attachés aux enfants de son non-terminal.

Attribut hérité: attribut qui tire ses valeurs des attributs attachés au parent (ou aux frères et sœurs) de son non-terminal.

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

Comme vous pouvez le constater à partir de la grammaire donnée (productions),inh est un attribut hérité et Syn est un attribut synthétisé.


Furtter Read: Attributs Grammars .

9
Am_I_Helpful

L'attribut qui prend des valeurs de données de ses nœuds enfants est appelé un attribut synthétisé.

Celles-ci sont également appelées production s-attribuée. L'attribut qui prend des valeurs de parents ou de nœuds frères est appelé attributs hérités. Les règles de production ayant un attribut hérité (chaque attribut hérité est limité à l'héritage d'un parent ou d'un frère laissé uniquement) sont appelées productions L-attribuées. 

1
Adnan Lodhi

Regardons la calculatrice 

PRODUCTION

  1. L -> E $
  2. E -> E1 + T
  3. E -> T
  4. T -> T1 * F
  5. T -> F
  6. F -> (E)
  7. F -> nombre

RÈGLES SÉMANTIQUES

  1. imprimer (E.val)
  2. E.val: = E1.val + T.val
  3. E.val: = T.val
  4. T.val: = T1.val * F.val
  5. T.val: = F.val
  6. F.val: = E.val
  7. F.val: = nombre.lexval
0
Sercan Aydın