• Composante

    École Nationale Supérieure d'Électrotechnique d'Électronique d'Informatique d'Hydraulique et des Télécommunications

Objectifs

L'étudiant doit maîtriser les différentes étapes de la traduction des langage : analyse lexicale, analyse syntaxique et analyse sémantique. Dans la cas particulier de la compilation, il doit connaître quatre phases de l'analyse sémantique : la résolution des identifiant grâce à une table des symboles, le typage, le placement mémoire des variables et la génération de code. L'étudiant réalisera un compilateur qui prendra en langage d'entrée une sous partie du C, qui produira du code pour une machine abstraite à pile. Le compilateur sera lui-même écrit en OCaml.

Lire plus

Description

La matière est composée de 3 cours magistraux, 6 TD et 6TP. La matière est évaluée par un examen sur table de 1h30. Les concepts abordés sont :
- analyse lexicale, syntaxique et sémantique
- Abstract Syntaxe Tree
- table des symboles
- typage (vérification de type)
- génération de code
Le langage d'entrée du compilateur est le langage RAT (constante, variable, fonction, entier, booléen, rationnel, conditionnel, répétition). Le langage de sortie est le langage TAM (machine à pile sans pas de registre). Le compilateur est écrit en OCaml en utilisant Menhir.

Contenu détaillé des séances :

C1 : Introduction à la compilation. Rappel : automate, grammaire, arbre de dérivation + analyse lexicale et syntaxique
TD1 : Manipulation de grammaires, grammaires attribuées
TP1 : Prise en main de Menhir - analyses lexicale, syntaxique et sémantique
C2 : AST, gestion des identifiants, typage (inférence de type avec Mini-ML + contrôle de type avec RAT)
TD2 : Définition de l'AST de RAT + gestion des identifiants à l'aide d'une table des symboles
TP2 : Passe de gestion d'identifiants
TD3 : Typage
TP3 : Passe de typage
C3 : Placement mémoire + génération de code et TAM
TD4 : Placement mémoire
TP4 : Passe de placement mémoire
TD5 : Génération de code
TP5 : Passe de génération de code et TAM
TP6 : Passe de génération de code et TAM
TD6 : Pour aller plus loin (pointeurs, ...) : aide pour le projet

Lire plus

Pré-requis obligatoires

Programmation fonctionnelle, architecture des ordinateurs

Lire plus