Skip to product information
Understanding the compiler
Understanding the compiler
Description
Book Introduction
Since a compiler is a system program, it is difficult to understand because it requires knowledge of everything related to the system.
However, this book briefly introduces knowledge related to learning compilers, making it easy to learn.
It consists of a total of 13 chapters. Chapters 1 and 2 provide an overview of the compiler, Chapters 3 and 5 cover the theory of formal languages ​​and automata to explain lexical analyzers and syntax analyzers, and Chapters 4 and 6 to 12 cover each part of the compiler.
Finally, Chapter 13 explains the practical usage of Lex (Flex), a lexical analyzer generator, and Yak (Bison), a syntax analyzer generator.


※ This book was developed as a textbook for university lectures, so it does not provide answers to practice problems.
  • You can preview some of the book's contents.
    Preview

index
Chapter 01 Compiler Overview
01 The Need for a Compiler
02 Programming Language
1. A language for numerical computation
2 Languages ​​for office processing
3 Artificial Intelligence Languages
4 System Programming Languages
5 other languages
6 Basic Concepts of Programming Languages
03 Types of translators

Chapter 02 Structure of a Simple Compiler
01 Logical structure of the compiler
1 Overview
2 Logical structure
02 Physical structure of the compiler

Chapter 03 Formal Languages ​​and Finite Automata
01 Formal language
02 Format Grammar
03 Grammar Notation
1 Regular expression
2 Grammar charts
3 BNF notation
4 EBNF notation
04 Finite Automata
1 Finite Automata
2 Conversion from NFA to DFA
Minimizing the number of states of 3 DFAs
4. Equivalence relations of regular grammars, regular expressions, and finite automata

Chapter 04 Vocabulary Analysis
01 Overview of Lexical Analysis
02 Token Recognition
1 Recognition of identifiers
2 Recognition of reserved words
3 Recognition of integers
4 Recognition of real number constants
5 Comment processing
03 Design and Implementation of a Lexical Analyzer

Chapter 05 Context-Free Grammars and Pushdown Automata
01 Context-free grammar
02 Pastry
03 Ambiguous Grammar
04 Grammar Conversion
1. Removal of unnecessary creation rules
2 Elimination of the ε-generation rule
3 Removal of single generation rules
4 Left factorization
5 Elimination of left recursion
05 Pushdown Automata

Chapter 06 Syntax Analysis
01 Overview of Syntax Analysis
02 Top-down parsing
1 FIRST and FOLLOW
2 Recursive Descent Parsing
3 Predictive Parsing
03 Bottom-up parsing
1. Move-reduce syntax analysis
2 Operator Precedence Parsing
3 LR parsing
04 Use of ambiguous grammar and error handling routines

Chapter 07 Semantic Analysis and Type Inspection
01 Overview of Semantic Analysis
02 Symbol Table
03 Attribute Grammar
Type 04 Inspection
1 Types of data types
Type 2 system
3-type conversion

Chapter 08 Intermediate Language and Intermediate Code Generation
01 Intermediate language
1. The concept of intermediate language
2 Types of intermediate languages
02 Phrase-directive translation
03 Generate intermediate code
1 Logical formula
2 substitution statements

Chapter 09 Structured Data Types and Runtime Environment
01 Structural data types
1 record
2 arrays
02 Memory Configuration
03 Memory Allocation Strategy
1 Static memory allocation
2 Stack memory allocation
3 Heap memory allocation
04 Parameter Passing Method
1 Call value
2 Reference calls
3 Name Call
4 Value-Result Call

Chapter 10 Code Optimization
01 Code Optimization
02 Basic Blocks and Flow Graph
1 basic block
2 Control Flow Graph and DAG
3 Flow Analysis
03 Optimization Techniques
1 Peephole optimization technique
2 Local optimization techniques
3 Loop Optimization Techniques
4 Global Optimization Techniques
5 Machine-dependent optimization techniques

Chapter 11 Optimizing for Parallelism and Locality
01 Parallel processing
1 Parallel processing system
2 Various concepts about parallel processing
02 Data Dependency and Data Dependency Analysis
1 Data dependency
2 Data-dependent analysis
03 Loop Transformation
1 loop fusion
2 loop separation
3 loop reverse
4 loop exchange
5 loop tilt
6 strip mining
7 loop tiling

Chapter 12 Generating Objective Code
01 Concept of Objective Code Generation
02 Tree-pattern matching technique
03 Generate target code
1. Generate object code for arithmetic expressions
2 Generate target code for logical expressions
04 Register Allocation and Assignment
1. Local register allocation and assignment
2 Global register allocation and assignment
3 Register allocation by graph coloring

Chapter 13 Rex and the Yak
01 Rex and Yak
1 Rex
2 yaks
02 Input file formats for Rex and Yak
1 Rex input file format
2 Yak's input file format
03 How to install Flex and Bison
04 How to Use Flex
05 How to Use Bison


Detailed image
Detailed Image 1

Publisher's Review
* Covers only the core of the vast compiler theory.
Since a compiler is a system program, it is difficult to learn because you need to know everything related to the system.
However, this book provides a brief introduction to compiler learning-related knowledge, making it easy to learn.
It consists of a total of 13 chapters. Chapters 1 and 2 provide an overview of the compiler, Chapters 3 and 5 cover the theory of formal languages ​​and automata to explain the lexical analyzer and syntax analyzer, and Chapters 4 and 6 to 12 cover each part of the compiler.
Finally, Chapter 13 explains the practical usage of the lexical analyzer generator, Lex (Flex), and the syntax analyzer generator, Yak (Bison).

* Easy to understand explanations based on the author's experience and knowledge of teaching compilers for over 30 years.
It is very difficult to explain the structure or operation of a compiler.
The author has also been teaching compilers for nearly 30 years, but he wrote this book with great concern about how to explain compilers in a way that makes them a little easier to understand.
Through this book, you will be able to experience the author's experience and knowledge, which has been teaching compilers for over 30 years.


* Covers not only the fundamentals but also the compiler backend techniques (runtime environment and optimization) that are useful in practice.
-.
Code Optimization (Chapter 10)
-.
Optimizing for Parallelism and Locality (Chapter 11)
-.
Generating Object Code (Chapter 12)
-.
Installation and practical use of Flex and Bison (Chapter 13)

GOODS SPECIFICS
- Date of issue: February 20, 2020
- Page count, weight, size: 508 pages | 188*257*35mm
- ISBN13: 9791156644835
- ISBN10: 1156644836

You may also like

카테고리