
Précédent : Analyse de programmes Prolog Remonter :
Analyse
statique Suivant : Analyse dynamique
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:
- la sémantique opérationnelle du langage de programmation
décrite sous forme de sémantique naturelle et
- 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.