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电子商务实战》全面讲解了使用RubyonRails创建产品级应用程序的过程。书中通过演示构建网上书店的全过程,先后介绍
《因为尽情,所以伤心:纳兰容若传》内容简介:一部真正的纳兰容若人物大传! 一代浊世佳公子的人生传奇! 纳兰诗词赏析的书常有,
在线阅读本书BookDescriptionIDEO,thewidelyadmired,award-winningdesignanddevelopmentfirm...
计算机图形学 内容简介 本书全面介绍计算机图形学的系统组成、图形生成与显示算法以及交互实现技术。主要内容包括计算机图形系统、基本光栅图形生成技术、图形变换、交互...
Thedreamofautomaticlanguagetranslationisnowcloserthankstorecentadvancesinthetech...
“你不是个玩意儿。”这句话当然不是骂人,这是一个宣言。人当然不是玩意儿,不是机器,而是人。在网络化程度越来越高的今天,我
关东升国内知名iOS技术作家,iOS技术顾问,高级培训讲师,移动开发专家。精通iOS、Android和WindowsPhone及HTML5等移动开发技术。
《刘邦为什么能赢项羽》内容简介:◆ 刘邦为什么能赢项羽?因为他既丢得起脸,又狠得下心! ◆ 听萧何的话,收获大将韩信;丢得起脸
《杨司令的少先队》内容简介:本书收录了郭墟的四部小说;《杨司令的少先队》反映东北抗日联军司令杨靖宇领导下的一支儿童战斗队朝
ATheoryofFunforGameDesignisnotyourtypicalhow-tobook.Itfeaturesanovelwayofteachin...
網路提供一個讓我們負責自己生活的機會,也讓我們得以重新定義我們在全球社會和在地社群中的雙重公民角色。此外,網路交給我們責
《药味集》内容简介:周氏散文风格向被形容为“闲适”,在他看来这可分为“小闲适”与“大闲适”,后者即“唯其无奈何所以也就不必
SPSS数据分析-问题提出与实例导学 本书特色 《SPSS数据分析:问题提出与实例导学》由中国水利水电出版社出版。SPSS数据分析-问题提出与实例导学 目录 前...
《VC++深入详解》主要从程序内部运行的机制和MFC程序的组织脉络入手,使读者在学习VC++编程知识时,既能够知其然,又能知其所以然
MATLAB图像与视频处理实用案例详解 本书特色 《matlab图像与视频处理实用案例详解》详细讲解了25个matlab图像与视频处理实用案例(含可运行程序),...
《村落效应》内容简介:面对面的接触是作为社会性动物的人类古老、深刻的需求。在互联网时代,社交媒体已经成为人际沟通的主体,人
浪潮之巅:全2册 本书特色 《浪潮之巅(第3版)》不是一本科技产业发展历史集,而是在这个数字时代,一本it人非读不可,而非it人也应该拜读的作品。一个企业的发展...
《肌肉训练实战宝典》内容简介:《肌肉训练实战宝典》是专为期望快速训练肌肉的读者所设计的入门级图书。通过专业教练的详细演示,
《3ds Max/VRay材质、灯光与渲染实战从入门到精通》内容简介:本书基于3ds Max和VRay,全面介绍在室内效果图制作中遇到的各种常用材
Theseproceedingswillbeofinteresttoscientistsandresearchersdealingwithlaserapplic...