Cross-fertilization

The ``new power'' of the Attribute Grammar formalism enabled by our extensions leads us to re-examine the results of thirty years of research and practice, and in particular the static analysis methods, in a larger context. The basic observation is that, when Attribute Grammars are considered as a functional dialect, the evaluator generation process can be seen as a functional program transformation system; this was exemplified in section 2, with the lazy-ML version of bird and the ML program generated from the Attribute Grammar version. In this respect, the simplicity of the Attribute Grammar formalism, which has often been derided in the past as a weakness, now appears as a strength. Indeed, it allows many static analysis techniques to come up with very precise results (and even with exact results in the case of the plain circularity problem [Jou92]).

For instance, the evaluator generator in FNC-2 performs an extensive analysis of all relations (dependencies) among all attributes to determine the most efficient way to compute them. This kind of analysis can be compared to optimization techniques such as strictness analysis in lazy functional languages. In addition, memory optimization techniques based on attribute lifetime analysis [JP90b] can be seen as an interprocedural transformation that allows to reduce the memory requirements of a functional program. In both cases, these techniques have been extensively studied in the context of Attribute Grammars and have been validated through the implementation and use of systems such as FNC-2 and LIGA.

We have recently begun to explore other tracks. For instance, preliminary studies [Dur94] suggest that descriptional composition [GG84, RJP94, Rou94] and deforestation [Wad88] lead to equivalent results, although they operate quite differently. Furthermore, attribute lifetime analysis gives new insights on the update-in-place problem for functional programs [Dur94, DPJ94]. More work is needed to decide whether this approach is actually fruitful.

Other classical Attribute Grammar paradigms that deserve an interpretation in terms of functional programs include incremental evaluation [Rep84, Par88], parallel evaluation [Jou91, Mar94] and our work on reusability and genericity [BJPR93, Bel93, Rou94].

It is clear, however, that we are only at the beginning of this road, and there are presently many more questions than answers in this area. We are strongly interested in actively studying this topic in the future.



Web page maintained by Didier Parigot
Fri Feb 27 10:05:31 MET 1998