Crafting a Compiler With C (Hardcover)
暫譯: 使用 C 語言編寫編譯器 (精裝版)

Charles N. Fischer, Richard J. LeBlanc Jr.

買這商品的人也買了...

相關主題

商品描述

 

Table Of Contents

 

(Each chapter contains "Exercises".)
Introduction.

Overview and History.
What Do Compilers Do?
The Structure of a Compiler.
The Syntax and Semantics of Programming Languages.
Compiler Design and Programming Language Design.
Compiler Classifications.
Influences On Computer Design.
Exercises.


A Simple Compiler.

 

The Structure of a Micro Compiler.
A Micro Scanner.
The Syntax of Micro.
Recursive Descent Parsing.
Translating Micro.
Exercises.


Scanning--Theory and Practice.

 

 

Overview.
Regular Expressions.
Finite Automata and Scanners.
Using a Scanner Generator.
Practical Considerations.
Translating Regular Expressions Into Finite Automata.
Exercises.


Grammars and Parsing.

 

 

Context-Free Grammars: Concepts and Notation.
Errors in Context-Free Grammars.
Transforming Extended Bnf Grammars.
Parsers and Recognizers.
Grammar Analysis Algorithms.
Exercises.


Ll(1) Grammars and Parsers.

 

 

The Ll(1) Predict Function.
The Ll(1) Parse Table.
Building Recursive Descent Parsers From Ll(1) Tables.
An Ll(1) Parser Driver.
Ll(1) Action Symbols.
Making Grammars Ll(1) / The If-Then-Else Problem in Ll(1) Parsing.
The Llgen Parser Generator.
Properties of Ll(1) Parsers.
Ll(K) Parsing.
Exercises.


Lr Parsing.

 

 

Shift-Reduce Parsers.
Lr Parsers.
Lr(1) Parsing.
Slr(1) Parsing.
Lalr(1).
Calling Semantic Routines in Shift-Reduce Parsers.
Using a Parser Generator.
Optimizing Parse Tables.
Practical Lr(1) Parsers.
Properties of Lr Parsers.
Ll(1) Or Lalr(1), That Is The Question.
Other Shift-Reduce Techniques.
Exercises.


Semantic Processing.

 

 

Syntax-Directed Translation.
Semantic Processing Techniques.
Intermediate Representations and Code Generation.
Exercises.


Symbol Tables.

 

 

A Symbol Table Interface.
Basic Implementation Techniques.
Block-Structured Symbol Tables.
Extensions to Block-Structured Symbol Tables.
Implicit Declarations.
Overloading.
Forward References.
Summary.
Exercises.


Run-Time Storage Organization.

 

 

Static Allocation.
Stack Allocation.
Heap Allocation.
Program Layout in Memory.
Static and Dynamic Chains.
Formal Procedures.
Exercises.


Processing Declarations.

 

 

Declaration Processing Fundamentals.
Action Routines for Simple Declarations.
Action Routines for Advanced Features.
Exercises.


Processing Expressions and Data Structure References.

 

 

Introduction.
Action Routines for Simple Names, Expressions, and Data Structures.
Action Routines for Advanced Features.
Exercises.


Translating Control Structures.

 

 

If Statements.
Loops.
Compiling Exits.
The Case Statement.
Compiling Goto Statements.
Exception Handling.
Short-Circuit Boolean Expressions.
Exercises.


Translating Procedures and Functions.

 

 

Simple Subprograms.
Passing Parameters to Subprograms.
Processing Subprogram Calls and Parameter Lists.
Subprogram Invocation.
Label Parameters.
Name Parameters.
Exercises.


Attribute Grammars and Multipass Translation.

 

 

Attribute Grammars.
Tree-Structured Intermediate Representations.
Exercises.


Code Generation and Local Code Optimization.

 

 

An Overview.
Register and Temporary Management.
A Simple Code Generator.
Interpretive Code Generation.
Peephole Optimization.
Generating Code From Trees.
Generating Code From Dags.
Code Generator Generators.
Exercises.


Global Optimization.

 

 

An Overview: Goals and Limits.
Optimizing Subprogram Calls.
Loop Optimization.
Global Data Flow Analysis.
Putting it All Together.
Exercises.


Parsing in The Real World.

 

 

Compacting Tables.
Syntactic Error Recovery and Repair.
Exercises.


Appendices.

 

 

A. Definition of Ada/Cs.
B. Scangen.
C. Llgen User Manual.
D. Lalrgen User Manual.
E. Error-Repair Features of Llgen and Lalrgen.
F. Compiler Development Utilities.


Bibliography.

 

 

Index. 0805321667T04062001

 

 


Back to Top

 

 

 


 

Supplements


Instructor Supplements

For more information about any of the supplements listed below, use our Rep. Locator to contact your Addison Wesley representative.

 

 

 


Back to Top
 

 

商品描述(中文翻譯)

 

目錄

 

(每章節包含「練習題」。)

介紹。

概述與歷史。

編譯器的功能是什麼?

編譯器的結構。

程式語言的語法與語意。

編譯器設計與程式語言設計。

編譯器的分類。

對電腦設計的影響。

練習題。



簡單的編譯器。

 

微型編譯器的結構。

微型掃描器。

微型的語法。

遞迴下降解析。

翻譯微型。

練習題。



掃描--理論與實踐。

 

 

概述。

正規表達式。

有限自動機與掃描器。

使用掃描器生成器。

實際考量。

將正規表達式轉換為有限自動機。

練習題。



文法與解析。

 

 

上下文無關文法:概念與符號。

上下文無關文法中的錯誤。

轉換擴展的 Bnf 文法。

解析器與識別器。

文法分析演算法。

練習題。



Ll(1) 文法與解析器。

 

 

Ll(1) 預測函數。

Ll(1) 解析表。

從 Ll(1) 表構建遞迴下降解析器。

Ll(1) 解析器驅動程式。

Ll(1) 行動符號。

使文法成為 Ll(1) / Ll(1) 解析中的 If-Then-Else 問題。

Llgen 解析器生成器。

Ll(1) 解析器的特性。

Ll(K) 解析。

練習題。



Lr 解析。

 

 

移位-歸約解析器。

Lr 解析器。

Lr(1) 解析。

Slr(1) 解析。

Lalr(1)。

在移位-歸約解析器中調用語意例程。

使用解析器生成器。

優化解析表。

實用的 Lr(1) 解析器。

Lr 解析器的特性。

Ll(1) 或 Lalr(1),這是個問題。

其他移位-歸約技術。

練習題。



語意處理。

 

 

語法導向翻譯。

語意處理技術。

中間表示與代碼生成。

練習題。



符號表。

 

 

符號表介面。

基本實現技術。

區塊結構符號表。

對區塊結構符號表的擴展。

隱式聲明。

重載。

前向引用。

總結。

練習題。



執行時存儲組織。

 

 

靜態分配。

堆疊分配。

堆分配。

程式在記憶體中的佈局。

靜態與動態鏈。

正式程序。

練習題。



處理聲明。

 

 

聲明處理基礎。

簡單聲明的行動例程。

進階特性的行動例程。

練習題。



處理表達式與資料結構引用。

 

 

介紹。

簡單名稱、表達式和資料結構的行動例程。

進階特性的行動例程。

練習題。



翻譯控制結構。

 

 

如果語句。

迴圈。

編譯退出。

案例語句。

編譯 Goto 語句。

例外處理。

短路布林表達式。

練習題。



翻譯程序與函數。

 

 

簡單的子程序。

將參數傳遞給子程序。

處理子程序調用與參數列表。

子程序調用。

標籤參數。

名稱參數。

練習題。



屬性文法與多遍翻譯。

 

 

屬性文法。

樹狀中間表示。

練習題。



代碼生成與局部代碼優化。

 

 

概述。

暫存器與臨時管理。

簡單的代碼生成器。

解釋性代碼生成。

窺孔優化。

從樹生成代碼。

從 DAG 生成代碼。

代碼生成器生成器。

練習題。



全局優化。

 

 

概述:目標與限制。

優化子程序調用。

迴圈優化。

全局資料流分析。

將所有內容整合在一起。

練習題。



現實世界中的解析。

 

 

壓縮表。

語法錯誤恢復與修復。

練習題。



附錄。

 

 

A. Ada/Cs 的定義。

B. Scangen。

C. Llgen 使用手冊。

D. Lalrgen 使用手冊。

E. Llgen 和 Lalrgen 的錯誤修復功能。

F. 編譯器開發工具。



參考文獻。

 

 

索引。 0805321667T04062001

 

 



回到頂部

 

 

 



 

補充資料



教師補充資料

如需有關以下任何補充資料的更多信息,請使用我們的 代表定位器 聯繫您的 Addison Wesley 代表。

 

 

 



回到頂部