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 ;;