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.
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.
From the reviews:
"This is the second book in a series of textbooks on compilers, intended for students of computer science. ... The level of detail and the large number of exercises make the book suitable for self-study." (Johan Georg Granström, zbMATH, Vol. 1273, 2013)
"This is the second book in a series of textbooks on compilers, intended for students of computer science. ... The level of detail and the large number of exercises make the book suitable for self-study." (Johan Georg Granström, zbMATH, Vol. 1273, 2013)
"This book is markedly different from other books on compiler design. ... this one looks at the environments that are needed to support the execution of the programs being compiled. The book treats each of these execution environments as a type of machine that follows the semantics of particular styles of programming languages. ... The book's concepts are illustrated in color, with many examples and visual aids. ... Summing Up: Recommended. All academic, professional, and general readers." F. H. Wild III, Choice, Vol. 48 (11), July 2011
"The color diagrams provide additional descriptions of each machine instruction operation on the runtime stack; these are clear and helpful. The book provides many clear code generation examples, each with the right level of detail to explain the salient points of a translation. Each chapter ends with an extensive set of exercises designed to help the reader work through additional translation schemes that add more power to the C language subset. ... (The book is) short, written in a spare and clear style, and thoughtfully sequenced for motivated readers. ... (F)or anyone interested in compilers and code generation for modern programming language implementations, this book is a must-read." Michael Zastre, ACM Computing Reviews, December 2011
"The color diagrams provide additional descriptions of each machine instruction operation on the runtime stack; these are clear and helpful. The book provides many clear code generation examples, each with the right level of detail to explain the salient points of a translation. Each chapter ends with an extensive set of exercises designed to help the reader work through additional translation schemes that add more power to the C language subset. ... (The book is) short, written in a spare and clear style, and thoughtfully sequenced for motivated readers. ... (F)or anyone interested in compilers and code generation for modern programming language implementations, this book is a must-read." Michael Zastre, ACM Computing Reviews, December 2011
"This book is markedly different from other books on compiler design. ... this one looks at the environments that are needed to support the execution of the programs being compiled. The book treats each of these execution environments as a type of machine that follows the semantics of particular styles of programming languages. ... The book's concepts are illustrated in color, with many examples and visual aids. ... Summing Up: Recommended. All academic, professional, and general readers." F. H. Wild III, Choice, Vol. 48 (11), July 2011 "The color diagrams provide additional descriptions of each machine instruction operation on the runtime stack; these are clear and helpful. The book provides many clear code generation examples, each with the right level of detail to explain the salient points of a translation. Each chapter ends with an extensive set of exercises designed to help the reader work through additional translation schemes that add more power to the C language subset. ... (The book is) short, written in a spare and clear style, and thoughtfully sequenced for motivated readers. ... (F)or anyone interested in compilers and code generation for modern programming language implementations, this book is a must-read." Michael Zastre, ACM Computing Reviews, December 2011