1 / 25

Cours de Compilation

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

lovie
Download Presentation

Cours de Compilation

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. 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

  2. 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

  3. 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

  4. Introduction(Structures de données) • Algorithmes • Structures de données (Pile, arbre, graphe,… ) • Pile • Arbre • Graphe • …

  5. 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 • …

  6. 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 • …

  7. 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)

  8. 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

  9. Introduction(Plan/Cours théorique) T1: Vue générale Motivation Structure d‘un compilateur Grammaires Arbres Syntaxiques et Ambiguïté Classification de Chomsky

  10. Introduction(Plan/Cours théorique) T2 : Analyse lexicale Taches d‘un scanner Grammaires Régulières et Automates finis Implémentation des scanners

  11. 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

  12. 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

  13. Introduction(Plan/Cours théorique) T5 : Table des symboles Vue générale Symboles Portée Types

  14. 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

  15. 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

  16. Introduction(Plan/Cours théorique) T8 : Générateurs de compilateurs Vue générale Yacc Lex Coco/R

  17. 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)

  18. 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

  19. Introduction(Plan/Cours spécifique) Les machines abstraites Z Machines de Turing Les listes linéaires chaînées Les fichiers

  20. 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é.

  21. 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

  22. 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)

  23. 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) )

  24. 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

  25. 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

More Related