Sémantique opérationnelle de TOY

Ce TP est prévu pour une durée de 3 semaines, il devrait donc être terminé la semaine du 16 octobre 2008.
Rapports à rendre le lundi 20 octobre à 17h. 1 point de pénalité par heure de retard.
Ces rapports doivent contenir :
Les soutenances auront lieu les mardi 22 et jeudi 24 octobre. Chaque groupe aura environ 15 minutes pour faire une démo de son projet (la plus automatisée possible, utilisez un script plutôt que de tout taper en ligne de commande). Vous pouvez montrer dans quelles conditions votre projet compile, le faire tourner sur des exemples significatifs et expliquer/montrer certaines parties du code. Vous me donnerez par la même occasion une copie de votre démo (le script et les fichiers du projet).

Mise en route

Une documentation complète sur Objective Caml est disponible à l'URL :
http://caml.inria.fr/pub/docs/manual-ocaml/

Récupérez les sources du TP ici et désarchivez-les.

Travail à faire


    Première semaine (02/10/08)


  1. Voici en gros le contenu des différents fichiers. Ouvrez les et comprenez ce qu'il s'y passe.
  2. Complétez le fichier printer.ml afin qu'il prenne en compte toutes les structures de programme.
  3. Complétez le fichier step.ml afin qu'il permette de calculer la sémantique de tout programme. Proposez un jeu de tests pour les principales fonctions.

    Deuxième semaine (09/10/08)


  4. On veut ajouter les effets de bord : x++, x = 2 comme des expressions.
  5. Ajouter l'affichage de l'environnement à chaque pas de calcul.
  6. Boucle for.

    Troisième semaine (16/10/08)


  7. Ajouter des opérateurs, par exemple and, or mais aussi ceux qui vous paraissent manquants et très utiles.
  8. Ajouter le traitement des exceptions : try et raise. On utilisera pour cela la version étiquetée de SOS, avec le nouveau type :
    etiq =
    | Tau
    | Etiq of string
    et on modifiera la sémantique en conséquence.
  9. Ajouter l'affichage de la trace pendant l'exécution.