previous up next top index
Précédent : Analyse de programmes Prolog 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 considérant la construction d'analyseurs sous l'angle de la dérivation de programmes à partir de spécifications. Le programme en l'occurrence est l'analyseur lui-même et sa spécification est composée de deux parties:

  1. la sémantique opérationnelle du langage de programmation décrite sous forme de sémantique naturelle et
  2. la propriété recherchée exprimée sous forme de récurrences sur les arbres de preuves de la sémantique naturelle.
Les deux composants peuvent en fait s'exprimer sous forme de fonctions et la dérivation consiste en une série de transformations (pliage/dépliage) permettant d'obtenir un programme récursif autonome qui constitue l'analyseur. L'intérêt de cette démarche est qu'elle permet d'exprimer dans un même cadre des analyses variées sur différents langages. Nous en avons fait la démonstration pour des analyses de programmes impératifs (durée de vie des variables), logiques (clôture des termes) et fonctionnels (nécessité, globalisation). D'un point de vue pratique, ce travail devrait déboucher sur un frontal (front end ) d'analyseur générique, la partie basse (back end ) étant constituée d'un moteur de résolution de points fixes.