Pendant le cours de compilation, vous devez écrire un compilateur. Cette année, le langage que vous devez compiler est appelé Drei.
Le langage Drei
Le langage Drei est un langage orienté-objet relativement simple. Il est défini par les documents suivis.
- Sa grammaire lexicale.
- Sa grammaire syntaxique.
- La définition de son système de type par rapport à une grammaire abstraite.
Le document Factorial.drei
est un programme Drei valide qui calcule — surprise, surprise — la factorielle d'un nombre.
Implantation de référence
Nous mettons aussi à votre disposition un compilateur Drei qui génère du code Scala. Vous pouvez ensuite exécuter ce code pour étudier le comportement attendu d'un programme Drei. Le compilateur se lance en exécutant la commande suivante.
scala -cp scala-pinter.jar dreic.ScalaPrint <filename.drei> [<filename.scala>]
Le première fichier en paramètre contient le programme Drei à compiler, le second, optionel, est le fichier de destination vers lequel imprimer le code Scala.
Étapes
Le projet est découpé en cinq étapes successives. Vous trouverez plus d'information sur chaque étape sur la page qui lui est consacrée.
- L'étape scanner est l'analyse lexicale (jusqu'au 9 novembre).
- L'étape parser est l'analyse syntaxique (jusqu'au 23 novembre).
- L'étape tree est la construction de l'arbre (jusqu'au 7 décembre).
- L'étape typer est l'analyse des noms et des types (jusqu'au 11 janvier).
- L'étape generator est la production de code (jusqu'au 6 février).
- Un bonus sera accordé à ceux qui démontrent la capacité de leur compilateur à supporter la coercition et le test dynamique des types ou type cast/check (jusqu'au 6 février).
Travailler en groupe
Travailler en groupe est créatif et intéressant. Ce n'est par contre pas toujours très facile. Pour pouvoir tirer le maximum du projet, voici quelques conseils.
- Ne séparez pas le travail en parties pour des personnes différentes. Comme l'examen porte sur tout le projet, vous ne pouvez pas vous permettre de ne pas connaître le contenu d'une étape.
- Mieux encore: travaillez ensemble sur le même écran, et échangez régulièrement le contrôle le clavier. C'est un des composants de ce que l'on appelle l'eXtreme programming. De cette manière le code, la structure satisfont les deux programmeurs ; le risque d'erreur – de la petite faute bête à la monstrueuse erreur de design — est réduit.
- Choisissez bien votre coéquipier. Vous travaillerez avec lui pendant un semestre: assurez vous qu'il aie le même rythme et style de travail et surtout les même objectifs pour le cours que vous.