INF564 - TD 4 - Typage statique de mini-C (en OCaml)

L'objectif de ce TD est de réaliser le typage statique de mini-C.

Les règles de typage sont décrites dans le sujet du projet.

Code fourni

On fournit l'analyseur syntaxique : parser-ocaml.tar.gz

On prendra soin de lire et de comprendre la syntaxe abstraite fournie, c'est-à-dire les fichiers Ptree.mli et Ttree.mli.

Le Makefile fourni permet de compiler le programme (en appelant dune). Le binaire s'appelle minic.exe. Il accepte sur sa ligne de commande exactement un fichier portant le suffixe .c et les options --debug, --parse-only et --type-only.

Si une erreur lexicale ou syntaxique est détectée, elle est signalée et le programme termine avec le code de retour 1.

Si l'analyse syntaxique est effectuée avec succès et que l'option --parse-only est spécifiée, alors le programme termine avec le code de retour 0.

Travail demandé

Réaliser le typage dans le fichier typing.ml, sous la forme d'une fonction qui prend en argument une valeur de type Ptree.file et qui renvoie une valeur de type Ttree.file.

En cas d'erreur de typage détectée, elle est signalée en levant l'exception Error définie dans typing.ml, avec comme argument le message choisi. Cette exception est ensuite rattrapée dans main.ml et affichée sous la forme

     error: ... un message de votre choix ...
et le programme termine avec le code de retour 1.

Indications

Il est fortement conseillé de procéder construction par construction, en testant systématiquement. On peut se donner comme premier objectif de typer un programme aussi simple que
int main() { return 0; }
c'est-à-dire en se limitant aux constantes pour les expressions et à return pour les instructions.

Dans le code fourni, la commande make compile minic.exe puis le lance sur le fichier test.c également fourni. Il suffit donc de modifier ce fichier au fur et à mesure des tests.

Tests

Des tests sont fournis : tests-v1.tar.gz. Cette archive contient
retour à la page du cours