Compilers: Principles, Techniques, and Tools
Encyclopedia
Compilers: Principles, Techniques, and Tools is a famous computer science
textbook by Alfred V. Aho, Monica S. Lam
, Ravi Sethi
, and Jeffrey D. Ullman about compiler construction
. Although more than two decades have passed since the publication of the first edition, it is widely regarded as the classic definitive compiler
technology text.
It is affectionately known as the Dragon Book to a generation of computer scientists and its covers depict a knight
and a dragon in battle, a metaphor for conquering complexity. This name can also refer to Aho and Ullman's older Principles of Compiler Design
.
sometimes known as the 'green dragon book'
Topics covered in the first edition include:
of Stanford University
became a co-author with this edition.
The second edition includes several additional topics including
Computer science
Computer science or computing science is the study of the theoretical foundations of information and computation and of practical techniques for their implementation and application in computer systems...
textbook by Alfred V. Aho, Monica S. Lam
Monica S. Lam
Monica Sin-Ling Lam is a professor in the Computer Science Department at Stanford, and Founder and Chief Scientist of MokaFive.-Professional biography:...
, Ravi Sethi
Ravi Sethi
Ravi Sethi is an Indian computer scientist retired from Bell Labs and president of Avaya Labs Research. He is best known as one of three authors of the classic computer science textbook Compilers: Principles, Techniques, and Tools, also known as the Dragon Book.Sethi was born in 1947 in Murdana,...
, and Jeffrey D. Ullman about compiler construction
Compiler construction
Compiler construction is an area of computer science that deals with the theory and practice of developing programming languages and their associated compilers....
. Although more than two decades have passed since the publication of the first edition, it is widely regarded as the classic definitive compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...
technology text.
It is affectionately known as the Dragon Book to a generation of computer scientists and its covers depict a knight
Knight
A knight was a member of a class of lower nobility in the High Middle Ages.By the Late Middle Ages, the rank had become associated with the ideals of chivalry, a code of conduct for the perfect courtly Christian warrior....
and a dragon in battle, a metaphor for conquering complexity. This name can also refer to Aho and Ullman's older Principles of Compiler Design
Principles of Compiler Design
Principles of Compiler Design, by Alfred Aho and Jeffrey D. Ullman, is a classic textbook on compilers for computer programming languages.It is often called the "dragon book" and its cover depicts a knight and a dragon in battle; the dragon is green, and labelled "Complexity of Compiler...
.
First edition
The first edition is informally called the 'red dragon book' to distinguish it from the second edition and from Aho & Ullman’s 1977 Principles of Compiler DesignPrinciples of Compiler Design
Principles of Compiler Design, by Alfred Aho and Jeffrey D. Ullman, is a classic textbook on compilers for computer programming languages.It is often called the "dragon book" and its cover depicts a knight and a dragon in battle; the dragon is green, and labelled "Complexity of Compiler...
sometimes known as the 'green dragon book'
Topics covered in the first edition include:
- CompilerCompilerA compiler is a computer program that transforms source code written in a programming language into another computer language...
structure - Lexical analysisLexical analysisIn computer science, lexical analysis is the process of converting a sequence of characters into a sequence of tokens. A program or function which performs lexical analysis is called a lexical analyzer, lexer or scanner...
(including regular expressionRegular expressionIn computing, a regular expression provides a concise and flexible means for "matching" strings of text, such as particular characters, words, or patterns of characters. Abbreviations for "regular expression" include "regex" and "regexp"...
s and finite automata) - Syntax analysis (including context-free grammarContext-free grammarIn formal language theory, a context-free grammar is a formal grammar in which every production rule is of the formwhere V is a single nonterminal symbol, and w is a string of terminals and/or nonterminals ....
s, LL parserLL parserAn LL parser is a top-down parser for a subset of the context-free grammars. It parses the input from Left to right, and constructs a Leftmost derivation of the sentence...
s, bottom-up parserBottom-up parsingBottom-up parsing is a strategy for analyzing unknown information that attempts to identify the most fundamental units first, and then to infer higher-order structures from them...
s, and LR parserLR parserIn computer science, an LR parser is a parser that reads input from Left to right and produces a Rightmost derivation. The term LR parser is also used; where the k refers to the number of unconsumed "look ahead" input symbols that are used in making parsing decisions...
s) - Syntax-directed translationSyntax-directed translationIn computer programming, Syntax-directed translation is a method of translating a string into a sequence of actions by attaching one such action to each rule of a grammar. Thus, parsing a string of the grammar produces a sequence of rule applications...
- Type checking (including type conversions and polymorphism)
- Run-time environment (including parameter passing, symbol tables, and storage allocation)
- Code generation (including intermediate code generation)
- Code optimizationCompiler optimizationCompiler optimization is the process of tuning the output of a compiler to minimize or maximize some attributes of an executable computer program. The most common requirement is to minimize the time taken to execute a program; a less common one is to minimize the amount of memory occupied...
Second edition
Following in the tradition of its two predecessors, the second edition features a dragon and a knight on its cover, and is informally known as the purple dragon. Monica S. LamMonica S. Lam
Monica Sin-Ling Lam is a professor in the Computer Science Department at Stanford, and Founder and Chief Scientist of MokaFive.-Professional biography:...
of Stanford University
Stanford University
The Leland Stanford Junior University, commonly referred to as Stanford University or Stanford, is a private research university on an campus located near Palo Alto, California. It is situated in the northwestern Santa Clara Valley on the San Francisco Peninsula, approximately northwest of San...
became a co-author with this edition.
The second edition includes several additional topics including
- directed translation
- new data flow analyses
- parallel machines
- JITJust-in-time compilationIn computing, just-in-time compilation , also known as dynamic translation, is a method to improve the runtime performance of computer programs. Historically, computer programs had two modes of runtime operation, either interpreted or static compilation...
compiling - garbage collectionGarbage collection (computer science)In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...
- new case studies.
See also
- CompilerCompilerA compiler is a computer program that transforms source code written in a programming language into another computer language...
s - Programming languageProgramming languageA programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
- Wizard book
- Principles of Compiler DesignPrinciples of Compiler DesignPrinciples of Compiler Design, by Alfred Aho and Jeffrey D. Ullman, is a classic textbook on compilers for computer programming languages.It is often called the "dragon book" and its cover depicts a knight and a dragon in battle; the dragon is green, and labelled "Complexity of Compiler...
External links
- Book Website at Stanford with link to Errata
- Sample chapters from the second edition.
- The 2006 edition: ISBN 0-321-48681-1