This paper introduces generic attribute grammars which provide support
for genericity, reusability and modularity in attribute grammars. A
generic attribute grammar is a {\em component} that is easily reused,
composed and understood. Attribute grammar based systems may be
constructed out of a set of generic components, that can be analysed
and compiled separately. We show how to generate deforestated
attribute evaluators for those components. As a result, redundant
intermediate data structures used to {\em glue} different components
are eliminated.