A.A. 2001-02

Linguaggi di Programmazione I: Paradigmi Prova scritta del 23 gennaio 2002

Esercizio 1. Definire la sintassi astratta di un semplice sottolinguaggio, JExp, delle espressioni di Java, che includa almeno termini del tipo

x.m(y, z.n(w)).

Esercizio 2. Sia K = {A, B, C … } un insieme di classi sulle quali sia data una relazione ≤ di sottoclasse, e sia T un insieme di tipi appropriato per JExp. Ad esempio, T = K, oppure T = K ∪ {int, boolean … }. Sia data inoltre una funzione

d : K × Ide × T^{∗} → (T ∪ ⊥),

dove d(C, m, < t_{1}, … t_{n} >) = t se e solo se nella classe C è definito un metodo m : t_{1} × ⋯ × t_{n} → t, o altrimenti d restituisce ⊥. Definire un sistema dei tipi per JExp che sia in accordo con quello di Java.

Esercizio 3. Definire una semantica operazionale di JExp che sia in accordo con quella di Java.