Synopses & Reviews
This monograph is concerned with the problem of getting computers to transform formal language definitions into compilers. Its purpose is to demonstrate how certain simple theoretical ideas can be used to generate compilers and even compiler generators. As the title suggests, a realistic assessment of the relationship between the complexity of realistic compilation and the relative simplicity studied in theoretical work is attempted. The monograph contains an overview of existing compiler generators. The CERES '83 compiler generator, developed by Neil D. Jones and the author, is described in detail. The CERES system is based on the idea of composing language definitions and it serves as an example of a powerful novel "bootstrapping" technique by which one can generate compiler generators as well as compilers by considering a compiler generator to be, in a sense which is made mathematically precise, a special kind of compiler. The core of the CERES system is a two-page-long machine generated compiler generator. The approach uses ideas from denotational semantics and many-sorted algebra and connects them with novel ideas about how to treat programs and language definitions as data. Considerable effort has been made to present the necessary theory in a manner suitable for readers who have some practical experience but not necessarily a theoretical background in semantics.