1 / 14

Sémantique des expressions arithmétiques pour le langage Z minimal

Sémantique des expressions arithmétiques 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 expressions arithmétiques pour le langage Z minimal: Introduction.

Download Presentation

Sémantique des expressions arithmétiques 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 expressions arithmétiques 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 expressions arithmétiques pour le langage Z minimal: Introduction • Nous considérons plutôt les expressions arithmétiques et relationnelles Arithmétiques du genre (A+B)/C, Relationnelles du genre (A+B) > C • Objectif : découper l’expression en opérations élémentaires. (Expression devient un programme) • Il s’agit de générer les quadruplés. • Il s’agit d’insérer Les fonctions sémantiques quelque part dans les règles syntaxiques.

  3. Sémantique des expressions arithmétiques pour le langage Z minimal: Quadruplés Opérateurs binaires : Oper = Op || Type , Op dans {+, -, *, /} et Type = ‘E’ pour Entier B, C : pointeurs dans TABOB vers les opérandes D : pointeur dans TABOB sur l’objet qui va contenir le résultat Opérateurs unaires : Oper = Op || Type , Op dans {+, -} et Type = ‘U’ (Entier pris par défaut ) B : pointeur dans TABOB vers l’opérande C : non utilisé D : pointeur dans TABOB sur l’objet qui va contenir le résultat (Oper, B, C , D ) (Oper, B, C , D )

  4. Sémantique des expressions arithmétiques pour le langage Z minimal: Quadruplés Opérateurs binaires : Oper = Op , Op dans {<, <=, >, >=, =, <>} B, C : pointeurs dans TABOB vers les opérandes D : pointeur dans TABOB sur l’objet qui va contenir le résultat (Oper, B, C , D )

  5. Sémantique des expressions arithmétiques pour le langage Z minimal: Syntaxe <Exp>  <Exps>[ Opr <Exps>] <Exps>  [Sign] <Terme> { Opa <Terme> }* <Terme>  <Facteur>{Opm <Facteur>}* <Facteur> Idf | Cste | ( <Exp>) Cste désigne une constante numérique entière Idf désigne un identificateur Opr dans { <, <=, >, >=, =, <> }; Opa dans { +, - } Opm dans { *, / }; Sign dans {+, -};

  6. Sémantique des expressions arithmétiques pour le langage Z minimal : Définition sémantique • Une expression est une suite d’opérandes et d’opérateurs. • Les opérandes sont des variables et/ou des constantes. • La priorité des opérateurs est définie par la grammaire. • Pas de conversion, toute incompatibilité de type entraîne une erreur. • Le compilateur crée des variables temporaires pour ranger les résultats intermédiaires. • Le compilateur ne fait pas les optimisations ( Réduction du nombre de variables temporaires utilisées).

  7. Sémantique des expressions arithmétiques pour le langage Z minimal: Fonctions sémantiques <Exp>  <Exps>[ Opr <Exps> ] <Exps>  [Sign ]<Terme> { Opa <Terme> }* <Terme>  <Facteur>{Opm <Facteur> }* <Facteur> Idf | Cste | ( <Exp>) F9 F10 F5 F6 F7 F8 F3 F4 F1 F2

  8. Sémantique des expressions arithmétiques pour le langage Z minimal: Fonctions sémantiques <Facteur> Idf | Cste | ( <Exp>) F1 F2 F1 Vérifier que l’identificateur Idf est déclaré, sinon Erreur. Soit Pt1 son emplacement dans TABOB. Retourner (Pt1) Si la constante n’existe pas la mettre dans TABCONS et TABOB. Soit Pt1 son emplacement dans TABOB. Retourner (Pt1) F2 <Facteur>

  9. Sémantique des expressions arithmétiques pour le langage Z minimal: Fonctions sémantiques F3 F4 <Terme> <Facteur>{Opm <Facteur> }* Sauvegarder l’opérateur dans une variable Op et le résultat de <Facteur> dans Temp1 (emplacement dans TABOB) F3 Récupérer le résultat de <Facteur> dans Temp2 (emplacement dans TABOB). Vérifier la compatibilité des types de Temp1 et Temp2. Générer une variable temporaire dans TABOB. Soit Ptx son emplacement dans TABOB.Générer le quadruplet (Op, Temp1, Temp2, Ptx). Retourner (Ptx). F4 <Terme>

  10. Sémantique des expressions arithmétiques pour le langage Z minimal: Fonctions sémantiques <Exps>  [Sign ]<Terme> F5 F6 F5 Sauvegarder l’opérateur unaire dans une variable Op Sauvegarder le résultat de <Terme> dans Temp1 (emplacement dans TABOB). Vérifier l’incompatibilité de Op et Temp1. Générer une variable temporaire dans TABOB. Soit Ptx son emplacement dans TABOB. Générer le quadruplet (Op, Temp1, , Ptx). Retourner (Ptx) F6 <Exps>

  11. Sémantique des expressions arithmétiques pour le langage Z minimal: Fonctions sémantiques { Opa <Terme> }* F7 F8 Sauvegarder l’opérateur dans une variable Op et le résultat de <Terme> dans Temp1 (emplacement dans TABOB) F7 Récupérer le résultat de <Terme> dans Temp2 (emplacement dans TABOB). Vérifier l’incompatibilité des types de Temp1 et Temp2. Générer une variable temporaire dans TABOB. Soit Ptx son emplacement dans TABOB.Générer le quadruplet (Op, Temp1, Temp2, Ptx). Retourner (Ptx). F8 <Exps>

  12. Sémantique des expressions arithmétiques pour le langage Z minimal: Fonctions sémantiques <Exp>  <Exps>[ Opr <Exps> ] F9 F10 Sauvegarder l’opérateur dans une variable Op et le résultat de <Exps> dans Temp1 (emplacement dans TABOB) F9 Récupérer le résultat de <Exps> dans Temp2 (emplacement dans TABOB). Vérifier l’incompatibilité des types de Temp1 et Temp2. Générer une variable temporaire dans TABOB. Soit Ptx son emplacement dans TABOB.Générer le quadruplet (Op, Temp1, Temp2, Ptx). Retourner (Ptx). F10 <Exp>

  13. Sémantique des expressions arithmétiques pour le langage Z minimal : Exemple 0 0 SOIT A , B , C DES ENTIERS ; Res UN ENTIER ; DEBUT A := 3 ; B := 5 ; C := 12 ; Res := ( ( A+B ) / C)+(B-C ) ; FIN 1 1 2 2 TABCONS 3 4 5 6 7 8 8 9 LONGZDD 10 TABOB Quadruplés pour l’expression En fin de compilation, programme source = table des quadruplés + TABOB + TABCONS + LONGZDD

  14. Sémantique des expressions arithmétiques pour le langage Z minimal : Implémentations • Modules sur la table des objets: Génération de variables temporaires New_temp (type) Indice dans la table des objet où l’objet est rangé , -1 si Échec Vérification de la compatibilité Error_exp(Opérateur, Opérande1, Opérande2) Détecte les erreurs sémantiques dans les expressions Retrouve les types de Operande1et Opérande2 Vérifie la compatibilité entre les types et la compatibilité entre Opérateur et type • Table des constantes: Nous supposons dans un premier temps : une table par procédure compilée Mise_en_tabcons (constante) indice dans la table, -1 si echec

More Related