1 / 13

Sémantique des instructions pour le langage Z minimal

Sémantique des instructions pour le langage Z minimal. Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz/ email: d_zegour@esi.dz. Sémantique des instructions pour le langage Z minimal: Introduction.

Download Presentation

Sémantique des instructions pour le langage Z minimal

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz/ email: d_zegour@esi.dz

  2. Sémantique des instructions pour le langage Z minimal: Introduction • Trois types d’instructions existent dans le langage minimal : affectation, lecture, écriture • Il s’agit d’insérer les fonctions sémantiques quelque part dans les règles syntaxiques pour générer les quadruplés. • Une lecture/écriture permet de lire plusieurs données/expressions à la fois ( Ex : Lire(A, B,C,D, E, …) • Comme un quadruplet ne suffit pas pour ranger tous les arguments des opérations de lecture ou écriture, nous utiliserons une table complémentaire : TABCOMP

  3. Sémantique des instructions pour le langage Z minimal: la table TABCOMP Solution • Ranger les arguments (adresses vers les objets ) dans TABCOMP à partir du premier emplacement disponible dans cette table • Dans le quadruplé il suffit de ranger l’emplacement du premier argument et le nombre d’arguments Remarque : • TABCOMP est partagée par plusieurs types de quadruplés

  4. Sémantique des instructions pour le langage Z minimal: Quadruplés Quadruplé de l’affectation : B : pointeurs dans TABOB vers le membre gauche C : non utilisé D : pointeur dans TABOB sur l’objet qui contient le résultat de l’expression du membre droit Quadruplé de la lecture : B : pointeurs dans TABCOMP vers la liste des variables C : Nombre de variables D : non utilisé Quadruplé de l’écriture : B : pointeurs dans TABCOMP vers la liste des variables contenant les résultats des expressions à écrire C : Nombre de variables D : non utilisé (‘Aff’, B, C , D ) (‘Lire’, B, C , D ) (‘Ecrire’, B, C , D )

  5. Sémantique des instructions pour le langage Z minimal: Syntaxe < Lis >  < Inst > { ; < Inst > }* <Inst> Idf := <Exp> | Lire(Idf {, Idf }* ) | Ecrire(<Exp> {,<Exp>}* )

  6. Sémantique des instructions pour le langage Z minimal : Définition sémantique • Le programme est un ensemble d’instructions. • Une instruction peut être une affectation, lecture ou écriture. • Affectation : • attribution de la valeur d’une expression à une variable • Les deux membres du signe d’affectation doivent être de même type • Lecture : introduction des données • Les paramètres de l’opération Lire doivent être des variables du même que celles des données lues • Aucune conversion n’est entreprise par le compilateur • Écriture : afficher les résultats • Les paramètres de l’opération Ecrire ne peuvent être que des expressions de type scalaire (Entier ou Booleen pour le langage Z minimal)

  7. Sémantique des instructions pour le langage Z minimal: Fonctions sémantiques < Lis >  < Inst > { ; < Inst > }* <Inst> Idf := <Exp> | Lire(Idf {, Idf }* ) | Ecrire(<Exp> {,<Exp> }* ) F7 F8 F4 F5 F6 F1 F2 F3

  8. Sémantique des instructions pour le langage Z minimal: Fonctions sémantiques Ecrire(<Exp> {,<Exp> }* ) F1 F2 F3 Soit Temp le résultat de <Exp>. Vérifier que le type de Temp peut être écrit. Ranger Temp dans TABCOM. Soit Pt son emplacement dans TABCOMP. Initialiser une variable Compte à 1 F1 Soit Temp le résultat de <Exp>. Vérifier que le type de Temp peut être écrit. Ranger Temp dans TABCOM. Il est donc rangé à l’emplacement Pt + 1. Incrémenter la variable Compte d’une unité F2 F3 Générer le quadruplet (‘Ecrire’, Pt, Compte, ) ECRITURE

  9. Sémantique des instructions pour le langage Z minimal: Fonctions sémantiques Lire(Idf {, Idf }* ) | F4 F5 F6 Rechercher Idf dans la table des symboles pour récupérer l’objet correspondant dans TABOB (Soit Temp).Vérifier que le type de Temp peut être lu. Ranger Temp dans TABCOM. Soit Pt son emplacement dans TABCOMP. Initialiser une variable Compte à 1. F4 Rechercher Idf dans la table des symboles pour récupérer l’objet correspondant dans TABOB (Soit Temp).Vérifier que le type de Temp peut être lu. Ranger Temp dans TABCOM. Il est donc rangé à l’emplacement Pt + 1. Incrémenter la variable Compte d’une unité F5 F6 Générer le quadruplet (‘Lire’, Pt, Compte, ) LECTURE

  10. Sémantique des instructions pour le langage Z minimal: Fonctions sémantiques Idf := <Exp> | F7 F8 Rechercher Idf dans la table des symboles pour récupérer l’objet correspondant dans TABOB (Soit Temp1). Erreur si Idf non trouvé (non déclaré) F7 Soit Temp2 le résultat de <Exp>. Vérifier que les types de Temp1 et Temp2 sont les mêmes, sinon Erreur. Générer le quadruplet (‘Aff’, Temp1, , Temp2 ) F8 AFFECTATION

  11. Sémantique des instructions pour le langage Z minimal : Exemple SOIT A , B , C DES ENTIERS ; Res UN ENTIER ; DEBUT LIRE ( A ) ; B := 5 ; C := 12 ; Res :=((A+B) / C) + ( B-C ) ; ECRIRE ( Res ) FIN 0 1 2 3 4 5 0 6 1 7 8 TABCONS 8 LONGZDD 9 0 1 TABOB TABCOMP Quadruplés générés En fin de compilation, programme source = table des quadruplés + TABOB + TABCONS + TABCOMP + LONGZDD

  12. Sémantique des instructions pour le langage Z minimal : Implémentations • Modules sur la table complémentaire New_item_comp(Pointeur_objet) Indice dans la table complémentaire où le pointeur de l’objet est rangé , -1 si Echec Définir une limite pour la table complémentaire LimitTabcomp = une valeur arbitraire

  13. Sémantique des instructions pour le langage Z minimal : Synthèse • Afin de simplifier l’écriture du compilateur, on a utilisé des tables.  On peut utiliser diverses structures de données. • La forme intermédiaire choisie (Quadruplé) est la forme la plus simple. On peut utiliser toute autre forme interne. • On n’a pas traité les optimisations. En général, elles se font sur le code intermédiaire généré. ( Ex: pour chaque nouvelle expression, réutiliser les auxiliaires déjà utilisées ou bien au sein d’une même expression réutiliser certains auxiliaires )  On peut rajouter des programmes d’optimisation • Pour les raisons de clarté, les fonctions sémantiques sont des modules séparés. Les appels de modules consomment de l’espace!  On peut insérer directement les codes des modules.

More Related