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
《RubyonRails社区网站开发》全面探讨创建完整社区网站的开发过程。首先介绍开发一个内容简单的管理系统,之后逐渐添加新特性,以
在本书中,Lakos介绍了将大型系统分解成较小且较好管理的组件层次结构(不是继承)的过程。这种具有非循环物理依赖的系统的维护、
《基于投资者关系视角的公司品牌研究》内容简介:上市公司的价值取决于产品市场和资本市场两方面的影响。其在产品市场上取得的品牌
在世界各个危险的海路上航行,需要可靠的设备,磁罗盘因此应运而生。磁罗盘是人类史上最重要的航海装置,本书的目的即是呈现这段
本书是著名软件工程学家IanSommerille系统介绍软件工程理论的经典教材,自1982年初版以来,随着软件工程学科的发展不断更新,培养
精通COBOL:大型机商业编程技术详解(修订版 本书特色 目前市面上有关COBOL书籍多为外文书籍,中文书籍较少。虽然在网上有少数几个关于COBOL方面知识的网...
《庆典舞曲》内容简介:《武汉音乐学院“音乐创作·湖北省协同创新中心”作曲家作品系列·庆典舞曲:钢琴与乐队》作品试图以快速旋
《Flash网站建设技术精粹》并不是一本大而全的图书,而是以Flash网站技术要点为主、注重实用性的一本图书。《Flash网站建设技术精
《牢记使命:中国共产党为什么能砥砺奋进》内容简介:黄相怀著的《牢记使命:中国共产党为什么能砥砺奋进》紧扣党的十九大精神,以
《林汉涛鸡血玉篆刻艺术》内容简介:本书收录了林汉涛2010—2015年间采用硬玉(绝大多数为鸡血玉)创作的篆刻作品六十余件,以及书
微机原理与接口技术-第二版 本书特色 田辉主编的这本《微机原理与接口技术(第2版)》为教育部高等学校电子电气基础课程教学指导分委员会推荐教材。全书共分九章,内容...
《公司的演变》内容简介:这是一个互联网串联的时代。互联网在扶植原有的经济结构和企业盈利模式的同时,也在创造崭新的商业模式。
《游踪行旅亦有趣》内容简介:《游踪行旅亦有趣》中的作品有叙事的、抒情的、释理的,文笔手法细腻,结构顺畅,条理清晰,内容丰富
《华尔街最受欢迎的投资课》内容简介:100多年来,华尔街诞生了数不清的投资大师,如沃伦?巴菲特、彼得?林奇、乔治?索罗斯、本杰明
每一个渴望学习C++语言的初学者都希望能够有一本全面的,实用的,同时又是生动有趣的入门书。这本入门书可以告诉这些初学者,整个
《运营实战指南》架构清晰,前8章主要通过故事形式深入浅出理解运营,将运营基础知识和概念融入到故事中。第9章讲解运营核心方法
《PhotoShopCS2经典UI设计效果表现》由多年从事UI设计的优秀设计师精心编写,结构合理、重点突出、实例丰富、图文并茂,讲解方式
《驾驭独角兽》内容简介:独角兽像中国传统文化中的龙一样是人类丰富想象中最神奇的动物之一。种子轮基金Cowboy Venture的创始人Ai
“观念”是一切行动的开始,《100个改变平面设计的伟大观念》是由当今最顶尖的艺术指导之一、平面设计畅销书作家撰写,让我们轻松
《如何专业做采购》内容简介:作为专业采购必须有能力回答4大核心问题: 为什么选择这家供应商? 为什么是这个价格? 如何通过合同