La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList]

Presentazioni simili


Presentazione sul tema: "Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList]"— Transcript della presentazione:

1 Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList] StaticMetDefList::=StaticMetDef StaticMetDefList |  StaticMetDef::=public static TypeR Ide m (Type Ide a ) {StatList} Command::=...| Ide c.Ide m (Exp) |... Exp::=...| Ide c.Ide m (Exp) TypeR::= Type | void Type::=int | boolean |...

2 Esempio prog{ class Num { public static int fact (int p) { if (p==0) return 1; else return p *fact(p-1);} { int y; int x=5; if (x>=0) y=Num.fact(x);}} public class Num { public static int fact (int p) { if (p==0) return 1; else return p *fact(p-1);} public static void main (String [ ] args) { int y; int x=5; if (x>=0) y=Num.fact(x); }} programma Java programma nel linguaggio didattico

3 Classi: class Num {public static int fact (int p) { if (p==0) return 1; else return p*fact(p-1);} public static void main (String [] args){...}} Ambienti delle classi: Cenv Cenv = {Ide  Menv x  x Menv} Menv = {Ide  Ide x Block} metodi statici: main e operazioni di uso generale   c = {Num -> }  s ={fact ->, main -> } Il Nuovo Stato : Cenv x 

4 Sistema di transizioni per: Semantica dei Comandi S S com ={<  com, T com,  com }  com = { | C  Com,  ,  c  c  Cenv}  > { |   } > T com = { |   }  com = {(=),..., tutte le regole che vedremo }

5  classdecl  c  com   classdecl  c >  com   prog   prog  (prog) Semantica: il programma

6   c ’   c ”   c ’   c ” <ClassDecl ClassDeclList,  c   c ” <ClassDecl ClassDeclList,  c   c ”  cmd s  cmd  s / c]   c [ / c] (classdecllist) Semantica: classi (classdecl)

7   s [ /m]   s [ /m]   s ’   s ”   s ’   s ” < StaticMetDef StaticMetDefList,  s   s ” < StaticMetDef StaticMetDefList,  s   s ” (SMD) (SMDLl) Semantica: metodi statici (che non calcolano un risultato)

8  s (m)= >  v  c (ideC)=  s (m)= >  ’ >  ’ >   Semantica: metodi statici (che non calcolano un risultato) invocazione invoc

9 Ambiente del metodo (ovvero Identificatori noti nel metodo) Si desume dallo stato di valutazione del Blocco corpo del metodo, e cioè: – –l’ambiente delle classi  c – –lo stack contenente il(i) parametro(i)  [v/x].  f La politica di scoping di Java è statica e pertanto le variabli definite nello stato di invocazione del metodo risultano NON accessibili. Linguaggi in cui, invece, le variabili definite nello stato di invocazioni sono accessibili sono linguaggi a scoping dinamico. Linguaggi a scoping dinamico esistono anche se non sono molto diffusi (Lisp), perchè di difficile comprensione

10  s (m)= >  v  c (ideC)=  s (m)=  ’  ’ >   ’(retVal) >  v >   [v/retVal] (return) Semantica: metodi statici (che calcolano un risultato) invoc (Exp)

11 Espressioni: semantica (B () ) (B true ) >  exp b >  exp b’ b [op] b’ = b” >  exp b”  >  exp b >  exp b’ b [|] b’ = b”  >  exp b”  >  exp b  exp b’ b [&] b’ = b”  >  exp b”  >  exp b not b = b’  (x)= b ! E  exp b’  >  exp b  >  exp tt  >  exp ff (B Ide ) (B | ) (B & ) (B ! ) (BE op ) (B false ) (B true )


Scaricare ppt "Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList]"

Presentazioni simili


Annunci Google