150 likes | 314 Views
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.
E N D
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 • 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.
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
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
Sémantique des déclarations pour le langage Z minimal: Analyse sémantique Analyse syntaxique Analyse sémantique = + Fonctions sémantiques
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, , )
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 ?
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 }
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>)
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
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 >
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 >
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
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