1 / 14

Sémantique des déclarations pour le langage Z minimal

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

ingo
Download Presentation

Sémantique des déclarations 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 déclarations pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) www.zegour.uuuq.com email: d_zegour@esi.dz

  2. Sémantique des déclarations pour le langage Z minimal: Introduction • L’analyseur sémantique = ensemble de fonctions sémantiques déduites à partir de la définition du langage • Rôle des fonctions sémantiques : générer une forme intermédiaire en tenant compte des concepts prédéfinis(organisation de la mémoire, attribution des adresses, tables de compilation, … ) • Il s’agit d’une forme très proche du langage machine : Quadruplets, Triplets, … • Les fonctions sémantiques sont insérées quelque part dans les règles syntaxiques.

  3. Sémantique des déclarations pour le langage Z minimal: Quadruplets • Le programme source est transformé et découpé en opérations élémentaires très proches du langage machine • Opération élémentaire = Quadruplet • Quadruplet = (A, B, C, D) A : Code Opération B, C, D : Paramètres de l’opération Les paramètres de l’opération sont des pointeurs vers les tables de compilation

  4. Sémantique des déclarations pour le langage Z minimal: Résultats de la phase sémantique Quadruplés Forme intermédiaire = + Tables de compilation

  5. Sémantique des déclarations pour le langage Z minimal: Analyse sémantique Analyse syntaxique Analyse sémantique = + Fonctions sémantiques

  6. Sémantique des déclarations pour le langage Z minimal: Quadruplés pour déclarations • Comme l’allocation des variables est dynamique, Pour chaque déclaration de variable nous devons générer le quadruplet (A, B, C, D) tel que A est de la forme ‘D’+’type’ (Type est le type de la variable) B : pointeur dans TABOB vers l’objet C et D non utilisés • Pour le langage minimal, un seul type de quadruplé : (‘DE’, B, , )

  7. Sémantique des déclarations pour le langage Z minimal: le problème • Où insérer les fonctions sémantiques dans l’analyseur syntaxique pour faire les vérifications qu’il faut et générer pour chaque déclaration de variable le quadruplé correspondant à une déclaration ?

  8. Sémantique des déclarations pour le langage Z minimal: Syntaxe des déclarations <Algo Z>  [ ~Soit|Soient~ <Ps> ] Debut <Lis> Fin [;] <Ps>  <S>;{ [~Soit|Soient~] <S>;}* <S>  <Li>[Sep <Typ> ~] <Li>  Idf {,Idf}* <Typ> Entier Sep dans { :, Un, Une, Des }

  9. Sémantique des déclarations pour le langage Z minimal: Définition sémantique • La partie déclaration consiste à définir l’ensemble des variables utilisées dans le programme source • Pour le langage Z minimal, seules les variables entières sont autorisées • Un identificateur ne doit pas désigner deux variables différentes • Le type peut ne pas être donné. Par défaut c’est Entier (Règle<S>)

  10. Sémantique des déclarations pour le langage Z minimal: Fonctions sémantiques <Algo Z>  [ ~Soit|Soient~ <Ps> ] Debut <Lis> Fin [;] <Ps>  <S>;{ [~Soit|Soient~] <S>;}* <S>  <Li>[Sep <Typ> ] <Li>  Idf {,Idf }* <Typ> Entier Sep dans { :, Un, Une, Des } F2 F3 F4 F1 F1

  11. Sémantique des déclarations pour le langage Z minimal: Fonctions sémantiques <Li> Idf {,Idf }* F1 F1 Vérifier que l’identificateur Idf n’est pas déclaré, sinon Erreur (non dans L et non dans la table des symboles) Sauvegarder l’identificateur Idf dans une liste L F1 < LI >

  12. Sémantique des déclarations pour le langage Z minimal: Fonctions sémantiques <S>  <Li>[Sep <Typ> ] F2 F3 F4 Par défaut le type est Entier. Initialiser donc une variable, soit Type, avec ‘E’ ( ‘Entier’) F2 Si le type est spécifié modifier la valeur de la variable Type avec le type spécifié F3 • Pour chaque Idf dans L : • - Le mettre dans la table des symboles • Lui attribuer une adresse relative et le mettre dans la table des objets (soit Pt son emplacement) • Générer le quadruplé (‘D’+Type, Pt, , ) F4 < S >

  13. Sémantique des déclarations pour le langage Z minimal : Exemple Soit A, B, C des Entiers; Debut A := 3; B := 5; C := 12; Fin 0 0 1 1 2 2 3 TABCONS 4 5 0 TABOB 1 2 3 Quadruplés pour les déclarations LONGZDD En fin de compilation, programme source = table des quadruplés + TABOB + TABCONS + LONGZDD

  14. Sémantique des déclarations pour le langage Z minimal : Implémentation • Module sur la table des quadruplés: New_quadruple (P1,P2,P3,P4) Indice dans la table des quadruplés où le quadruplé est créé, -1 si Échec • Définir une limite pour la table des quadruplés LimitQuad = une valeur arbitraire

More Related