22/12/13 8:24
dmr
Ciao a tutti, dovrei implementare una SDT(syntax directed translation) per una grammatica, utilizzando il parser LR(1).Durante il normale svolgimento del parsing, e' proprio il parser LR(1) a svolgere le azioni di pop dello stack infatti l'algoritmo del parser LR(1) e':
Infatti, nel caso di una riduzione si occupa proprio lui a levare i simboli dallo stack. La mia domanda ora e' questa: nel caso in cui bisogna implementare una SDT, durante una riduzione, i simboli dello stack devono essere gestiti(push/pop) dalle azioni semantiche della grammatica in esame ??
Grazie in anticipo, spero di essere stato chiaro !
let a be the first symbol of w$; while(1) { let s be the state on top of the stack; if ( ACTION[s, a] = shift t ) { push t onto the stack; let a be the next input symbol; } else if ( ACTION [s, a] = reduce A ) { pop n symbols off the stack; let state t now be on top of the stack; push GOTO[t, A] onto the stack; } else if ( ACTION[s,a] = accept ) break; else call error-recovery routine; }
Infatti, nel caso di una riduzione si occupa proprio lui a levare i simboli dallo stack. La mia domanda ora e' questa: nel caso in cui bisogna implementare una SDT, durante una riduzione, i simboli dello stack devono essere gestiti(push/pop) dalle azioni semantiche della grammatica in esame ??
Grazie in anticipo, spero di essere stato chiaro !
Ultima modifica effettuata da dmr 22/12/13 8:28
aaa