TESTI
Si consideri il semplice linguaggio funzionale con dichiarazioni globali
e memoria visto in una esercitazione precedente
e se ne modifichi la semantica in modo tale che
se una funzione passa il proprio parametro formale per riferimento,
alla fine della chiamata il valore calcolato del corpo della funzione
viene assegnato al parametro attuale.
Ad esempio, il seguente programma deve restituire il valore
9.
Prog(
[Var("base", EInt 1);
Fun("iden", Val "n", Den "n");
Fun("inc", Ref "n", Add(Den "n", EInt 1));
Var("test", Add(App("inc", Den "base"), Den "base"))
],
App("iden", Add(Den "test", App("inc", Den "test")))
)
Si ridefinisca la semantica operazionale vista in precedenza
in modo che rispetti le nuove condizioni.
[2]
Si verifichi la correttezza della semantica progettando ed eseguendo
alcuni casi di test, sufficienti a testare i nuovi operatori introdotti.
[3]
Si ridefinisca un interprete OCaML che corrisponde alla semantica operazionale introdotta.
Si traducano poi nella sintassi astratta proposta i casi di test proposti in precedenza,
e si valutino con l'interprete.
Soluzione: il file globaleFullNameRefScope.
|