Sous le prétexte d'étudier les compilateurs, nous allons déconstruire de nombreux mécanismes de programmation caractéristiques des langages de haut niveau et nous intéresser aux langages de programmation eux-mêmes. L'objectif est de faire de vous des programmeurs avertis, conscients du fonctionnement de vos outils.
Au passage, vous allez aussi écrire vous-même un compilateur (ou plutôt une dizaine de compilateurs pour des langages de plus en plus riches) et voir comment des notions vues dans de multiples autres cours de votre cursus sans liens évidents entre eux peuvent être convoquées ensemble dans la construction d'un unique système.

Documents

Archives

Ressources

Ouvrages

Des références intéressantes, trouvables en bibliothèque.

TP : Construction d'un compilateur

La construction de votre compilateur sera incrémentale : dès la fin du premier TP vous aurez un compilateur simple mais complet, produisant du code assembleur à partir d'un programme écrit dans un langage de bas niveau. Chaque séance aboutira à un nouveau compilateur pour un langage source un peu plus riche que le précédent.

Sujets

Module 1 : langage impératif

Module 2 : fonctions

L'ensemble de vos travaux de ce module est à rendre sous la forme d'une archive .zip par binôme, à déposer dans la section travaux de Dokeos dans le dossier correspondant à votre groupe :

Module 3 : types, données, objets

Modalités

L'ensemble des travaux pratiques sera noté et comptera pour 40% de votre note finale (note conservée en deuxième session). Rappel des principes :