thesis

Une approche sémantique de la mise au point des programmes applicatifs

Defense date:

Jan. 1, 1993

Edit

Institution:

Bordeaux 1

Disciplines:

Directors:

Abstract EN:

Pas de résumé disponible.

Abstract FR:

Les outils traditionnels de debogage ne sont pas suffisants pour des langages applicatifs tels que scheme qui manipulent des valeurs complexes comme les fonctions et les continuations. L'utilisation d'une semantique operationnelle permet une description complete des calculs dans un tel langage. Nous avons choisi une technique d'instrumentation du code pour obtenir cette description. Celle-ci nous assure l'independance par rapport a une implementation (contrairement a l'ecriture d'un interprete ad-hoc), et une bonne separation entre les informations de description et de calcul (contrairement a l'utilisation d'un meta-interprete). Une instrumentation partielle evite la production d'informations sur des calculs ininteressants. Nous avons introduit le concept d'etage de continuation tunnel qui permet de gerer le manque d'information introduit par une instrumentation partielle. La description ainsi obtenue est suffisamment complexe pour qu'un affichage purement textuel soit insuffisant. Nous avons donc choisi un affichage graphique, qui permet une representation concise des proprietes des differentes valeurs. A partir de la semantique operationnelle, nous construisons un arbre de dessin abstrait, qui sera ensuite affiche. Lors de la construction de cet arbre, on peut effectuer des reductions et des simplifications afin d'alleger la representation. Nous avons egalement aborde le probleme de la macro-expansion. Nous proposons une methode permettant, quand aucune ambiguite n'est possible, de representer un calcul, et notamment les continuations, a l'aide de la source d'origine. Cette methode est independante de la technique d'expansion utilisee. Nous avons realise une maquette permettant d'obtenir la trace d'un calcul. Ce travail se termine par une analyse des fonctionnalites a ajouter pour passer d'un traceur a un debogueur. Les informations que nous fournissons sont suffisantes pour effectuer cette transformation