This paper presents techniques for a component-based style of
programming in the context of higher-oder attribute grammars
(HAG). Attribute grammar components are ``\textit{plugged in}'' into
larger attribute grammar systems through higher-order attribute
grammars. Higher-order attributes are used as (intermediate)
``gluing'' data structures.

This paper also presents two attribute grammar components that can be
re-used across different language-based tool specifications: a
visualizer and animator of programs and a graphical user interface AG
component. Both components are reused in the definition of a simple
language processor.  The techniques presented in this paper are
implemented in \Lrc: a purely functional, higher-order attribute
grammar-based system that generates language-based tools.