Gramatica atributelor

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În teoria limbajului formal , o gramatică de atribut este o gramatică formală care asociază un sens regulilor de producție . Este o extensie a formalismului gramaticilor fără context și are aplicații în informatică , în special este utilizată în traducerea unui program bazat pe sintaxă .

Descriere

Fiecare simbol poate avea unul sau mai multe atribute, fiecare dintre care „conține” o valoare, similar cu variabilele unui limbaj de programare imperativ. Este posibil să asociați una sau mai multe operații, numite acțiuni semantice , fiecărei reguli de producție ; acțiunile semantice pot citi și modifica și valorile atributelor. Secvența acțiunilor semantice asociate cu o regulă de producție se numește regulă semantică .

Valoarea unui atribut reprezintă semnificația care se intenționează a fi asociată cu un anumit simbol. Valoarea este calculată prin acțiuni semantice exact așa cum un program calculează rezultatul unui calcul. Valorile calculate pot fi utilizate pentru orice tip de procesare.
De exemplu, luați în considerare o gramatică care definește expresiile booleene cu terminale adevărate și false și operatori AND, NAND. Este posibil să asociați un atribut fiecărui simbol și să calculați cu acțiunile semantice valorile atributelor simbolurilor non-terminale, efectuând operațiuni logice similare cu cele identificate de producții:

 E -> și {E.attr = și.attr; }
E -> nand {E.attr = nand.attr; }
E -> termen {E.attr = termen.attr; }
și -> E1 ȘI E2 {and.attr = E1.attr && E2.attr; }
nand -> E1 NAND E2 {nand.attr =! (E1.attr && E2.attr); }
termen -> adevărat {termen.attr = adevărat; }
termen -> fals {term.attr = false; }

Valoarea întregii expresii se află în atributul asociat cu întreaga expresie booleană.

Gramaticile atributelor pot fi folosite și pentru a traduce arborele analizat direct în codul mașinii.

Un punct forte al gramaticilor de atribute este acela că pot transporta informații de oriunde din arborele sintaxei abstracte către oriunde altundeva, într-un mod controlat și formal.

Atribute sintetizate și moștenite

Atributele sunt împărțite în două grupuri: atribute sintetizate și moștenite. Atributele sintetizate sunt rezultatele regulilor de evaluare a atributelor și pot utiliza, de asemenea, valorile atributelor moștenite. Atributele moștenite sunt transmise pe o cale descendentă începând de la nodurile părinte.

În unele abordări, atributele sintetizate sunt folosite pentru a transmite informații semantice în arborele de analiză, în timp ce atributele moștenite sunt utilizate pentru a transmite informații semantice în jos și dincolo. De exemplu, atunci când construiți un instrument de traducere a limbajului, cum ar fi un compilator, acesta poate fi utilizat pentru a atribui valori semantice constructelor sintactice. Mai mult, este posibil să validați verificările semantice asociate cu o gramatică, reprezentând regulile unui limbaj care nu sunt date în mod explicit de sintaxă.

Bibliografie

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT