Stage Master Recherche en Informatique --- 2008-2009
Gestion des exceptions dans le langage PRM
Encadrants : Christophe Dony, Roland Ducournau et Floréal
Morandat
PRM
est le langage
développé par Jean Privat dans le cadre de
sa
thèse, pour tester un nouveau schéma de compilation et
spécifier diverses fonctionnalités nouvelles.
Floréal
Morandat a développé au cours de son stage de M2R et
de sa première année de thèse un
compilateur autogène (de PRM en PRM), appelé PRMc.
Différents stagiaires ont apporté des briques : analyse
syntaxique (Simon Allier et Guillaume Artignan, 2007), analyse de types
(Simon Allier, 2008), plug-in
Eclipse (Yang Mengxi et Olivier Pothin, 2008).
Présentation du problème et Objectif du stage
L'objectif du présent stage est de développer un
gestionnaire d'exceptions pour PRM.
Il est probable que l'idéal sera de faire une boucle
spécification - implantation en partant du plus simple et en
allant ensuite éventuellement vers des questions plus ouvertes.
La première itération consistera donc à voir
comment implanter en PRM les primitives standard "try-catch",
"try-finally" et "throw" (incontournables dans tout système de
gestion des exceptions) dans leur version la plus classique tout en
déterminant quelle est la manière la plus efficace de
prendre en compte les spécificités de PRM :
système de typage et de modules.
Les itérations suivantes pourront s'intéresser à
différents problèmes plus ou moins ouverts tels que :
- quelle typologie de classes d'exception souhaite-t-on proposer?
La classification proposée par Java pourra être
disséquée à cet effet. L'existence de deux
grandes catégories d'exceptions en Java, les
vérifiées ("checked" - celle qu'il faut obligatoirement
rattraper ("catch") ou déclarer ("throws")) et les non
vérifiées ("unchecked") a créé de nombreux
problèmes logiciels qu'il sera bon d'analyser.
- souhaite-t-on proposer un modèle à terminaison ou
à reprise? La reprise permet à un handler (typiquement,
le texte d'une clause "catch" en Java, de faire reprendre
l'exécution standard du calcul à l'instruction qui suit
l'instruction de signalement selon un protocole à décider
entre le signaleur (celui qui "throw") et le handler (celui qui
"catch"). La reprise n'est pas disponible en Java.
L'un des modules FMIN 330 (Spécifications et
Implémentation des
Langages Objets) ou FMIN 3xx (Fiabilité du logiciel) est un
prérequis.
Suivre les deux sera évidemment l'idéal pour ce stage.
Voir aussi le site du
langage PRM.
Voir également le site sur la gestion d'exception dans les
systèmes componentiels ou à objets.