Compilation
Cursus master ingénierie (CMI) - UFR de mathématique et d'informatiqueParcours Cursus master ingénierie (CMI) - Informatique, systèmes et réseaux

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

Contacts

Responsable(s) de l'enseignement