La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Ex.1 - Semantica dell’Assegnamento Com := Path Ide = Expr (assegnamento) Com * Cenv * Heap * Astack  com Heap * Astack * Cenv Una soluzione parziale:

Presentazioni simili


Presentazione sul tema: "Ex.1 - Semantica dell’Assegnamento Com := Path Ide = Expr (assegnamento) Com * Cenv * Heap * Astack  com Heap * Astack * Cenv Una soluzione parziale:"— Transcript della presentazione:

1 Ex.1 - Semantica dell’Assegnamento Com := Path Ide = Expr (assegnamento) Com * Cenv * Heap * Astack  com Heap * Astack * Cenv Una soluzione parziale:  expr top(  ’ ) = (x,  )  = top(  ) defined( , i)  ’ =update ( , i, v)  ”=push(pop(  ’),(x,push(pop(  ),  ’) _________________________________________________  com Con 2 problemi: update: frame*ide*val non è una funzione discesa ricorsiva della struttura

2 Assegnamento: una soluzione Com := Path Ide = Expr (assegnamento) Com * Cenv * Heap * Astack  com Heap * Astack * Cenv  path c  expr  update  update _____________________________  com Ide * Val * (Ide | Loc | met) * Cenv * Heap * Astack  update Heap * Astack * Cenv

3 Update: frame in  Ide * Val * (Ide | Loc | met) * Cenv * Heap * Astack  update Heap * Astack top(  ) = (x,  )  = top(  ) defined( , i)  ’ :update ( , i, v) __________________________________________________________  update top(  ) = (x,  )  = top(  ) not defined( , i)  ’ =  pop(   update _____________________________________________  update top(  ) = (x,  ) empty(  )  update _____________________________________________  update Notazione:  ’ :update ( , i, v) indica che la modifica su  provoca la modifica del componente corrente in un nuovo componente  ’

4 Update: frame in  Ide * Val * (Ide | Loc | met) * Cenv * Heap * Astack  update Heap * Astack  (l) = (c, , _) defined( , i)  ’  update ( , i, v) _____________________________________________  update  (l) = (c, , _) not defined( , i)  update _____________________________________________  update

5 Update: frame in  Ide * Val * (Ide | Loc | met) * Cenv * Heap * Astack  update Heap * Astack * Cenv  (c) = (c1, , _, _, _) defined( , i)  ’ :update ( , i, v) _____________________________________________  update  (c) = (c1, , _, _, _) not defined( , i)  update _____________________________________________  update

6 Ex.2 - this.this: applichiamo le regole  path p’  naming v ___________________________________________________  expr  expr top(  ) = (o, _) ____________________________  path o  path o top(  ) = (o, _) ____________________________  naming o  naming o p’=o=met Ma: o≠met

7 Ex.3 - Comando Return: semantica Com := return (terminazione valutazione) Com * Cenv * Heap * Astack  com Heap * Astack * Cenv top(  ) = (x,  ) _____________________________________  com  com

8 Ex.4 - Return: semantica come espressione Expr := return e Expr * Cenv * Heap * Astack  expr Val * Heap (* Astack)   expr _______________________________________  expr  expr

9 Ex.5 - Un programma: semantica public class A{ public static int x; public int y; public void P1(int y){ this.y=y+x; x=P2(this); } public int P2(A z){ z.y = y+ A.x; return x; } public A(){ x = 7; y = x; }} class B extends A{ public static int z; public static int w; public int P2(A z){ z.x = y + w; return B.z; } public B(){ z = x+1; w = 0; }} class Princ{ public static void main(String[] args){ B o = new B(); int m = o.P2(o); }}

10 Parte statica: ambiente  object …. Aobjectx 0 - y 0 P1 (int y) b1 ? P2(A z) b2 ? {x=7;y=x} BAz 0 w 0 - y 0 P1 (int y) b1 ? P2(A z) b3 ? {x=7;y=x; z=x+1;w=0} Princobject - main (.. args) b4 Princ - P1 (int y) b1 ? P2(A z) b3 ? {x=7;y=x; z=x+1;w=0} b1 {this.y=y+x; x=P2(this);} b2 {z.y=y+A.x; return x;} b3 {z.x=y+w; return B.x;} b3 {B o=new B(); int m= o.P2(o);}

11 Parte dinamica: Astack  heap  struttura iniziale: il primo record di attivazione … graficamente valutando espressione new B() … graficamente


Scaricare ppt "Ex.1 - Semantica dell’Assegnamento Com := Path Ide = Expr (assegnamento) Com * Cenv * Heap * Astack  com Heap * Astack * Cenv Una soluzione parziale:"

Presentazioni simili


Annunci Google