Plan du cours (un plan détaillé du cours se trouve à la fin de cette page)
Introduction à la compilation
Analyse lexicale
Analyse syntaxique
Traduction dirigée par la syntaxe
Production de code
Optimisation de code
Conclusion et perspectives
Travaux Dirigés
Les travaux dirigés sont composés de 5 séries d'exercices permettant de couvrir l'ensemble du programme vu en Cours Magistral. Chaque série est réalisé en à peu près en 2 séances (2*2h.)
Série 1 : Expressions régulières et grammaires
Série 2 : Analyse descendante
Série 3 : Analyse ascendante
Série 4 : Traduction dirigée par la syntaxe
Série 5 : Production et optimisation de code
Travaux Pratiques
Les Travaux pratiques se déroulent en 2 parties, l'une permettant l'apprentissage des outils standard utilisés en compilation (Flex et Bison) et l'autre permettant d'appliquer les notions vues en cours lors de la réalisation d'un compilateur. 5 séances de 2 heures sont prévues pour chacune des parties.
Outil Flex
Outil Bison
Projet 2010/2011
Sujets d'examen
Contrôle des connaissances
Le contrôle des connaissance est composé d'un examen écrit et de l'évaluation du projet de compilation. Pour le calcul de la note du module, un coefficient de 2 est appliqué pour l'examen écrit et de 1 pour le projet.
L'examen écrit a une durée de 2 heures et porte sur l'ensemble des notions vues dans l'ensemble du cours. Les notes de cours, les notes de travaux dirigés ainsi que les notes de travaux pratiques sont autorisés lors de l'examen.
Le projet de compilation se déroule pour partie lors des 5 dernières séances de Travaux Pratiques et pour partie sur le temps de travail personnel des étudiants. Le projet peut se réaliser en binôme. Il donne lieu à la remise de deux rapports (l'un de spécification initiale, l'autre de réalisation) et à la fourniture aux enseignants chargés de l'évaluation des sources du code produit.
Enseignants
L'enseignement est assuré par Philippe Le Parc (Philippe.Le-Parc@univ-brest.fr - Téléphone 69.60 - Bureau LC 101) et par François Monin (Francois.Monin@univ-brest.fr - Téléphone 82.20 - Bureau LC 108).
Références bibliographiques
Compilateurs : principes, techniques et outils - A. Aho, R. Sethi, J. Ullman - InterEditions (disponible à la bibliothèque).
Compilateurs - D. Grune, H. Bal, C. Jacobs, K. Langendoen - Dunod.
Compîlation et Théorie des langages - S. Gire - Polycopié de cours IUP Informatique Brest.
Plan détaillé du cours
Introduction à la compilation
Définitions préliminaires
Les phases d'un compilateur
Références bibliographiques
Analyse lexicale
Spécification des entités lexicales
Implantation des Expressions Régulières : les Automates à Etats Finis
Transformation automatique d'une Expression Régulière en un Automate à Etats Finis
Transformation automatique d'un Automate à Etats Finis en une Expression Régulière
Analyse syntaxique
Grammaires
Analyse descendante - LL(1)
Calcul des ensemble Premier et Suivant
Construction de la table d'analyse
Algorithme de reonnaissance
Elimination des récusivité à gauche et factorisation
Analyse ascendante - SLR
Principe
Calcul des item LR(0)
Construction de la table d'analyse
Algorithme de reonnaissance
Traduction dirigée par la syntaxe
Définitions Dirigés par la Syntaxe
Attributs synthétisés
Attributs hérités
Arbres abstraits (comme application des Définitions Dirigés par la Syntaxe)
Evaluation ascendante des Définition Dirigés par la Syntaxe
Contrôle de type et table des symboles (comme application des Définitions Dirigés par la Syntaxe)
Schémas de traduction
Production de code
Code à 3 adresses
Production de code à 3 adresses par une traduction dirigée par la syntaxe pour les expressions arithmétiques
Production de code à 3 adresses par une traduction dirigée par la syntaxe pour les expressions logiques
Production de code à 3 adresses par une traduction dirigée par la syntaxe pour les instructions de contrôle
Implantation du code à 3 adresses
Optimisation de code
Introduction
Blocs de base et graphe de flôt de contrôle
Principales optimisations
Sous-expressions communes
Propagation des copies
Elimination de code inutile
Optimisation des boucles
Analyse globale de flot de données
Définitions visibles
Expressions disponibles
Conclusion et perspectives