前辅文
Chapter 1 Introduction
1.1 Language and Mankind
1.2 Language and Computer
1.3 Compilation of Programming Languages
1.4 Number of Passes of Compiler
1.5 An Example of Compilation of a Statement
1.6 Organization of the Book
Problems
References
Chapter 2 Grammars and Languages
2.1 Motivation of the Chapter
2.2 Preliminary Knowledge
2.3 Grammar
2.4 Language
2.5 Language Generated by a Grammar
2.6 Turing Machine
2.7 Issues Concerning Grammars and Languages
Problems
References
Chapter 3 Finite State Automata and Regular Languages
3.1 Motivations of the Chapter
3.2 Languages, Grammars and Automata
3.3 Deterministic Finite Automata
3.4 Nondeterministic Finite Automata
3.5 Regular Expressions
3.6 Regular Grammar
3.7 Kleene's and Moore's Theorems
3.8 Pumping Theorems and Closure Properties for LREG
3.9 Applications of Finite Automata
3.10 Variants of Finite Automata
Problems
References
Chapter 4 Lexical Analysis
4.1 Motivation of the Chapter
4.2 Lexical Analyzer
4.2.1 Role of Lexical Analyzer
4.2.2 Identifier Analysis
4.2.3 Handling of Constants
4.2.4 Structure of Lexical Analyzer
4.3 Output of Lexical Analyzer
4.4 Error Handling
Problems
References
Chapter 5 Push-Down Automata and Context-Free Languages
5.1 Motivation of the Chapter
5.2 Push-Down Automata
5.3 Context-Free Languages (LCF)
5.4 Pumping Theorems for Context-Free Languages
5.5 Push-Down Automata and Context-Free Languages
5.6 Applications of Context-Free Languages
5.7 Turing Machines
5.8 Turing Machines as Language Accepters
5.9 Equivalence of Various Turing Machines
5.10 Recursively Enumerable Languages (LRE)
5.11 Context-Sensitive Languages (Lcs)
5.12 Hierarchy of Machines, Grammars and Languages
5.12.1 Hierarchy of Machines
5.12.2 Hierarchy of Grammars and Languages
5.13 Relations Among Machines, Languages and Grammars
Problems
References
Chapter 6 Context-Free Grammars
6.1 Motivation of the Chapter
6.2 Context-Free Grammars
6.3 Characteristics of Context-Free Grammars
Problems
References
Chapter7 Syntax Analysis
7.1 Motivation of the Chapter
7.2 Role of Syntax Analysis in Compilers
7.3 Methods of Syntax Analysis
7.4 LL(1) Syntactical Analysis Method
7.5 Bottom-Up Syntactical Analysis Method
7.6 LR(1) Syntactical Analysis Method
7.6.1 LR(0) Syntactical Analysis
7.6.2 SLR(1) Syntactical Analysis
7.6.3 LALR(1) Syntactical Analysis
7.6.4 LR(1) Syntactical Analysis
7.6.5 Comparison Between LL(1) Syntactical Analysis Method and LR(1) Syntactical Analysis Method
Problems
References
Chapter 8 Attribute Grammars and Analysis
8.1 Motivation of the Chapter
8.2 Attribute Grammar
8.3 Dependence Graph and Evaluation of Attributes
8.3.1 Dynamic Attribute Evaluation
8.3.2 Loop Handling
8.4 L Attribute Grammas and S Attribute Grammars
Problems
References
Chapter 9 Algebraic Method of Compiler Design
9.1 Motivation of the Chapter
9.2 Source Language
9.3 Algebraic Foundation and Reasoning Language
9.3.1 Algebra Fundamentals
9.3.2 Reasoning Language
9.4 A Simple Compiler
9.4.1 The Normal Form
9.4.2 Normal Form Reduction
9.4.3 The Target Machine
Problems
References
Chapter 10 Generation of Intermediate Code
10.1 Motivation of the Chapter
10.2 Intermediate Code Languages
10.2.1 Graphic Representation
10.2.2 Postfix Representation
10.2.3 The Quadruple Code
Problems
References
Chapter 11 Debugging and Optimization
11.1 Motivation of the Chapter
11.2 Errors Detection and Recovery
11.3 Debugging of Syntax Errors
11.3.1 Error Handling of LL(1) Parser
11.3.2 Error Handling in LR(1) Analysis
11.4 Semantic Error Check
11.5 Optimization of Programs
11.6 Principal Ways of Optimization
11.6.1 Elimination of Subexpressions
11.6.2 Copy Propagation
11.6.3 Dead-Code Elimination
11.6.4 Loop Optimization
11.6.5 Reduction of Strength
Problems
References
Chapter 12 Storage Management
12.1 Motivation of the Chapter
12.2 Global Allocation Strategy
12.3 Algorithms for Allocation
12.3.1 Algorithm for Stack Allocation
12.3.2 Algorithm for Heap Allocation
12.4 Reclamation of Used Space
12.4.1 Basic Garbage Collection Algorithm
12.4.2 Supports to Garbage Collector From Compilers
12.4.3 Reference Counts
12.4.4 Tokens and Scans
12.4.5 Dual Space Copy
12.4.6 Contract
12.5 Parameter Passing
12.5.1 Call-by-Value
12.5.2 Call-by-References
12.5.3 Copy-Restore
12.5.4 Call-by-Name
Problems
References
Chapter 13 Generation of Object Code
13.1 Motivation of the Chapter
13.2 Issues of Design of Generators of Target Codes
13.2.1 Input of Code Generators
13.2.2 Target Programs
13.2.3 Storages Management
13.2.4 Selection of Instructions
13.2.5 Register Allocation
13.2.6 Selection of Order of Computation
13.2.7 Method of Generation of Codes
13.3 Target Machine MMIX
13.3.1 Binary Bits and Bytes
13.3.2 Memory and Registers
13.3.3 Instructions
13.3.4 Load and Store
13.3.5 Arithmetic Operations
13.3.6 Conditional Instructions
13.3.7 Bit Operations
13.3.8 Byte Operations
13.3.9 Jumps and Branches
13.3.10 Subprogram Calls
13.3.11 Interruptions
13.4 Assembly Language of MMIX
13.5 Generation of MMIXAL Target Codes
13.5.1 Translation of Expressions in Reversed Polish Form
13.5.2 Translation of Triple Expressions
13.5.3 Translation of Expression Quadruples
13.5.4 Translation of Expressions
13.5.5 Translation of Syntax Tree Form of Expressions
13.5.6 Translation of Various Statements
Problems
References
Chapter 14 Compilation of Object-oriented Languages
14.1 Motivation of the Chapter
14.2 Objects and Compilation
14.3 Characteristics of Objects
14.3.1 Inheritance
14.3.2 Method Overload
14.3.3 Polymorphic
14.3.4 Dynamic Constraint
14.3.5 Multiple Inheritances
14.3.6 Multiple Inheritances of Inter-reliance
Problems
References
Chapter 15 Compilation of Parallel Languages
15.1 Motivation of the Chapter
15.2 Rising of Parallel Computers and Parallel Computation
15.3 Parallel Programming
15.3.1 Shared Variables and Monitors
15.3.2 Message Passing Model
15.4 Object-oriented Languages
15.5 Linda Meta Array Space
15.6 Data Parallel Languages
15.7 Code Generation for Hidden Parallel Programs
15.7.1 Types of Regions
15.7.2 Formation of Regions
15.7.3 Schedule Algorithms for Regions
Problems
References
Chapter 16 Compilation of Grid Computing
16.1 Motivation of the Chapter
16.2 Rising of Grid Computing and Intent
16.3 Grid Computing Model
16.3.1 Group Routing
16.3.2 Routing in Linear Array
16.4 Compilation of Grid Computing
Problems
References
Index