Compilation
Master InformatiqueParcours Science et ingénierie des réseaux, de l'Internet et des systèmes (SIRIS)

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