This paper presents a technique to construct compilers expressed in a
strict, purely functional setting. The compilers do not rely on any
explicit data structures, like trees, stacks or queues, to efficiently
perform the compilation task. They are constructed as a set of
functions which are directly called by the parser. An abstract syntax
tree is neither constructed nor traversed. Such deforestated compilers
are automatically derived from an attribute grammar
specification. Furthermore this technique can be used to efficiently
implement any multiple traversal algorithm.