previous up next contents
Précédent : Inférence de types Remonter : Analyse statique Suivant : Analyse dynamique

Un cadre pour la construction d'analyseurs statiques à partir de sémantiques opérationnelles

Participants : Valérie Gouranton, Daniel Le Métayer

De nombreux travaux ont été effectués sur les fondements de l'analyse sémantique, la correction et la précision des analyseurs. On peut regretter cependant que peu d'attention ait été accordé jusqu'à présent à la conception d'outils d'analyse génériques. Il est ainsi très difficile de factoriser les efforts en matière de réalisation d'analyseurs. Nous avons abordé ce problème en partant de la sémantique opérationnelle du langage de programmation décrite sous forme de sémantique naturelle. La sémantique initiale peut dans un premier temps être instrumentée pour extraire d'une preuve (ou ``exécution'') donnée les informations pertinentes en regard de la propriété de programme recherchée. Par exemple, ces informations peuvent porter sur les accès aux variables (création, lecture, écriture) si on s'intéresse à une propriété sur leur durée de vie. Un système d'inférence générique est associé à cette sémantique instrumentée. Il est ensuite instancié avec des propriétés spécifiques qui sont décrites par récurrence sur les arbres de preuves (ou les ``traces d'exécution'') de la sémantique instrumentée. On obtient ainsi un système d'inférence spécialisé qui décrit de manière abstraite un analyseur [20].

Notre exploration s'est limitée pour l'instant à l'analyse de programmes fonctionnels [25] (propriétés de globalisation, de nécessité, de durée de vie, ...). L'expérimentation sur des langages de programmation logiques et impératifs est en cours. Une autre retombée prometteuse de cette démarche est de pouvoir intégrer dans un même cadre analyse statique et analyse dynamique (les propriétés définies pouvant tout aussi bien être vérifiées a posteriori sur la trace d'exécution produite).


previous up next contents
Précédent : Inférence de types Remonter : Analyse statique Suivant : Analyse dynamique