Académique Documents
Professionnel Documents
Culture Documents
( grands pas)
M.V. Aponte
Anne 2007/2008
Smantique : Quest-ce ?
analyse lexicale
analyse syntaxique
Arbre de syntaxe
abstraite (AST)
Smantique : Quest-ce ?
Syntaxe vs Smantique
Exemple de la logique:
Syntaxe: x N successeur (x) 6 =0
Smantique: tous les nombres naturels ont un successeur
diffrent de zro
Exemple dun langage de programmation:
Syntaxe:
Smantique : Pourquoi ?
Smantique : Pourquoi ?
gnration doutils
Smantique oprationnelle
Smantique oprationnelle(2)
Exemple:
P1: a:=1; b:=0;
P2: a:=1 /* un commentaire */; b:=0;
P3: b:=0; a:=1;
Smantique Dnotationnelle
(vision fonctionnelle)
Le sens dune construction est modlis par un objet
mathmatique qui reprsente leffet de son excution sur ltat
du programme.
programme = fonction mathmatique
Smantique Dnotationnelle(2)
Smantique Axiomatique
Smantique Axiomatique(2)
Smantiques Oprationnelles
de dtails de lexcution.
:=
|
|
numn | x
eA1 + eA2 | eA1 eA2
eA1 eA2 | eA1 /eA2
Exemples:
Valeur: dune expression arithmtique quelconque.
Type: dune expression arithmtique quelconque.
Nombre daccs mmoire: dune expression arithmtique
quelconque.
etc.
Composantes: un calcul
Une description de la manire de calculer la proprit
smantique pour nimporte quelle construction de la syntaxe.
Exemples:
Valeur:
Valeur dun numral numn : le nombre entier n
correspondant,
Valeur dune variable x: sa valeur en mmoire,
etc..
Systmes dinfrence
Un jugement
Un jugement a la forme:
< C, >
Jugements
Exemples:
Si la syntaxe tudie est celle des expressions arithmtiques,
et la proprit caractriser, leur valeur, la valeur de la
constante 3 est tablie par le jugement:
< 3, >
Exemples de jugements
Supossons que reprsente lensemble des valeurs en
mmoire pour chacune des variables dans lexpression
tudie. Si = [x 7 5], alors
< x + 3, >
int
ou
< x + 3, [x 7 float] >
float
Systmes dinfrence
Compos de:
Un ensemble de rgles dinfrence: ce sont des jugements
Rgles dinfrence
j1
j2
jn
Axiomes
(A)
Un tat de la mmoire
Exemple:
hx + 2, [x 7 5]i
Rgles dvaluation
(An )
hnumn , i
(Add )
(n Z)
(Var )
ha1 , i
n1 ha2 , i
n2
ha1 + a2 , i
n1 + n2
(Sous )
ha1 , i
n1 ha2 , i
n2
ha1 a2 , i
n1 n2
hx, i
(Mul )
(x)
(x dom())
ha1 , i
n1 ha2 , i
n2
ha1 a2 , i
n1 n2
(Div )
ha1 , i
n1 ha2 , i
n2
ha1 /a2 , i
n1 /n2
a1 , a2 , . . . EA
Condition dans toutes les rgles: (n, n1 , n2 . . . Z)
Meta-variables et instances
Dans
(Add )
ha1 , i
n1 ha2 , i
n2
ha1 + a2 , i
n1 + n2
hx, [x
7 5]i
5 h2, [x
7 5]i
hx + 2, [x 7 5]i
5+2
(An )
hnumn , i
(n Z)
(Add )
ha1 , i
n1 ha2 , i
n2
ha1 + a2 , i
n1 + n2
numral numn ,
[[+]] dsigne loprateur daddition habituel sur les entiers,
...
(An )
[[numn ]] = n
(n Z)
hnumn , i
n
(Add )
ha1 , i
n1 ha2 , i
n2
ha1 + a2 , i
n1 [[+]]n2
Exemple dvaluation
Avec ce systme dinfrence, et sachant que est t.q.
(x) = 2, pouvons nous conclure h(2 3) + x, i
8?
conclusion h(2 3) + x, i
8,
(An )
(Mul )
(Add )
(An )
h2, i
2
h3, i
h2 3, i
6
h(2 3) + x, i
(Var )
hx, i
Chaque noeud (jugement) a pour fils les jugments qui lui sont
ncessaires en tant que premisses. Il est tiquett par le nom
de la rgle ayant permi dobtenir ce jugement. Les feuilles sont
des instances daxiomes.
configuration rrone.
Notre algorithme sait-il dcider si une configuration nest pas
smantiquement correcte? Que se passe-t-il si cela survient au
milieu dune valuation?
Nous devrons ajouter les erreurs!
a1 a2 (v VA V[Z] ha1 , i
v ha2 , i
v)
Technique de preuve
Nous devons donc montrer que pour tout tat les deux
noncs suivants sont valides:
(1) Si hx + x, i
n alors h2 x, i
n,
(2) Si h2 x, i
n, alors hx + x, i
n.
n alors h2 x, i
n,
n,
n, alors:
(Var )
(Add )
(Var )
hx, i
(x)
hx, i
hx + x, i
(x) + (x)
(x)
h2, i
2
h2 x, i
(Var )
hx, i
2 (x)
(x)
expressions bolennes,
t B est une valeur de vrit dans lensemble
B = {true, false}
et quon lit: une expression boolenne b svalue en une valeur
t B tant donne une valuation .
Systme dinfrence
(B= )
(Bc )
ha1 , i
n1 ha2 , i
n2
ha , i
n1 ha2 , i
n2
(B ) 1
ha1 = a2 , i (n1 = n2 )
ha1 a2 , i (n1 n2 )
ht, i t
(B )
t B
(B )
hb1 , i v1 hb2 , i v2
hb1 and b2 , i v1 v2
hb1 , i v1 hb2 , i v2
hb1 or b2 , i v1 v2
(B )
hb, i t
hnot b, i (t)
7 [x 7 5]
(tat avant) [x 7 5] x + 1
7 [x 7 5] (tat aprs)
Exemple: hx := 0, i [x 0]
n
si y = x
(y ) sinon
(C2 )
ha, i
n
hx := a, i [x n]
nZ
(C1 )
hskip, i
(C3 )
hc1 , i 1 hc2 , 1 i 2
hc1 ; c2 , i 2
(C4 )
(C5 )
(C7 )
(C6 )
hb, i false
hwhile b do c, i
(An )
(C2 )
(C3 )
D1 D2 D3
h0, i
0
(C7 )
hx := 0, i 1
hwhile x 0 do x := x + 1, 1 i 2
hx := 0 ; while x 0 do x := x + 1, i 2
(An )
hx, 2 i
1
h0, 2 i
0
hx 0, 2 i false
(C6 )
hwhile x 0 do x := x + 1, 2 i 2
(B )
Programmes quivalents
Deux programmes c1 , c2 sont quivalents, not c1 c2 si leur
excution partir dun mme tat initial aboutt dans un tat
final identique.
c1 , c2 EC :
c1 c2 (, 0 V[Z] hc1 , i 0 hc2 , i 0 )
Exemples :
if b then I else I I
if b then I else skip 6 I
x := 0
x := x + 1
x := x + 5
1x
(x) = 2
Si:
c1 : (if b then c else c 0 ); c 00
c2 : if b then (c; c 00 ) else (c 0 ; c 00 )
?
c1 c2
Pour , 0 quelconques, nous construisons un arbre dinfrence
de hc1 , i 0 partir dun arbre de dinfrence de
hc2 , i 0 et vice versa.
..
..
.
.
(Cj ) 00
(Ci )
0
hif b then c else c , i 1
hc , 1 i 0
(C3 )
0
00
h(if b then c else c ); c , i 0
On distingue alors deux cas (rsultat de lvaluation de b).
..
.
..
hb, i
true
hc, i 1
.
(C
)
k
hif b then c else c 0 , i 1
hc 00 , 1 i 0
h(if b then c else c 0 ); c 00 , i 0
(Bi )
(C4 )
(C3 )
(Cj )
et vice versa.
..
.
..
hb, i
false
hc 0 , i 1
.
(C
)
k
hif b then c else c 0 , i 1
hc 00 , 1 i 0
h(if b then c else c 0 ); c 00 , i 0
(Bi )
(C5 )
(C3 )
(Cj )
et vice versa.
Boucles et Terminaison
Linstruction while permet dcrire des programmes dont
lexcution ne termine pas.
Les arbres dinfrence tant des objets finis, la smantique
oprationnelle grands pas nest pas en mesure de rendre compte
de lexcution des programmes qui ne terminent pas ... contrairement
la smantique oprationnelle petits pas.
Exemple: while true do skip
(Bc )
(C7 )
htrue, i
..
.
(C1 )
(C7 )
true
hskip, i
hwhile true do skip, i 0
hwhile true do skip, i 0