※ 들어가기에 앞서 글의 내용은 지극히 주관적으로 해석되어 들어갈 수 있다는 점 양해바랍니다※
1. Introduction to Compiling
- 1.1 Compilers
- 1.2 Analysis of the source program
- 1.3 The phases of a compiler
- 1.4 Cousins of the compiler
- 1.5 The grouping of phases
- 1.6 Compiler-construction tools
Bibliographic notes2. A Simple One-Pass Compiler
- 2.1 Overview
- 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 Incorporating a symbol table
- 2.8 Abstract stack machines
- 2.9 Putting the techniques together
Exercises
Bibliographic notes3. 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 A language for specifying lexical analyzers
- 3.6 Finite automata
- 3.7 From a regular expression to an NFA
- 3.8 Design of a lexical analyzer generator
- 3.9 Optimization of DFA-based pattern matchers
Exercises
Bibliographic notes4. Syntax Analysis
- 4.1 The role of the parser
- 4.2 Context-free grammars
- 4.3 Writing a grammar
- 4.4 Top-down parsing
- 4.5 Bottom-up parsing
- 4.6 Operator-precedence parsing
- 4.7 LR parsers
- 4.8 Using ambiguous grammars
- 4.9 Parser generators
Exercises
Bibliographic notes5. Syntax-Directed Translation
- 5.1 Syntax-directed definitions
- 5.2 Construction of syntax trees
- 5.3 Bottom-up evaluation of S-attributed definitions
- 5.4 L-attributed definitions
- 5.5 Top-down translation
- 5.6 Bottom-up evaluation of inherited attributes
- 5.7 Recursive evaluators
- 5.8 Space for attribute values at compile time
- 5.9 Assigning space at compiler-construction time
- 5.10 Analysis of syntax-directed definitions
Exercises
Bibliographic notes6. Type Checking
- 6.1 Type systems
- 6.2 Specification of a simple type checker
- 6.3 Equivalence of type expressions
- 6.4 Type conversions
- 6.5 Overloading of functions and operators
- 6.6 Polymorphic functions
- 6.7 An algorithm for unification
Exercises
Bibliographic notes7. Run-Time Environments
- 7.1 Source language issues
- 7.2 Storage organization
- 7.3 Storage-allocation strategies
- 7.4 Access to nonlocal names
- 7.5 Parameter passing
- 7.6 Symbol tables
- 7.7 Language facilities for dynamic storage allocation
- 7.8 Dynamic storage allocation techniques
- 7.9 Storage allocation in Fortran
Exercises
Bibliographic notes8. Intermediate Code Generation
- 8.1 Intermediate languages
- 8.2 Declarations
- 8.3 Assignment statements
- 8.4 Boolean expressions
- 8.5 Case statements
- 8.6 Backpatching
- 8.7 Procedure calls
Exercises
Bibliographic notes9. Code Generation
- 9.1 Issues in the design of a code generator
- 9.2 The target machine
- 9.3 Run-time storage management
- 9.4 Basic blocks and flow graphs
- 9.5 Next-use information
- 9.6 A simple code generator
- 9.7 Register allocation and assignment
- 9.8 The dag representation of basic blocks
- 9.9 Peephole optimization
- 9.10 Generating code from dags
- 9.11 Dynamic programming code-generation algorithm
- 9.12 Code-generator generators
Exercises
Bibliographic notes10. Code Optimization
- 10.1 Introduction
- 10.2 The principal sources of optimization
- 10.3 Optimization of basic blocks
- 10.4 Loops in flow graphs
- 10.5 Introduction to global data-flow analysis
- 10.6 Iterative solution of data-flow equations
- 10.7 Code-improving transformations
- 10.8 Dealing with aliases
- 10.9 Data-flow analysis of structured flow graphs
- 10.10 Efficient data-flow algorithms
- 10.11 A tool for data-flow analysis
- 10.12 Estimation of types
- 10.13 Symbolic debugging of optimized code
Exercises
Bibliographic notes11. Want to Write a Compiler?
- 11.1 Planning a compiler
- 11.2 Approaches to compiler development
- 11.3 The compiler-development environment
- 11.4 Testing and maintenance
12. A Look at Some Compilers
- 12.1 EQN, a preprocessor for typesetting mathematics
- 12.2 Compilers for Pascal
- 12.3 The C compilers
- 12.4 The Fortran H compilers
- 12.5 The Bliss/11 compiler
- 12.6 Modula-2 optimizing compiler
Appendix A Compiler Project
- A.1 Introduction
- A.2 A Pascal subset
- A.3 Program structure
- A.4 Lexical conventions
- A.5 Suggested exercises
- A.6 Evolution of the interpreter
- A.7 Extensions
Bibliography
Index
읽는대로 올리고 링크걸겠습니다.