Page du cours de Compilation

Cette page regroupe tous les contenus de cours et de TD du cours de compilation de L3 de l’université de Bordeaux.

Le cours est enseigné par Vincent Penelle, le lundi de 11h à 12h20 (sauf la première séance).

Les chargés de TDs sont :

  • Lionel Clément (vendredi 14h-16h50)
  • François Dross (vendredi 9h30-12h20)
  • Noureddine Mouhoub (jeudi 14h-16h50)
  • Vincent Penelle (jeudi 14h-16h50)

L’emploi du temps de l’UE se trouve là.

La page moodle du cours est là. Elle ne servira que de plateforme de rendu.

Polycopié

Vous pouvez trouver des notes de cours ici, et sa version en open-dyslexic là.

Attention, elles sont pour l’instant (seconde année du cours) encore en construction et incomplètes. Néanmoins, elles devraient s’enrichir au cours de l’année. Il est fortement déconseillé de les imprimer en l’état actuel.

Mettre en place son environnement de travail

Un rapide jeu d’instruction pour mettre en place votre environnement de travail est accessible ici

Fonctionnement général des TDs

Les TDs se feront essentiellement sur machine, bien que l’on prévoie également un certain nombre d’exercices à réaliser sur papier -- notamment pour préparer des exercices ressemblant à ce qui sera fait en examen.

Pour la partie machine, les TDs auront tous la même structure (étant tous générés depuis les mêmes sources). Ils consisteront essentiellement en la réalisation d’un interpréteur du langage du en cours (ainsi sur la fin que sa traduction vers un langage intermédiaire), ainsi que d’autres exercices exploratoires.

Les sources seront un projet OCaml organisé avec dune, dont des sources seront à compléter (détails donnés dans chaque TD).

Un Makefile sera systématiquement présent et vous permettra de générer les exécutables permettant d’exécuter votre code.

Ces exécutables disposeront toujours d’un message d’usage que vous pourrez obtenir en les lançant sans argument, ou avec l’option '-help'

Vous pourrez également utiliser votre code dans l’interpréteur Ocaml grâce à la commande 'dune utop'.

Enfin, dans certains TDs, on vous fournira également un exécutable compilé avec les solutions qui vous permettront de comparer votre version avec la nôtre.

Exercices papier

Sujets de TD machines

Modalités d’évaluation

50% Examen, 50% contrôle continu.

Le contrôle continu consiste en un projet (qui sera plus bas) et des tests réalisés en TD. Calcul à déterminer, mais le projet comptera plus.

Premier test semaine du 12 février durant la séance de TD.

Vous aurez également à rendre l’interpréteur (25 février) ainsi que le parseur (plus tard). Ces rendus pourront impacter légèrement votre note de contrôle continu (aka note d’assiduité).

Projet

Le sujet du projet est là.

Sa version Open-dyslexic est ici.

La base de code à compléter est par là.

Vous avez jusqu’au 25 avril pour le rendre (sur la page moodle). Attention, comme annoncé en cours, cette date est stricte (pour cause de date butoir stricte pour la correction).

Anciens sujets d’examen

Attention, particulièrement pour les premières années du cours, il est possible que le format change (un peu).

Liens et ressources

Livres

Le livre incontournable pour un cours de compilation est «Compilers, Principles, Techniques, and Tools» dit «Le dragon». Son site web est ici, et il est disponible à la bibliothèque. Il a servi de lecture préliminaire à la préparation de ce cours. Bien qu’un peu daté, les principes qu’il présentent sont toujours à la base de la compilation et adapté à un cours de notre niveau.

J’ai également consulté «Modern compiler implementation in ML». Le site est , et il est également disponible à la bibliothèque. Il est un peu plus daté que le précédent, mais les parties d’implémentation ressemblent un peu plus à ce qu’on fera (mais attention c’est du standard ml, pas du OCaml).

Autres cours

Je me suis principalement inspiré de deux autres cours de compilation d’un niveau plus important que le nôtre :

Les deux ont un programme un peu plus étoffé que ce que nous verrons ensemble, et disposent de plein de ressources intéressantes qu’on ne verra pas nécessairement ensemble.

Outils utilisés durant le cours

Les TD seront implémentés en OCaml. À ce titre, on va donner quelques ressources utiles sur le langage et les outils liés qu’on utilisera :

  • Le site d’OCaml dispose de très bons tutoriels et documentation sur le langage.
  • Real World OCaml est un livre (accessible gratuitement en ligne) qui forme un très bon (et détaillé) cours d’OCaml, qui est de plus très récent.
  • Menhir est le générateur de parseurs que nous utiliserons. Vous y trouverez sa documentation.
  • Cairn est le visualiseur d’exécution de parseur que nous utiliserons dans la partie parseur du cours (et qui a été développé dans le cadre de ce cours).