Principles of Compiler Design

Last updated
Principles of Compiler Design
Green Dragon Book (front).jpg
Author Alfred V. Aho, and Jeffrey D. Ullman
LanguageEnglish
Publisher Addison-Wesley
Publication date
1977
Pages614
ISBN 0-201-00022-9

Principles of Compiler Design, by Alfred Aho and Jeffrey Ullman, is a classic textbook on compilers for computer programming languages. Both of the authors won the 2020 Turing award for their work on compilers.

It is often called the "green dragon book" [1] and its cover depicts a knight and a dragon in battle; the dragon is green, and labeled "Complexity of Compiler Design", while the knight wields a lance and a shield labeled "LALR parser generator" and "Syntax Directed Translation" respectively, and rides a horse labeled "Data Flow Analysis". The book may be called the "green dragon book" to distinguish it from its successor, Aho, Sethi & Ullman's Compilers: Principles, Techniques, and Tools , which is the "red dragon book". [1] The second edition of Compilers: Principles, Techniques, and Tools added a fourth author, Monica S. Lam, and the dragon became purple; hence becoming the "purple dragon book." The book also contains the entire code for making a compiler. The back cover offers the original inspiration of the cover design: The dragon is replaced by windmills, and the knight is Don Quixote.

The book was published by Addison-Wesley, ISBN   0-201-00022-9. The acknowledgments mention that the book was entirely typeset at Bell Labs using troff on the Unix operating system, little of which had, at that time, been seen outside the Laboratories.

Related Research Articles

In computing, a compiler is a computer program that translates computer code written in one programming language into another language. The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a lower level language to create an executable program.

In computing, object code or object module is the product of a compiler.

The Dragon Book may refer to:

In computing, an optimizing compiler is a compiler that tries to minimize or maximize some attributes of an executable computer program. Common requirements are to minimize a program's execution time, memory footprint, storage size, and power consumption.

In computer science, a recursive descent parser is a kind of top-down parser built from a set of mutually recursive procedures where each such procedure implements one of the nonterminals of the grammar. Thus the structure of the resulting program closely mirrors that of the grammar it recognizes.

Alfred Vaino Aho is a Canadian computer scientist best known for his work on programming languages, compilers, and related algorithms, and his textbooks on the art and science of computer programming.

<i>Compilers: Principles, Techniques, and Tools</i> Computer science compiler technology textbook

Compilers: Principles, Techniques, and Tools is a computer science textbook by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman about compiler construction for programming languages. First published in 1986, it is widely regarded as the classic definitive compiler technology text.

In computing, code generation is part of the process chain of a compiler and converts intermediate representation of source code into a form that can be readily executed by the target system.

Jeffrey David Ullman is an American computer scientist and the Stanford W. Ascherman Professor of Engineering, Emeritus, at Stanford University. His textbooks on compilers, theory of computation, data structures, and databases are regarded as standards in their fields. He and his long-time collaborator Alfred Aho are the recipients of the 2020 Turing Award, generally recognized as the highest distinction in computer science.

In compiler theory, copy propagation is the process of replacing the occurrences of targets of direct assignments with their values. A direct assignment is an instruction of the form x = y, which simply assigns the value of y to x.

An operator precedence grammar is a kind of grammar for formal languages.

Peephole optimization is an optimization technique performed on a small set of compiler-generated instructions; the small set is known as the peephole or window.

In computer science, an induction variable is a variable that gets increased or decreased by a fixed amount on every iteration of a loop or is a linear function of another induction variable.

The Amsterdam Compiler Kit (ACK) is a retargetable compiler suite and toolchain written by Andrew Tanenbaum and Ceriel Jacobs, since 2005 maintained by David Given. It has frontends for the following programming languages: C, Pascal, Modula-2, Occam, and BASIC.

Monica Sin-Ling Lam is an American computer scientist. She is a professor in the Computer Science Department at Stanford University.

In the field of compiler optimizations, available expressions is an analysis algorithm that determines for each point in the program the set of expressions that need not be recomputed. Those expressions are said to be available at such a point. To be available on a program point, the operands of the expression should not be modified on any path from the occurrence of that expression to the program point.

In computing, compiler correctness is the branch of computer science that deals with trying to show that a compiler behaves according to its language specification. Techniques include developing the compiler using formal methods and using rigorous testing on an existing compiler.

A lookahead LR parser (LALR) generator is a software tool that reads a BNF grammar and creates an LALR parser which is capable of parsing files written in the computer language defined by the BNF grammar. LALR parsers are desirable because they are very fast and small in comparison to other types of parsers.

Charm is a computer programming language devised in the early 1990s with similarities to the RTL/2, Pascal and C languages in addition to containing some unique features of its own. The Charm language is defined by a context-free grammar amenable to being processed by recursive descent parser as described in seminal books on compiler design.

In computer science, Thompson's construction algorithm, also called the McNaughton–Yamada–Thompson algorithm, is a method of transforming a regular expression into an equivalent nondeterministic finite automaton (NFA). This NFA can be used to match strings against the regular expression. This algorithm is credited to Ken Thompson.

References

  1. 1 2 Mad Macz (January 2002). Internet Underground: The Way of the Hacker. PageFree Publishing, Inc. p. 219. ISBN   978-1-930252-53-0 . Retrieved 21 October 2011.