Crafting a Compiler With C (Hardcover)

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解析。

 

 

Shift-Reduce解析器。

Lr解析器。

Lr(1)解析。

Slr(1)解析。

Lalr(1)。

在Shift-Reduce解析器中調用語義例程。

使用解析器生成器。

優化解析表。

實際Lr(1)解析器。

Lr解析器的特性。

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

其他Shift-Reduce技術。

練習題。



語義處理。

 

 

語法導向翻譯。

語義處理技術。

中間表示和代碼生成。

練習題。



符號表。