Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)

Slides:



Advertisements
Présentations similaires
Structures de données avancées : MBT ( Multidimensional B-trees )
Advertisements

La boucle for : init7.c et init71.c
Introduction a L’algorithme
Les fonctions A quoi ça sert ?
Initiation à la programmation et algorithmique cours 4
Le langage Z Pr ZEGOUR DJAMEL EDDINE
Machines de Turing Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)
Sémantique des déclarations pour le langage Z minimal
Algorithmique et Programmation
Algorithmique Résume.
Plan : Définition L’affectation Les entrées Les sorties exercices
C.
Structures et unions types énumérés Qu'est-ce qu'une structure
Introduction : Compilation et Traduction
8. Les tableaux P. Costamagna – ISEN N1.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Initiation à la programmation et algorithmique cours 3
Les bases de l’Algorithmique
Principes de programmation (suite)
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Introduction : Compilation et Traduction
Chapitre IV LES STRUCTURES SIMPLES. Plan I- Les entrées II- Laffectation III- Les sorties.
Démarche de résolution de problèmes
Les éléments de base de l’algorithmique
Analyse lexicale Généralités Expressions rationnelles Automates finis
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
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.
Points importants de la semaine Les constantes de compilation. Les fonctions.
Séance d’introduction
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
Algorithmique et structure de données
Structures complexes Pr ZEGOUR DJAMEL EDDINE
Expressions logiques 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)
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)
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
Le langage Racket (Lisp)
Introduction au langage C Fonctions et Procédures
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)
Méthodes et outils de conception Introduction à la programmation Paramètre de retour Appel d’une fonction Portée des variables Définition Pourquoi les.
Structures simples et tableaux Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
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.
Introduction au langage C Les entrées-sorties
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)
Module algorithmique et programmation
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)
8PRO107 Éléments de programmation Les adresses et les pointeurs.
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Objets et Actions Élémentaires.
Les Structures simples
Organisation de la mémoire pour le langage minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Introduction au langage C
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
Algorithmique - Lecture / Ecriture - M me DJEBOURI. D. Faculté de Médecine salle informatique Année universitaire
Transcription de la présentation:

Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)

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

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

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 )

Sémantique des instructions pour le langage Z minimal: Syntaxe  { ; }*  Idf := | Lire ( Idf {, Idf }* ) | Ecrire ( {, }* )

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)

Sémantique des instructions pour le langage Z minimal: Fonctions sémantiques  { ; }*  Idf := | Lire ( Idf {, Idf }* ) | Ecrire ( {, }* ) F1F2F3 F4F5F6 F7F8

Sémantique des instructions pour le langage Z minimal: Fonctions sémantiques F1 F2 F3 Soit Temp le résultat de. 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 Soit Temp le résultat de. 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é Générer le quadruplet (‘Ecrire’, Pt, Compte, ) ECRITURE Ecrire ( {, }* ) F1F2F3

Sémantique des instructions pour le langage Z minimal: Fonctions sémantiques 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. 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é Générer le quadruplet (‘Lire’, Pt, Compte, ) LECTURE Lire ( Idf {, Idf }* ) | F4F5F6

Sémantique des instructions pour le langage Z minimal: Fonctions sémantiques 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é) Soit Temp2 le résultat de. Vérifier que les types de Temp1 et Temp2 sont les mêmes, sinon Erreur. Générer le quadruplet (‘Aff’, Temp1,, Temp2 ) AFFECTATION Idf := | F7F8

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 ‘5’ ‘12’ TABCONS 0 1 En fin de compilation, programme source = table des quadruplés + TABOB + TABCONS + TABCOMP + LONGZDD ‘L’‘E’0 ‘L’‘E’1 ‘L’‘E’2 ‘L’‘E’3 ‘C’‘E’0 ‘C’‘E’1 ‘X’‘E’4 ‘X’‘E’5 ‘X’‘E’6 ‘X’‘E’ TABOB 8 LONGZDD 3 4 Quadruplés générés ‘DE’ ‘Lire’01 ‘Aff’14 25 ‘+E’016 ‘/E’627 ‘-E’128 ‘+E’789 ‘Aff’39 ‘Ecrire’ TABCOMP 0 1

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

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.