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
《如戏》内容简介:人生如戏,戏如人生,人生与戏曲互为镜像,于人生中寻觅戏曲意境,于戏曲中印证人生苦乐。这本随笔集是一份女性
《作文课:让创意改变作文》内容简介:读书是为了更好的生活做准备,作文是表达自己的最好方式。本书作者谭旭东老师曾在中小学校举
《黄永玉:把自己活成一部历史》内容简介:黄永玉,土家族,中国画家,现为中央美术学院教授,曾任版画系主任。本书记录了黄永玉耄
《TRIZ:产品创新设计》内容简介:开发出有竞争力的产品,是制造业企业提高自身竞争优势的重要保障因素。在模糊前端和新产品开发、
《ARM嵌入式系统开发:软件设计与优化》从软件设计的角度,全面、系统地介绍了ARM处理器的基本体系结构和软件设计与优化方法。内容
ThisbookwillshowJavadevelopershowtousetheGoogleWebToolkit(GWT)torapidlycreateric...
互联网+金融-互联网金融的革命 本书特色 冉湖、杨其光、鲁威元*的《互联网 金融--互 联网金融的革命》深入剖析当下互联网金融的发展动 态和未来趋势,深度拓宽你...
《劫持》内容简介:《劫持》是一本探讨人与科技的关系的书,基于一位心理学博士20年的临床经验及其作为神经认知科学研究者的脑—电
《区块链》内容简介:区块链技术是21世纪的重大创新技术,它是数字化资产的分布式账本,是构建价值互联网的基石,是驱动分享经济发
《Prometheus监控实战》内容简介:本书由浅入深地对Prometheus进行了全方位的介绍,内容通俗易懂,理论与实践相结合。首先从监控体
《企业迷思:北大管理公开课》内容简介:这本书为作者宋志平在北大光华管理学院MBA讲堂的授课实录,共分战略、管理、创新、文化四个
编辑推荐为什么只因为客户将某个项目交给了设计师,后者就应该为相关信息大声吆喝呢?这种理由是站不住脚的。所以,倒还不如说,设
《林语堂英文译创研究》内容简介:本书首先以译创者主体性研究为起点,将林语堂界定为译创者,分析其在双重身份作用之下的译创动机
《AIoT系统开发》内容简介:本书融合了人工智能和物联网两大热点技术,将人工智能中的优越方法应用到物联网的构建中,以形成更加智
《上海建设全球海洋中心城市发展对策研究报告》内容简介:本书立足于《全国海洋经济发展“十三五”规划》提出的推进上海建设全球海
Python机器学习 本书特色 机器学习与预测分析正在改变企业和其他组织的运作方式,本书将带领读者进入预测分析的世界。全书共13章,除了简要介绍机器学习及Pyt...
《移动App性能评测与优化》内容简介:本书通过六个专题方向介绍腾讯公司移动互联网事业群在移动应用性能评测优化方面的实战经验,涉
More Exceptional C++(英文版) 内容简介 本书以英文版的形式,介绍了MoreExceptionalC,通过40个问题帮助你理解关于C软件设计...
《中国的乡村生活》内容简介:提到中国,农村注定是无法逾越的话题,传统的重农抑商政策长时间将农村置于中心地位,致使最能体现国
《养命之方》内容简介:喜马拉雅FM健康类节目“聊聊张锡纯医案——罗大伦讲名医张锡纯传家食疗方”破亿次播放!传世经典《医学衷中