Semantica Programelor An II, Sem I, 2007-2008

Embed Size (px)

Citation preview

Semantica programelor Tudor B l nescuAn 2, sem. 1 specializarea Informatic10.02.2012 1

Introducere Specificarea limbajelor de programare: Sintaxa (structura (forma) programelor) Specificare neformalizat (limbaj natural) Specificare formalizat (gramatici generative Chomsky independente de context n nota ia Backus-Naur Form, BNF)

Semantica (semnifica ia programelor) Specificare neformalizat (limbaj natural): explicare intuitiv a semnifica iei programelor predispus la ambiguitate, inconsisten i incompletitudine Nu ofer suport riguros pentru: Implementarea limbajelor de programare (automatizarea procesului de scriere a compilatoarelor) Ra ionamente despre propriet ile programelor i ale limbajelor

Specificare formalizat (defini ii matematice): nso e te, dar nu inlocuie te prezentarea neformalizat Semantic opera ional Semantic denota ional Semantic axiomatic (propozi ional ) etc.

10.02.2012

2

Programe deterministe Sintaxa (nota ie BNF) S ::== skip | V:= E | (S);(S)| if B then S else S fi | while B do S od Abreviere: if B then S fi if B then S else skip fi Observa ie: Sintaxa nu este ambigu Paranteze la compunerea secven ial ; ((x:=1);(y:=2));(z:=3) i (x:=1);((y:=2);(z:=3)) sunt programe diferite. n acceptiunea standard au aceeea i semantic , ambele vor fi desemnate prin x:=1; y:=2; z:=3 (problema dangling else (if-else ambiguity, or if-else conflict) este eliminat prin prezen a cuvntului cheie fi): if b1 then if b2 then S1 fi else S2 fi sau then if b1 if b2 then S1 else S2 fi fi

10.02.2012

3

Model de semantic opera ional Hennessy i Plotkin, 1979 Limbajul expresiilor i al aser iunilor Tipuri Tipuri de baz : integer, (nume de tip, nu mul ime concret !) Boolean, mul imea {true, false}; elementele mul imii nu au (nc ) o semnifica ie.

Tipuri de ordin superior: (T1 x...Tn T), unde Ti ,T sunt tipuri de baz : Ti tipuri de argumente iar T tipul valorilor.

10.02.2012

4

Alfabet Var, mul imea variabilelor Fiecare variabil are asociat un tip (poate lua valori numai din tipul asociat) Simple (tipul asociat este tip de baz ) Tablouri (tipul asociat este un tip de ordin superior): valoarea unui tablou este o func ie. Constante (un tip asociat i o valoare fixat ) de tip de baz : constante ntregi ( 0, -1,1,-2,2...) sau logice (true, false) de tip superior (au ca valoare o func ie fixat ) Simboluri rela ionale: codomeniul este Boolean =,