wake-up-neo.com

Synthetisierte vs geerbte Attribute

Wie kann ich herausfinden, ob ein Attribut aus den Produktionen einer Grammatik synthetisiert oder vererbt wird?

Ich denke, dafür muss das Attribut im Problem vordefiniert sein - wenn sein Wert von untergeordneten oder übergeordneten Knoten abhängt. Gibt es eine Möglichkeit zu analysieren, ob ein Attribut von Grammatikproduktionen vererbt oder synthetisiert wird?.

9
user2047167

Synthetisiertes Attribut: Ein Attribut, das seine Werte aus den Attributen bezieht, die den untergeordneten Elementen seines Nichtterminals zugeordnet sind.

Inherited Attribute: Ein Attribut, dessen Werte von den Attributen abgerufen werden, die dem übergeordneten Element (oder den übergeordneten Objekten) seines Nichtterminals zugeordnet sind.

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

Wie Sie der gegebenen Grammatik (Produktionen) entnehmen können, istinh ist ein geerbtes Attribut und syn ist ein synthetisiertes Attribut.


Weiter lesen: Attribut-Grammatiken .

9
Am_I_Helpful

Das Attribut, das Datenwerte von seinen untergeordneten Knoten übernimmt, wird als synthetisiertes Attribut bezeichnet.

Diese werden auch als s-attributed production bezeichnet. Das Attribut, das Werte von übergeordneten oder gleichgeordneten Knoten übernimmt, wird als vererbte Attribute bezeichnet. Die Produktionsregel mit einem geerbten Attribut (Jedes geerbte Attribut kann nur von einem übergeordneten oder einem linken Geschwister geerbt werden) wird als L-attributierte Produktionen bezeichnet. 

1
Adnan Lodhi

Schauen wir uns den Rechner an 

PRODUKTION

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

SEMANTISCHE REGELN

  1. druck (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: = number.lexval
0
Sercan Aydın