Optimisation de l'espace mémoire pour l'évaluation de grammaires attribuées
Institution:
OrléansDisciplines:
Directors:
Abstract EN:
Pas de résumé disponible.
Abstract FR:
Ce travail concerne l'optimisation de l'espace mémoire pour la production automatique de compilateurs par la méthode des grammaires attribuées. Aujourd'hui, avec le développement explosif que connait l'architecture des machines et avec l'abandon du mythe du langage unique tout puissant, l'industrialisation d'un procédé de construction pour les traducteurs devient un objectif incontournable. Or, si les évaluateurs produits automatiquement à partir d'une grammaire attribuée ont une vitesse du même ordre de grandeur que celle des programmes écrits à la main, ils sont encore très gros consommateurs en espace mémoire. L'objectif de ce travail est de montrer que l'utilisation des classes de grammaires attribuées les plus riches est possible sans être penalisé par le problème d'encombrement mémoire. Ce paradoxe apparent est résolu en examinant de manière fine, au moment de la construction de l'évaluateur, le mécanisme de gestion de l'espace mémoire pour déterminer les propriétés des durées de vie des objets mis en oeuvre. On peut alors exploiter complètement cette information pour allouer et libérer la mémoire au moment le plus opportun. Apres un survol des différents travaux relatifs a ce problème d'optimisation de l'espace, nous proposons un schéma de base pour stocker tous les attributs temporaires à l'extérieur de l'arbre de dérivation. Ce schéma découle de conditions nécessaires et suffisantes pour implanter les instances d'attributs en variables globales ou en piles. Ces résultats sont ensuite étendus pour améliorer le schéma de base. On peut, en effet, faire partager le même espace à plusieurs objets globaux, ce qui diminue encore l'espace mémoire et, surtout, augmente la vitesse si ce regroupement permet d'éliminer des règles de copie (sans nouvelle création d'information). D'autres améliorations portent sur l'optimisation de la gestion des piles et le traitement des attributs non temporaires dont la durée de vie s’étend au-delà d’une simple visite dans l’arbre. Enfin, nous présentons l’implantation de ces techniques d’optimisation dans le système de traitement de Grammaires Attribuées FNC-2. Cette implantation a largement permis au système lui-même de se développer, les résultats fournis le montrant largement. D’autre part, une évaluation chiffrée du gain mémoire sur des exemples de taille respectable, ainsi qu’une comparaison avec le système GAG de Kastens montrent l’apport très significatif de notre proposition et prouve qu’il est possible, aujourd’hui, de construire automatiquement des évaluateurs de qualité acceptable pour des applications de grande taille.