This book provides the foundation for understanding the theory and pracitce of compilers. Revised and updated, it reflects the current state of compilation. Every chapter has been completely revised to reflect developments in software engineering, programming languages, and computer architecture that have occurred since 1986, when the last edition published. The authors, recognizing that few readers will ever go on to construct a compiler, retain their focus on the broader set of problems faced in software design and software development. Computer scientists, developers, and aspiring students that want to learn how to build, maintain, and execute a compiler for a major programming language.
1 Introduction
1.1 Language Processors
1.2 The Structure of a Compiler
1.3 The Evolution of Programming Languages
1.4 The Science of Building a Compiler
1.5 Applications of Compiler Technology
1.6 Programming Language Basics
1.7 Summary of Chapter 1
1.8 References for Chapter 1
2 A Simple Syntax-Directed Translator
2.1 Introduction
2.2 Syntax Definition
2.3 Syntax-Directed Translation
2.4 Parsing
2.5 A Translator for Simple Expressions
2.6 Lexical Analysis
2.7 Symbol Tables
2.8 Intermediate Code Generation
2.9 Summary of Chapter 2
3 Lexical Analysis
3.1 The Role of the Lexical Analyzer
3.2 Input Buffering
3.3 Specification of Tokens
3.4 Recognition of Tokens
3.5 The Lexical-Analyzer Generator Lex
3.6 Finite Automata
3.7 From Regular Expressions to Automata
3.8 Design of a Lexical-Analyzer Generator
3.9 Optimization of DFA-Based Pattern Matchers
3.10 Summary of Chapter 3
3.11 References for Chapter 3
4 Syntax Analysis
4.1 Introduction
4.2 Context-Free Grammars
4.3 Writing a Grammar
4.4 Top-Down Parsing
4.5 Bottom-Up Parsing
4.6 Introduction to LR Parsing: Simple LR
4.7 More Powerful LR Parsers
4.8 Using Ambiguous Grammars
4.9 Parser Generators
4.10 Summary of Chapter 4
4.11 References for Chapter 4
5 Syntax-Directed Translation
5.1 Syntax-Directed Definitions
5.2 Evaluation Orders for SDD's
5.3 Applications of Syntax-Directed Translation
5.4 Syntax-Directed Translation Schemes
5.5 Implementing L-Attributed SDD's
5.6 Summary of Chapter 5
5.7 References for Chapter 5
6 Intermediate-Code Generation
6.1 Variants of Syntax Trees
6.2 Three-Address Code
6.3 Types and Declarations
6.4 Translation of Expressions
6.5 Type Checking
6.6 Control Flow
6.7 Backpatching
6.8 Switch-Statements
6.9 Intermediate Code for Procedures
6.10 Summary of Chapter 6
6.11 References for Chapter 6
7 Run-Time Environments
7.1 Storage Organization
7.2 Stack Allocation of Space
7.3 Access to Nonlocal Data on the Stack
7.4 Heap Management
7.5 Introduction to Garbage Collection
7.6 Introduction to Trace-Based Collection
7.7 Short-Pause Garbage Collection
7.8 Advanced Topics in Garbage Collection
7.9 Summary of Chapter 7
7.10 References for Chapter 7
8 Code Generation
8.1 Issues in the Design of a Code Generator
8.2 The Target Language
8.3 Addresses in the Target Code
8.4 Basic Blocks and Flow Graphs
8.5 Optimization of Basic Blocks
8.6 A Simple Code Generator
8.7 Peephole Optimization
8.8 Register Allocation and Assignment
8.9 Instruction Selection by Tree Rewriting
8.10 Optimal Code Generation for Expressions
8.11 Dynamic Programming Code-Generation
8.12 Summary of Chapter 8
8.13 References for Chapter 8
9 Machine-Independent Optimizations
9.1 The Principal Sources of Optimization
9.2 Introduction to Data-Flow Analysis
9.3 Foundations of Data-Flow Analysis
9.4 Constant Propagation
9.5 Partial-Redundancy Elimination
9.6 Loops in Flow Graphs
9.7 Region-Based Analysis
9.8 Symbolic Analysis
9.9 Summary of Chapter 9
9.10 References for Chapter 9
10 Instruction-Level Parallelism
10.1 Processor Architectures
10.2 Code-Scheduling Constraints
10.3 Basic-Block Scheduling
10.4 Global Code Scheduling
10.5 Software Pipelining
10.6 Summary of Chapter 10
10.7 References for Chapter 10
11 Optimizing for Parallelism and Locality
11.1 Basic Concepts
11.2 Matrix Multiply: An In-Depth Example
11.3 Iteration Spaces
11.4 Affine Array Indexes
11.5 Data Reuse
11.6 Array Data-Dependence Analysis
11.7 Finding Synchronization-Free Parallelism
11.8 Synchronization Between Parallel Loops
11.9 Pipelining
11.10 Locality Optimizations
11.11 Other Uses of Affine Transforms
11.12 Summary of Chapter 11
11.13 References for Chapter 11
12 Interprocedural Analysis
12.1 Basic Concepts
12.2 Why Interprocedural Analysis?
12.3 A Logical Representation of Data Flow
12.4 A Simple Pointer-Analysis Algorithm
12.5 Context-Insensitive Interprocedural Analysis
12.6 Context-Sensitive Pointer Analysis
12.7 Datalog Implementation by BDD's
12.8 Summary of Chapter 12
12.9 References for Chapter 12
A A Complete Front End
A.1 The Source Language
A.2 Main
A.3 Lexical Analyzer
A.4 Symbol Tables and Types
A.5 Intermediate Code for Expressions
A.6 Jumping Code for Boolean Expressions
A.7 Intermediate Code for Statements
A.8 Parser
A.9 Creating the Front End
B Finding Linearly Independent Solutions
Index
程序员的数学 本书特色 没有晦涩的公式,只有好玩的数学题。帮你掌握编程所需的“数学思维”。日文版已重印14次!程序员的数学 内容简介 编程的基础是计算机科学,而...
《xHTML+CSS+DreamweaverCS3标准网站构建实例详解》特别适合网站美工、网站前端架构师、网页设计爱好者、Wap页面设计师作为学习W
《组织管理案例与公案教学(第一季)》内容简介:公案教学团队认为,管理知识和管理工具固然重要,但那应该是管理教育之“术”,而
MATLAB金融算法分析实战-基于机器学习的股票量化分析 本书特色 本书全面系统地讲解了MATLAB金融算法设计应用,以及金融数据挖掘中趋向和发展趋势指标,并结...
数据库系统工程师2004至2011年试题分析与解答 本书特色 为帮助考生复习备考,在《数据库系统工程师2004至2011年试题分析与解答》一书中,全国计算机专业...
《销售团队没业绩,如何激励?》内容简介:企业生产的产品或服务能够被用户认可,销售团队起着至关重要的作用;同时销售团队的业绩
Java和Android开发学习指南-(第2版) 本书特色 本书是java语言学习指南,特别针对使用java进行android应用程序开发展开了详细介绍。全书共...
硬件缺陷和软件错误是“技术侦探”的劲敌,它们负隅顽抗,见缝插针。本书提出的九条简单实用的规则,适用于任何软件应用程序和硬
《自然语言处理实战》内容简介:本书将从一个心理模型开始告诉读者计算机是如何阅读和解释语言的;之后,读者将了解如何训练基于Py
《绘生活 会生活》内容简介:这是一本教您用心绘出生活中的美好与感动的书,同时也传递给您一种对待生活的积极态度。本书中没有过多
《WINDOWS游戏编程大师技巧》(第2版)介绍了在Windows环境下进行游戏编程所需用到的各方面知识,作者是著名的游戏开发大师AndrèL
《新媒体写作平台策划与运营》内容简介:本书共分7章。第1章重点介绍了新媒体与自媒体的区别与联系、主流自媒体写作平台及变现途径
VisualBasic程序设计实验教程 本书特色 吴昊编著的《Visual Basic程序设计实验教程》是《Visual Basic程序设计》配套的实验教材,帮...
《悦吃悦瘦》内容简介:本书首先揭开众多的减肥产品的真面目,帮助读者走出减肥的误区,告诉读者如何通过合理饮食来达到减肥的目的
本书系“世纪人文系列丛书”之“袖珍经典”中的一种。所谓分类,是指人们把事物,事件以及有关世界的事实划分成类和种,使之各有
●我们可能视谷歌为救世主,但是它却像恺撒般统治着世界。网络的神话导致我们假设那是个疯狂的、无法管理的领域,这真的是错得离
UI设计作为近两三年新型的设计门类吸引了越来越多的设计师加入其中。与其他设计不同,UI设计师需要更加深入地了解用户心理、技术
《肿瘤居家康复指导》内容简介:本书从专业的角度,阐明了恶性肿瘤患者康复过程中的主要技术与要点,,包括了康复中患者心理、生理
《希利尔讲艺术史》内容简介:你知道为什么古希腊画家笔下的人物一般都是裸体吗? 你知道《最后的晚餐》为什么永远无法在美术馆里展
《或然世界:谁是人工智能画家小冰?》内容简介:本书是部人工智能绘画作品集。人工智能小冰通过对过往400年艺术史上的236位知名人