Title: Partie II S
1Partie IISémantique
2Quest-ce que cest ?
- La sémantique donne le sens dun langage
- Pour un langage de programmation, elle permet de
prévoir le comportement du programme - Pour un langage séquentiel, on suppose que le
seul comportement observable est le résultat
final.
3A quoi ca sert ?
- La sémantique permet de
- décider ce que doit faire un programme dans des
cas complexes - calculer si des programmes sont équivalents, ce
qui permet à un compilateur de remplacer lun par
lautre. - dériver la plupart des analyses de programmes
- construire des compilateurs fiables
4Types de sémantique
- Sémantique opérationnelle décrit comment un
programme peut sexécuter - Sémantique dénotationnelle donne un objet
(p.ex. une fonction des données vers les
résultats) comme sens dun programme - Sémantique axiomatique donne des règles pour
raisonner sur les programmes
5Liens
- les 3 types de sémantique ont leur utilité
- la sémantique opérationnelle facilite la
construction de compilateurs - la sémantique dénotationnelle donne les concepts
du langage - la sémantique axiomatique est la plus utile pour
les programmeurs - On peut passer de lune à lautre en démontrant
leur équivalence.
6SémantiqueOpérationnelle Structurée
7Sémantique opérationnelle
Sémantique opérationnelle on donne le sens du
programme en donnant un ensemble dexécutions
possibles. Avantages intuition claire
facilité de construire un interpréteur
traitement du non-déterminisme - Inconvénients
fréquents - non compositionnel on ne peut
pas donner de sens à certaines
parties - peu abstrait difficile de prouver
que 2 programmes sont
équivalents. difficile de construire un
compilateur optimisant.
8Sémantique Opérationnelle Structurée
- On évite les inconvients habituels en ajoutant
- Compositionalité On donne des règles
dinférences qui donnent les exécutions possibles
en fonction de celles des composants. - Abstraction On ajoute des règles de similarités
disant quelles exécutions sont équivalentes.
9Système de déduction
- Une règle dinférence est de la forme
prémisses conclusion
Si on a prouvé F1 ... Fn on peut déduire F0
. (Ici les Fi décriront des exécutions
possibles) - Sil ny a pas de prémisses, on
lappelle un axiome. - Une règle peut contenir
des méta-variables càd des variables qui
représentent nimporte quel texte dune catégorie
syntaxique donnée. On lappelle alors un
schéma de règle. - Une preuve est un arbre fini
composé de règles dinférences elle a une
conclusion à la racine, appelée théorème. - La
théorie dun système de déduction est lensemble
des théorèmes.
10Exemple un système de déduction pour la syntaxe
- Les formules sont de la forme T VN (le texte T
dérive de VN). - Chaque règle non contextuelle, par exemple
- S if E then S1 else S2
- peut se traduire en une règle dinférence
- E expression S1 instruction
S2 instruction - if E then S1 else S2 instruction
11Exemple déduction syntaxique
Une preuve dans ce système est un arbre
syntaxique
Les règles dinférences peuvent aussi vérifier
des conditions de contexte, p.ex. les types
12Sémantique Opérationnelle Structurée Définition
- Les formules qui nous intéressent
- e1 ? e2
- dans létat e1 par un pas dexécution on arrive
dans létat e2
13Etats
- Les états doivent contenir l information
nécessaire à l exécution - la valeur des variables
- le point dexécution dans le programme (ici, on
le représente par la partie du programme restant
à exécuter) - létat de la pile de récursion
- etc.
14Exemple expressions Pascal
- on ne traite dabord que des expressions sans
variables et sans effet de bord, donc la mémoire
nest pas (encore) nécessaire.
15Règles
- de congruence on peut simplifier n importe
quelle sous-expression en Pascal - de calcul pour chaque opérateur Pascal, on
donne des règles pour calculer la valeur du
résultat à partir de la valeur des arguments - par exemple
- not true ? false
- not false ? true
16Exemple
- 7 (4 5) ? 7 20 ? 27
- le premier pas est la règle de congruence pour le
2ème argument sa prémisse est justifiée par la
règle de calcul pour . - le second pas est le calcul de .
17Expressions avec mémoire
- Un état a maintenant 2 composantes
- lexpression à évaluer
- létat de la mémoire une fonction
Identificateur ? Valeur - de congruence on peut simplifier une
sous-expression - de calcul
- (not true, m) ? (false, m)
- (not false, m) ? (true, m)
- de recherche de valeur en mémoire (id, m) ?
(m(id) , m)
18Exemple expression
recherche
congruence
congruence
calcul
congruence
recherche
congruence
congruence
calcul
congruence
calcul
Donc lexpression sévalue à 30 en 5 étapes.
19Instructions
Affectation 1. (e, m) (e,
m ) congruence (id e, m) (id e,
m ) calcul 2. (id n, m) (skip,
update (id, n, m))
instruction vide Conditionnelle 1.
(e, m) (e, m) (if e then
S1 else S2m) (if e then S2 else S2m) 2.1
(if true then S1 else S2, m) (S1, m) 2.2
(if false then S1 else S2, m) (S2,
m) abréviation (if e then S1, m)
(if e then S1 else skip, m) Boucle (while e
do S, m) ? (if e then begin S while e do S end,
m) Séquence (S1, m) ? (S 1,
m) (S1 S2, m) ? (S1 S2, m) (skip S,
m) ? (S, m)
e expr id identificateur n const
20Système de transitions
- Les règles de la SOS définissent une machine à
états infinis, quon appelle aussi un système de
transitions
21Questions importantes
- 1. Il y a-t-il plusieurs suites de flèches
partant dun même état ? (déterminisme) - 2. Certaines de ces suites sont-elles infinies ?
(terminaison) - 3. Aboutissent-elles toutes au même état ?
(confluence) - 4. Quelle forme ont les états finals ? Les état
finals corrects ? - Déf. C final il ny a pas de C C ? C
(forme normale) - 5. Les flèches préservent-elles les types ?
22Equivalence sémantique
- La SOS détaille les calculs, donc peu de
programme sont équivalents - Deux programmes P,Q sont équivalents ssi
- ils mènent aux mêmes états finaux
- ils bouclent dans les mêmes circonstances
23Exemple
if e then S1 else S2 if not(e) then
S2 else S1 1. Si (e, m) (true, m) alors 1)
(if e then S1 else S2, m) (if true then
S1 else S2, m) (S1, m) 2) (e, m)
(true, m) (not(e), m) (not(true),
m) (false, m) (if not(e)
then S2 else S1, m) (if false then S2
else S1, m) (S1, m) 2. si (e, m)
(false, m) preuve symétrique
congruence 2.1 congruence calcul
not congruence 2.2.