Sei sulla pagina 1di 1

1

Prova scritta di Linguaggi - 22.02.2011 (prof. Merro)


Si consideri il linguaggio Lang denito attraverso la seguente grammatica: V V al C Lang ::= ::= x x := V true false V1 and V2 V1 V2 C; C V skip

fun(x : T ) V while V do C

if V then C else C

1. (6 punti) Formalizzare la statica del linguaggio Lang fornendo un sistema di tipi con giudizi della forma ` V : T e ` C : T , per appropriati tipi T deniti dal candidato . 2. (6 punti) Una volta denito il sistema di tipi, dire se il termine if (fun(f : T1 ) f true) (fun(g : T2 ) (fun(h : T3 ) hg ))

then x := fun(f : T1 ) true else skip

` e ben tipato o meno, al variare dei tipi T1 , T2 e T3 . 3. (6 punti) Formalizzare la dinamica del linguaggio tipato Lang attraverso una semantica small-step in stile call-by-name. Denire, per dierenza, una semantica small-step in stile call-by-value . Entrambe le semantiche devono essere left-to-right senza short-circuit. 4. (6 punti) Si estenda la sintassi del linguaggio al costrutto per la programmazione a blocchi: begin var x := V ; C end. Adeguare il sistema di tipi e la semantica small-step. 5. (6 punti) Si estenda la sintassi del linguaggio col costrutto per espressioni con side-eects: do C return V . Adeguare il sistema di tipi e la semantica small-step. 6. (3 punti) Argomentare se i costrutti introdotti nei due punti precedenti possono essere usati, cos` come deniti dal candidato, nel medesimo linguaggio.