Lrc is a generator for graphical, easy to use, Language-Oriented
Tools.  {\sc Lrc} accepts as input an Higher Order Attribute
Grammar (HAG)  specifying a particular language and
generates incremental attribute evaluators.

Lrc generates tools that have advanced interactive interfaces
and these interfaces are computed. That is, the interface may
depend on the structure being edited and also on computed
properties. A change in that structure may cause the interface to
change. This provides users with powerful facilities to interact with

One of the key features to handle interactive environments is the
ability to perform efficient recomputations after each user
interaction. The incremental evaluators produced by Lrc are
efficient: incremental behaviour is achieved via function caching, an
efficient strategy for handling Hags. Furthermore, Lrc uses several
optimizations which increase the evaluators' performance, such as, the
elimination of nodes and copy rules and tree deforestation.

The system has been used to develop several kind of applications such
as: language based editors, compilers and even simple games. It has
also been used to support a compiler construction course.  Lrc
produces portable C and Haskell code. Lrc itself and the
generated tools can be installed in any system with an ANSI C compiler
and the Tcl/Tk toolkit.

The Lrc system can be found on the Internet at the address: