La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement.

Présentations similaires


Présentation au sujet: "Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement."— Transcription de la présentation:

1 Partie II Sémantique

2 Quest-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.

3 A 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

4 Types 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

5 Liens 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.

6 Sémantique Opérationnelle Structurée

7 Sé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.

8 Sé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 possible s en fonction de celles des composants. –Abstraction : On ajoute des règles de similarités disant quelles exécutions sont équivalentes.

9 Système de déduction Une règle dinférence est de la forme : prémisses conclusion « Si on a prouvé F 1... F n on peut déduire F 0 ». (Ici les F i 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.

10 Exemple : un système de déduction pour la syntaxe Les formules sont de la forme T : V N (le texte T dérive de V N ). 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

11 Exemple : 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 :

12 Sémantique Opérationnelle Structurée : Définition Les formules qui nous intéressent: e 1 e 2 « dans létat e 1 par un pas dexécution on arrive dans létat e 2 »

13 Etats 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.

14 Exemple : 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.

15 Rè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

16 Exemple 7 + (4 * 5) 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 +.

17 Expressions 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)

18 Exemple : expression congruence recherche congruence calcul * congruence recherche congruence calcul * congruence calcul + Donc lexpression sévalue à 30 en 5 étapes.

19 Instructions 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 S 1 else S 2 m) (if e then S 2 else S 2 m) 2.1 (if true then S 1 else S 2, m) (S 1, m) 2.2 (if false then S 1 else S 2, m) (S 2, m) abréviation (if e then S 1, m) (if e then S 1 else skip, m) Boucle :(while e do S, m) (if e then begin S ; while e do S end, m) Séquence : (S 1, m) (S 1, m) (S 1 ; S 2, m) (skip ; S, m) (S, m) e : expr id : identificateur n : const

20 Système de transitions Les règles de la SOS définissent une machine à états infinis, quon appelle aussi un système de transitions

21 Questions 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 ?

22 Equivalence 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

23 Exemple if e then S 1 else S 2 if not(e) then S 2 else S 1 1.Si (e, m) * (true, m) alors1) (if e then S 1 else S 2, m) * (if true then S1 else S2, m) (S 1, m) 2) (e, m) * (true, m) (not(e), m) * (not(true), m) * (false, m) (if not(e) then S 2 else S 1, m) (if false then S 2 else S 1, m) (S 1, m) 2. si (e, m) * (false, m) : preuve symétrique congruence 2.1 congruence calcul not congruence 2.2.


Télécharger ppt "Partie II Sémantique. Quest-ce que cest ? La sémantique donne le sens dun langage Pour un langage de programmation, elle permet de prévoir le comportement."

Présentations similaires


Annonces Google