Creato da pastuweb.com
Share My Page
My Social Accounts
Account FaceBook Account LinkedIn Account Twitter Account Google Plus Account Git Hub

Sono utili per esprimere la dipendenza di costrutti di un linguaggio dal contesto in cui si trovano.

L'ordine di valutazione degli attributi dipende dall'ordine con cui vengono creati o visitati i nodi dell'albero di derivazione.

Comunemente i parser seguono l'ordine di una visita in profondità dell'albero.
In tali grammatiche si ha una propagazione delle informazioni da sinistra a destra.

Esempio:
int a,b;
D --> T L ';'                        L.type = T.type
L --> L1 ',' id                     L1.type = L.type 
                                        new_var(id.name, L.type)        
L --> id                             new_var(id.name, L.type)
T --> 'integer'                   T.type=type_int

Se la grammatica è ad attributi ereditati e le regole semantiche non sono complesse è di solito possibile "aggirare l'ostacolo" in maniera semplice.
Se le regole sono più complesse è possibile inserire dei MARKER, cioè dei non-terminali che si espandono in epsilon.

Per un esempio con i Marker vedere la sezione degli esempi di JFlex e CUP oppure la sezione prove d'esame.

Average (1 Vote)
The average rating is 5.0 stars out of 5.