Compiler Construction -- A Declarative Approach W. M. Waite University of Colorado Boulder, CO, USA ABSTRACT: Although compiler construction is complex, even for simple languages, it is based on a number of language-independent concepts (such as "scope" and "type") that are easy to understand. The compilation of source text in a particular language can be described in terms of those concepts by identifying constructs playing specific roles. Given such a declarative description of a compilation, modern tools can construct a complete compiler that is more robust and just as efficient as a hand-coded one for the same source language. This talk will survey current mechanisms for declarative specification in compiler construction, and relate them to object-oriented approaches. I will show how an integrated set of tools provides a framework for implementing general solutions and a vocabulary for applying those solutions to particular problems. The framework constitutes a body of formally represented knowledge that can be re-used not only for constructing compilers, but also for teaching the principles of compiler construction. Perhaps the most interesting advantage, however, of the declarative approach is that it makes compiler technology available to a much broader spectrum of users. This is important because compiler construction is an enabling technology for domain-specific languages and generators. Very few (if any) of our students will write conventional compilers, but most will develop compiler-like processors -- a generator of musical scores, a memory traffic analyzer for large scientific applications, a generator of class web sites -- that perform some kind of analysis or translation in pursuit of their main results.