Sono ancora io, alla fine sono riuscito ad implementare la SDT ,usando lo stack del parser. La SDT completa e':
G-> A
A-> A P {
Stack.removeElem(1);
Stack.state=GOTO(Stack.size()-2.state,r1);
}
A-> P {
Stack.state=GOTO(Stack.size()-2.state,r2);
}
P-> print F {
print(Stack.code);
print("call print");
Stack.removeElem(1);
Stack.state=GOTO(Stack.size()-2.state,r3);
}
F-> F,id {
Stack.size()-3.code+="push "+id.lexVal();
Stack.removeElem(2);
Stack.state=GOTO(Stack.size()-2.state,r4);
}
F-> id {
Stack.code="push "+id.lexVal();
Stack.state=GOTO(Stack.size()-2.state,r5);
}
In pratica invece di far levare, durante una riduzione gli elementi dallo stack, ho scritto la SDT in modo che si occupi lei dello stack.
Grazie ancora !!
Ultima modifica effettuata da dmr il 26/12/2013 alle 22:06 |