salve a tutti!!!qualcuno sa aiutarmi a risolverve quest'esercizio??grazie mille...sono disperata!!!

Date la semantica delle dichiarazioni (decl) e del comando ‘Call’ nel linguaggio di programmazione la cui sintassi è elencata di seguito (potete quindi ignorare gli altri comandi e le espressioni). Assumete di avere le seguenti funzioni su Ambiente e Memoria.

Ambiente: La emptyenv(x) crea un ambiente del tipo opportuno, la applyenv(x,y) riceve un ambiente x e un identificatore y e restituisce il valore associato all’identificatore nell’ambiente, e la bind(r,l,e) associa l’identificatore l il valore e (del tipo corretto) nell’ambiente v.

Memoria: Le locazioni (loc) sono interi, la emptystore(x) crea una memoria del tipo opportuno, la applystore(x,y) riceve una memoria x e una locazione y e restituisce il valore associato alla locazione di memoria, la allocate(s,e) riceve una memoria s e un valore e (del tipo corretto) e restituisce una nuova memoria ed una locazione (alla quale, nella nuova memoria, è associato il valore e) e la update(s,l,e) che aggiorna il valore associato alla locazione l nella memoria s con il valore e (del tipo opportuno).

type mode = Name |Reference
type param = mode * ide

type exp =
| Eint of int
| Ebool of bool
| Den of Ide
| Prod of exp * exp
| Sum of exp * exp
| Diff of exp * exp
| Eq of exp * exp
| Minus of exp
| Iszero of exp
| Or of exp * exp
| And of exp * exp
| Not of exp
| Ifthenelse of exp * exp * exp
| Val of ide

and decl =
| Dconst of ide * exp
| Dvar of ide * exp
| Dseq of decl * decl
| Declproc of ide * param * com

and com =
| Assign of ide * exp
| Cifthenelse of exp * com * com
| While of exp * com
| Cseq of com * com
| Block of decl * com
| Call of ide * exp ;;