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
《微信小程序:产品+运营+推广实战》内容简介:微信小程序从满城风雨到掀起创业热潮,再到一直不断地迭代更新,其每一次更新都会增
程序员2007精华本 上下册 本书特色 《程序员》杂志每年末精心打造的“合订本”已经形成一个品牌,得到广大《程序员》杂志的读者和其他对之感兴趣的读者的认可和喜爱...
多尺度图像融合理论与方法 本书特色 多尺度图像融合是图像融合中的一种主流技术,本书作者在多领域探讨了这种理论与方法的应用前景,值得关注。多尺度图像融合理论与方法...
《简笔画5000例,一本就够(动物篇)》内容简介:简笔画几乎是每个人孩提时代绘画生涯的开始。简单的线条,可爱的形状,总是能释放
数字冲击波 本书特色 《数字冲击波》:“多媒体之父”哈威·费舍先生经典之作。数字冲击波 内容简介 简介哈威·费舍认为,在人类历史上,数字革命是了个确定以及决定性...
《寂静狂欢 哥特式黑白插画绘制教程》内容简介:我们熟悉的很多插画、漫画作品中都有一些华丽、繁复、色调极暗的元素,它们也经常出
《传统道德与中华人文精神》内容简介:人性、处世、处己、处人的人生观,义利、公私、理欲、德才的价值观,孝、忠、仁、义、礼、智
《世界文明孤独史(上下册)》内容简介:本书旨在探索世界诸文明包括华夏文明的根源,凭借史前灵知体系(包括灵知义理、灵知神话、
Swift细致入门与最佳实践 本书特色 本书基于稳定版本的swift 2.0进行讲解,详细介绍了开发swift应用程序的知识点。本书共分25章,循序渐进地...
《大道PHP:LAMP+Zend+开源框架整合开发与实战》以PHP应用程序开发为主题,对实践中必不可少的各项重要技术进行了全面介绍与系统
《无人机摄影与摄像从新手到高手》内容简介:本书根据20万学员喜欢的无人机摄影技巧,由两位资深的航拍摄影师分五部分内容编写而成
UNIX操作系统教程(第3版) 内容简介 本教材第3版修订中删减了第2版中一些过时的unix技术和描述,增加了针对linux系统设计技术和使用技术的阐述,增加了...
《川味人间》内容简介:本书是央视热映大型美食纪录片《川味》顾问曾颖最新力作。作者用54道菜肴,30余幅手绘画,书写舌尖上的人间
ThelatesteditionofthisclassicisupdatedwithnewproblemsetsandmaterialTheSecondEdit...
《JavaWeb开发与实战》为您呈现的是“图书详解+多媒体视频+网站技术支持”三位一体式学习环境。图书详解:《JavaWeb开发与实战》
计算机绘图AutoCAD2005-2007中文版 内容简介 本书以AutoCAD 2005中文版为基础,详细介绍了AutoCAD平面绘图、三维立体建模和灯光、材...
《从解构到建构——后现代思想和理论的系谱研究》内容简介:本书在综合考察后现代发展的基本线索、分析各种代表性流派的基础上,提
“即便我已经使用Erlang多年,在编程的时候仍然需要参考《Erlang编程指南》。不同层次的Erlang程序员都会发现本书是有价值的学习
Inordertounderstandtheframeworkinthecontextofareal-worldapplication,weneedtobuil...
电脑入门-早该这样学-附1CD价格 本书特色 采用“图上标注+操作步骤”的全新写作方式,结合工作与生活中的实际应用电脑入门-早该这样学-附1CD价格 内容简介 ...