Ciao a tutti sto studiando i compilatori dal libro "Compilatori Principi,tecniche e strumenti" e sono arrivato alla traduzione guidata dalla sintassi.
Devo capire come creare un albero sintattico di un'espressione, avendo la sua grammatica con le relative azioni semantiche, utilizzando gli attributi ereditati(inh) e sintetizzati(syn).
Per esempio con la grammatica L-attribuita per parser LL:
Produzioni: Regole semantiche:
1)E --> TE' E.node=E'.syn
E.num=T.node
2)E'--> +TE' E1'.inh=new Node('+',E'.inh,T.node)
E'.syn=E1'.syn
3)E'--> -TE' E1'.inh=new Node('-',E'.inh,T.node)
E'.syn=E1'.syn
4)E'--> ε E'syn=E.node
5)T --> (E) T.node=E.node
6)T --> id T.node=new Leaf(id,id.entry)
7)T --> num T.node=new Leaf(num,num.val)
Leaf crea le foglie, mentre Node i nodi con etichetta +/-.
Il mio problema,nonostante abbia letto la spiegazione del libro,non riesco a capire che ragionamento e' stato fatto per scrivere le regole semantiche poiche' faccio un po' fatica a capire come vengono usati gli attributi sintatizzati ed ereditati. Potreste spiegarmele meglio?
Grazie in anticipo!
Ultima modifica effettuata da dmr il 29/04/2013 alle 18:58 |