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
《15天学会JavaScript(视频教学版)》内容简介:本书从技术和实际应用场景相结合的角度出发,结合当下热门技术(JavaScript、ECMA
《大学生心理健康》内容简介:近年来,大学生中存在的心理障碍问题日益受到社会的关注,为了帮助大学生尽快适应大学的学习和生活,
《深度学习:核心技术、工具与案例解析》内容简介:本书由微软亚洲研究院的资深AI工程师撰写,是一本面向初学者的、以实战为导向的
《LTE无线网络优化实践》内容简介:本书从LTE无线网络优化基本原理的角度出发,侧重于LTE无线网络优化实施中遇到的常见问题优化方法
[内容简介] 洞察社交网络必读之作,本书深度剖析社交网络引发的三大现象,全面解读社交网络给我们生活、工作和世界带来的伟大变
《曾国藩那套本事》内容简介:本书是一部汇集曾国藩做人做事智慧的成功学全书,将其做人做事的思想精华有机结合,揭示了曾国藩成为
《网页艺术设计》将软件技术与艺术理论进行整合,注重知识性与研究性、实践性与理论性、系统性与逻辑性,全面介绍网页艺术设计的
《AI的25种可能》内容简介:世界上最聪明的网站Edge,每年一次,让100位全球最伟大的头脑坐在同一张桌子旁,共同解答关乎人类命运的
《数据保护:工作负载的可恢复性》内容简介:本书覆盖了当今数据保护领域的各个方面。本书会告诉你如何为组织设计出合适的数据保护
ThisbookintroducestheOSMproject,itsaimsandobjectives,anditshistory,thenguidesyou...
您想源源不断地汲取创作灵感并极大地提高工作效率吗?《中文版PhotoshopCS5技法精粹:以假乱真的艺术(第6版)》将助您实现这一梦
这本书全面阐述了专业主页设计的原则,并以50个著名网站主页为例,生动地讲解了遵循这些原则所带来的好处或违背这些原则所产生的
《明代文学思想史(全二册)》内容简介:《明代文学思想史》是对整个明代的文学思想进行系统阐述的专著。明代是一个文学思想相当活
《八万里路云和月》内容简介:全书共分为三篇。上篇“通榆‘触网’之路”,作者以半自传的形式回顾了通榆电商品牌成长历程。从零开
Matlab微分方程高效解法:谱方法原理与实现 本书特色 本书详细阐述了谱方法基本原理、重要技巧,同时着重介绍了它的matlab实现。结合不同的边界条件(周期性...
WelcometotheVisionRevolution.WithMicrosoftsKinectleadingtheway,youcannowuse3Dcom...
Weliveinanewageforstatisticalinference,wheremodernscientifictechnologysuchasmicr...
《幸福,从看见自己开始》内容简介:书中探讨了现代人普遍存在的安全感、自我价值感、亲密关系、金钱观、孤独与自由等社会话题。两
《现代性的谱系》内容简介:本书从错综复杂的现代性图谱中抽离出“世俗趣味”“工具理性”“个性表现”三种典型取向,并将“自由主
《C语言程序设计》内容简介:本书对C语言做了全面、详细、系统的介绍,全书共分十二个项目,按照程序设计的知识体系,由浅入深、循