S7 INF Compilation

Présentation

L’objectif de ce cours est d’appréhender le processus de compilation en présentant les modèles formels et algorithmes sous-jacents aux méthodes de compilation, ainsi que des techniques et outils pour les mettre en application de façon à réaliser un compilateur.

Les analyses successives réalisées par un compilateur sont détaillées : analyse lexicale, analyse syntaxique, analyse sémantique et production de code.

La mise en application point par point est réalisée avec des outils Java, et un projet en fin de cours permet de consolider les nouveaux acquis.

Pré-requis nécessaires

Connaissances de base en algorithmique, en modèles formels (automates à états finis, expressions régulières) et programmation en Java.

Objectifs

  • Connaissance et compréhension des différentes parties d’un compilateur
  • Savoir mettre en oeuvre les techniques de compilation sur un exemple de langage réduit

Compétences visées

  • Acquisition des fondements théoriques et des principes méthodologiques nécessaires à la compréhension et à la réalisation des différentes phases constitutives de la compilation, de l’analyse lexicale à la génération de code
  • Capacité à mettre en pratique ces principes dans le cadre d’applications Java
  • Mise en oeuvre d'éléments d'un compilateur (simple) en utilisant les outils Java dédiés
  • Automatisation des traitements sur des fichiers via l'utilisation des méthodes et outils présentés

Bibliographie

  • Aho, Sethi, Ullman : "Compilateurs : principes, techniques et outils", InterEditions, 1991
  • Wilhelm, Maurer : "Compiler Design", Addison-Wesley, 1995 N. Silverio : "Réaliser un compilateur", Eyrolles, 1995

Langue d'enseignement

Français