While compilers for high-level programming languages are large complex
software systems, they have particular characteristics that
differentiate them from other software systems. Their functionality is
almost completely well-defined - ideally there exist complete precise
descriptions of the source and target languages. Additional descriptions
of the interfaces to the operating system, programming system and
programming environment, and to other compilers and libraries are often
available.
This book deals with the analysis phase of translators for programming
languages. It describes lexical, syntactic and semantic analysis,
specification mechanisms for these tasks from the theory of formal
languages, and methods for automatic generation based on the theory of
automata. The authors present a conceptual translation structure, i.e.,
a division into a set of modules, which transform an input program into
a sequence of steps in a machine program, and they then describe the
interfaces between the modules. Finally, the structures of real
translators are outlined. The book contains the necessary theory and
advice for implementation.
This book is intended for students of computer science. The book is
supported throughout with examples, exercises and program fragments.