Esercitazione PR2
Venerdì 7 dicembre 2018

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.