Sémantique dénotationnelle par continuations de TOY
Le but du devoir est d'implémenter la sémantique par continuations de
Toy. Vous rendrez un rapport de quelques pages expliquant de manière
concise vos choix de programmation, les problèmes rencontrés, etc.
N'oubliez pas que l'introduction et la conclusion sont deux points
importants dans le rapport : l'introduction donne envie de lire et
situe le problème, la conclusion rappelle le problème et fait une
synthèse de l'ensemble du rapport avec d'éventuelles perspectives.
Travail à faire
Première semaine
- On réfléchit avant de se lancer tête
baissée sur les machines. On va considérérer le
cas où les continuations de commandes sont de type State
-> Answer avec Answer qui est la séquence des
impressions, c'est-à-dire une liste de valeurs.
- Donner la sémantique (comme en cours) du programme suivant :
x:= 0; print x.
- Donner la sémantique des expressions de base (variables,
ou valeurs entières) puis de l'expression e + f.
- Quels sont les types CAML de value, state, answer, ccont
et econt ?
- Implémentez la sémantique par continuations des expressions de TOY
sans effets de bord. Vous pouvez récupérer une partie
des sources ici, et utiliser les fichiers parser, lexer, state et
printer du tp précédent.
- Implémentez la sémantique par continuations des programmes TOY sans exceptions.
Deuxième semaine
- Ajoutez les effets de bord et les exceptions.
- Essayez différents types de "réponses", et
testez-les sur des exemples bien choisis.
- On veut maintenant ajouter la notion d'environnement, telle que
définie dans la "Sémantique standard" vue en cours.
Quels seront les types CAML correspondant aux différents
domaines sémantiques ?
Troisième semaine
- Transformez votre outil pour prendre en compte la notion
d'environnement.
- Ajoutez les déclarations de variables
et la notion de bloc.
- S'il vous reste du temps : le module Format permet de faire de la mise en page a base de blocs. Vous pouvez vous en servir pour un affichage plus joli de vos programmes...
Benoit Delahaye
2007-11-09