avec ÉTIENNE DURIS (en DEA [Dur94], puis thèse en cours) Une GA est une spécification déclarative d'un calcul sur un arbre qui peut être
considérée comme un cas particulier de programme applicatif ou fonctionnel. Le
générateur d'évaluateurs analyse la partie syntaxique de la GA et, par souci
d'efficacité, la transforme en un programme impératif effectuant des effets de
bord. Cependant, l'analyse des fonctions sémantiques n'est pas aussi
poussée. En particulier, sous certaines conditions de typage, une règle
sémantique , où f est une fonction de mise à jour ,
peut être traduite par l'affectation
, grâce aux
analyses de durée de vie des attributs (cf. la section 2.5), qui
conserve entre autres son caractère applicatif. Pour augmenter l'efficacité, on
voudrait remplacer cette affectation par l'instruction
; , où la
procédure P est l'équivalent destructif de F. Pour cela, il faut d'une part
déterminer les conditions dans lesquelles cette transformation est légitime et,
d'autre part, pouvoir construire automatiquement P à partir de la définition
de f. Nous avons étudié et résolu ces deux problèmes dans le cas où f est
définie par une grammaire attribuée [Dur94,DPJ95] . Cependant notre
algorithme déterminant la légalité de la transformation, qui repose sur la
possibilité que l'ancienne valeur de v soit partagée par une valeur encore
active, est assez pessimiste (bien que parfaitement sûr) et peut être amélioré.