Compilation
Master InformatiqueParcours Science et ingénierie du logiciel (SIL)
Description
Cet enseignement présente les principes fondamentaux implémentés dans les compilateurs de langages de programmation, et généralise leurs concepts à tout traitement d’un texte source d’entrée : analyse et/ou transformation en un autre texte de sortie
Compétences requises
À l'entrée de cet enseignement, un étudiant devrait savoir :
- Les mécanismes fondamentaux d’architecture des ordinateurs (principes des processeurs et des mémoires).
- Manipuler les abstractions classiques de théorie des langages (expressions régulières, grammaires, automates)
- Utiliser des structures de données avancées (listes, arbres, graphes)
- Écrire des programmes simples en assembleur
- Écrire des programmes complexes dans un langage impératif
Compétences visées
À l'issue de cet enseignement un étudiant saura :
- Spécifier un langage informatique à travers une grammaire,
- Traduire un flux d'information en un format exploitable par un système informatique,
- Créer des outils d'analyse et de compréhension de flux de données,
- Porter de l'information textuelle vers des structures de données,
- Utiliser des outils de génération automatique d'analyse lexicale et syntaxique,
- Implémenter un compilateur simple,
- Améliorer ses pratiques de programmation pour une compilation plus efficace de ses programmes.
Disciplines
- Informatique
Syllabus
Les principales étapes de traduction d'un programme source par un compilateur sont étudiées :
Analyse lexicale : expressions régulières, utilisation de l'outil Lex,
Analyse syntaxique : analyses ascendantes et descendantes, grammaires LL/SLR/LALR, utilisation de l'outil Yacc/Bison,
Traduction dirigée par la syntaxe : association d’actions aux règles de grammaire et d’attributs aux symboles de la grammaire,
Génération de code intermédiaire : implémentation des principales structures de contrôle des langages de programmation,
Optimisation de programmes : tour d’horizon des principales passes d’analyse et d’optimisation des compilateurs,
Réalisation d’un mini-compilateur dans le cadre d’un projet par équipe
Bibliographie
- A. Aho, M. Lam, R. Sethi, J. Ullman, Compilateurs : Principes, techniques et outils, Pearson Éducation France, 2007
- A. Appel, Modern Compiler Implementation in C, Cambridge University Press, 2004