270 likes | 464 Views
Cours de Compilation. Séance d’introduction. Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) www.zegour.uuuq.com email: d_zegour@esi.dz. Introduction (Définition). Compilation : Étude des techniques permettant de traduire un programme source en un programme objet
E N D
Cours de Compilation Séance d’introduction Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) www.zegour.uuuq.com email: d_zegour@esi.dz
Introduction (Définition) • Compilation : Étude des techniques permettant de traduire un programme source en un programme objet • Programme source : écrit dans un langage de programmation • Programme objet : dépend de la machine
Introduction(Pré-requis) • Compilation : Algorithmes et structures de données (Piles, arbres, graphes,… ) • Programme source : Théorie des langages • Programme objet : Structure des machines • Autres : programmation procédurale, programmation objet, quelques langages de programmation
Introduction(Structures de données) • Algorithmes • Structures de données (Pile, arbre, graphe,… ) • Pile • Arbre • Graphe • …
Introduction(Théorie des langages) • Relation entre les mathématiques et les langages • Notion de grammaires et langages • Classification (Chomsky) • Les langages réguliers et les automates • Les langages algébriques (contexte libre) et les automates à pile • …
Introduction(Structure des machines) • Algèbre de Boole • Représentation et codage de l’information • Techniques d’adressage • Exécution d’une instruction • Les langages d’assemblage et les assembleurs • …
Introduction(Organisation du cours) • Cours théorique accompagné de code C# (T1, T2, …, T8) (DotNet + Introduction C#) • Cours spécifique : Réalisation du compilateur (Langage Z) (P1, P2,…. ,P20)
Introduction(Plan/Cours théorique) • T1 : Vue générale • T2 : Analyse lexicale • T3 : Analyse syntaxique • T4 : Traitement sémantique et grammaires d’attribut • T5 : Table des symboles • T6 : Génération de code • T7 : Les analyseurs Bottom-up • T8 : Générateurs de compilateurs
Introduction(Plan/Cours théorique) T1: Vue générale Motivation Structure d‘un compilateur Grammaires Arbres Syntaxiques et Ambiguïté Classification de Chomsky
Introduction(Plan/Cours théorique) T2 : Analyse lexicale Taches d‘un scanner Grammaires Régulières et Automates finis Implémentation des scanners
Introduction(Plan/Cours théorique) T3 : Analyse syntaxique Grammaires contexte-libre et Automates à pile(PDA) Analyse descendante récursive Propriétés LL(1) Traitement des erreurs
Introduction(Plan/Cours théorique) T4 : Traitement de la sémantique et les grammaires d‘attribut Traitement sémantique Grammaires d’attributs (ATG) Transformations des ATG en un analyseur Exemples d’applications
Introduction(Plan/Cours théorique) T5 : Table des symboles Vue générale Symboles Portée Types
Introduction(Plan/Cours théorique) T6 : Génération Code Vue générale Le code à générer Organisation de la mémoire Expressions Affectations Structures de contrôle Méthodes
Introduction(Plan/Cours théorique) T7 : Les analyseurs Bottom-up Comment fonctionne un analyseur Bottom-up Grammaires LR Génération de la table LR Traitement de la sémantique Traitement des erreurs LR Variantes de LR
Introduction(Plan/Cours théorique) T8 : Générateurs de compilateurs Vue générale Yacc Lex Coco/R
Introduction(Plan/Cours spécifique) • Langage Z (P1) et langage Z minimal (P2) • Réalisation d’un compilateur très simplifié pour le langage minimal (P3 P10) • Extension du langage minimal par • Expressions logiques (P11)et chaînes de caractères (P12) • Les structures simples et tableaux (P13) • Les structures de contrôle (P14) • Les procédures et fonctions (P15) • Les structures complexes (P16) • Les machines abstraites (P17 P19) • Les fonctions standards (P20)
Introduction(Plan/Cours spécifique) Réalisation du compilateur pour le langage Z minimal Réalisation analyse lexicale Réalisation analyse syntaxique Organisation simple de la mémoire et attribution des adresses Sémantique des déclarations, instructions et expressions Interprétation du langage
Introduction(Plan/Cours spécifique) Les machines abstraites Z Machines de Turing Les listes linéaires chaînées Les fichiers
Introduction(Plan/Réalisation) Démarche Définir un langage minimal de Z et réalisez le compilateur en entier Enrichir progressivement la grammaire A chaque étape, redémarrer toutes les étapes : lexique, syntaxe, sémantique, génération de code S‘arrêter quand le langage entier est traité.
Organisation du cours 1 T1 P1 P2 T Cours théorique général T2 2 P3 P Cours spécifique 3 4 T3 P4 Travaux dirigés Introduction Ordre de présentation du cours T4 5 P5 P6 6 7 T5 Dot Net et C# P7 P8 P9 P10 PAUSE : Terminer la réalisation du compilateur du langage Z minimal 8 9 10 COMPIL Z T6 P11 P12 P13 P14 P15 11 T7 P16 P17 P18 12 T8 P19 P20 FIN : Terminer la réalisation du compilateur du langage Z
Introduction(Extensions) • Formalisation de la sémantique des langages de programmation : Spécifications relationnelles, axiomatiques, algébriques, ... • Compilateurs/Interpréteurs pour langages non procéduraux - Langages fonctionnels (LISP) - Langages logiques (PROLOG) (Syntaxe identique mais Sémantique totalement différente)
Introduction(Outils standards) • Langage de programmation : pour l‘écriture du compilateur/interpréteur (C++, Delphi,... ) • Langage d‘assemblage : pour la génération de code (Processeur Intel) • Langage pivot (Machine Virtuelle) : pour la génération de code ( P-code de PASCAL, JVM, La machine virtuelle de .NET : Common Language Runtime (CLR) )
Introduction(Outil spécifique) • Khawarizm niveau 1 : environnement pour le développement des algorithmes en langage Z (conçu pour l‘apprentissage de la programmation) • Compil-Z : dévoiler le fonctionnement interne des compilateurs
Introduction(Références) • Compiler Construction for digital computers. David Gries. Addison-Wesley Edition. 1975 • Principles of Compiler Design. A.V. Aho, J.D Ullman. Addison-Wesley Edition. 1977 • Compilers : Principles, Techniques and Tools. Alfred V.Aho, Ravi Sethi, Jeffrey D.Ullman. Addison-Wesley Edition. 2003