Compilers - Principles, Techniquies, and Tools (Contents)

DPOS·2021년 9월 13일
2

dragon

목록 보기
1/1
post-thumbnail

※ 들어가기에 앞서 글의 내용은 지극히 주관적으로 해석되어 들어갈 수 있다는 점 양해바랍니다※

Contents - [Linking]

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 notes

2. 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 notes

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 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 notes

4. 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 notes

5. 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 notes

6. 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 notes

7. 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 notes

8. 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 notes

9. 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 notes

10. 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 notes

11. 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

읽는대로 올리고 링크걸겠습니다.

profile
본인 전공빼고 다 하는 사람

0개의 댓글