Partager cette page :
Discipline(s) : Infomatique et télécommunications

Compilation

Semestre Semestre 1
Type Obligatoire
Nature UE

Pré-requis

Maîtrise de la programmation. Théorie des langages formels (langages et grammaires de type 2 et 3, analyse syntaxique).

Objectifs

L'UE PDS vise à développer et approfondir les connaissances des étudiants en compilation en se concentrant d'une part sur la face avant des compilateurs et d'autre part en élargissant le propos au-delà des langages de programmation usuels. Le parti pris est de partir de la syntaxe abstraite du langage source et de fonder tous les traitements sur ce langage source (ex., pretty-printing, vérification de type, génération de code intermédiaire ou cible) sur la notion de grammaire attribuée qui permet de faire de la Programmation Dirigée par la Syntaxe (PDS). La généralité de ces grammaires attribuées au-delà des langages de programmation est montré par leur application aux langages de requêtage et aussi aux langages naturels contrôlés. La notion d'analyseur syntaxique permettant de passer d'une syntaxe concrète à la syntaxe abstraite est également rappelée.

À l'issue de cette UE, l'étudiant doit être capable de modéliser la syntaxe abstraite d'un langage source et de définir par des grammaires attribuées les différentes analyses et transformations utiles sur ce langage source. Il doit en particulier pouvoir définir la vérification de type et la traduction en un code exécutable. Il doit aussi savoir implémenter tout cela dans un langage de type orienté-objet ou de type ML.

Contenu

Cours
  • Syntaxe abstraite (grammaires et arbres), grammaires attribuées, programmation dirigée par la syntaxe
  • Implémentation dans les langages orienté-objet et ML
  • Syntaxe concrète, pretty-printing et analyse syntaxique
  • Langages de programmation
  • Langage de types, vérification de types
  • Génération de code intermédiaire/cible
  • Graphe de flot de contrôle et optimisations
  • Langues naturelles (contrôlées) et langages de requêtage
Travaux dirigés
Travaux pratiques
  • Programmation dirigée par la syntaxe en Java ou Ocaml
  • Analyse syntaxique avec ANTLR ou les parsers Ocaml
  • Projet 1 : compilation de représentations graphiques
  • Projet 2 : compilation d'un petit langage impératif vers une face-arrière de compilateur existante

Calendrier

 

Contrôles des connaissances

Examen terminal et deux notes de CC sur les projets 1 et 2.

Mise à jour le 12 avril 2018