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

Slides:



Advertisements
Présentations similaires
Structures de données avancées : MLH (Multidimensional linear hashing)
Advertisements

Structures de données avancées : Principales structures de fichiers
Structures de données avancées : B arbres
Structures de données avancées : Principales structures de données
Structures de données avancées : MBT ( Multidimensional B-trees )
Structures de données avancées : MTH ( Multidimensional trie hashing )
Structures de données avancées : Introduction
Traitement sémantique et grammaire dattributs Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)
Le langage Z Pr ZEGOUR DJAMEL EDDINE
Machines de Turing Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)
Spécification et qualité du logiciel
C.
Structures et unions types énumérés Qu'est-ce qu'une structure
Introduction : Compilation et Traduction
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Introduction : Compilation et Traduction
Introduction à l’algorithmique
Algorithmique et Programmation
Programmation logique Logique des prédicats du premier ordre
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
Séance d’introduction
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Programmation non procédurale Le projet ECOLE 2000
C++ : variables Déclaration de variables
Structures de données IFT-2000
Types de données fondamentaux
Structures de données avancées : Arbres AVL & Arbres Rouge et Noir
Structures de données avancées : Hachage dynamique
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
2.1 - Historique Chapitre 2 : Introduction au langage C++
Structures complexes Pr ZEGOUR DJAMEL EDDINE
Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Cours Architecture des Systèmes Informatiques
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Procédures et fonctions Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Listes linéaires chaînées Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Sémantique des expressions arithmétiques pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Tables de compilation pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Tutorat en bio-informatique
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
Le langage Z minimal Pr ZEGOUR DJAMEL EDDINE
La programmation.
Structures de données avancées : Fichiers uni-dimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
L’analyse lexicale Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de contrôle Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures simples et tableaux Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
Interprétation/Génération de code pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Expressions sur les chaînes de caractères Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
ISBN Chapitre 10 L'implémentation des sous- programmes.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
Une brève présentation de C# Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Fonctions standards Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) C O M P I L Z.
COMPIL - Z Compilateur visible
Fichiers Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Organisation de la mémoire pour le langage minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Transcription de la présentation:

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 ‘3’ ‘5’ ’12’ ‘L’ ‘E ’ ‘E’ 1 2 ‘C’ 1 1 2 2 3 TABCONS 4 5 ‘DE’ 1 2 … 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