29/04/13 16:54
dmr
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!
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 29/04/13 16:58
aaa