編譯原理

班曉娟、王笑琨、張雅斕、姚超、汪雲海

  • 出版商: 清華大學
  • 出版日期: 2024-09-01
  • 定價: $408
  • 售價: 8.5$347
  • 語言: 簡體中文
  • ISBN: 7302670188
  • ISBN-13: 9787302670186
  • 相關分類: Compiler
  • 下單後立即進貨 (約4週~6週)

  • 編譯原理-preview-1
  • 編譯原理-preview-2
  • 編譯原理-preview-3
編譯原理-preview-1

相關主題

商品描述

"本書全面介紹編譯器的設計與實現。本書共13章,分為3個模塊,以編譯器的基礎知識作為起點,深入探討詞法分析、語法分析、語義分析、中間代碼生成、代碼優化和目標代碼生成等核心主題。本書還涵蓋了編譯器技術的應用、文法和語言的理論基礎、編譯器的構造技術、運行時存儲空間的組織和管理、源程序的中間形式以及錯誤處理技術等內容。通過本書,讀者不僅能夠掌握編譯器的工作流程,理解不同編程語言的編譯原理,還能深入瞭解編譯技術在高級語言實現、電腦體系結構優化、程序翻譯等領域的應用,能夠應用所學知識構建簡單的編譯器。書中包含大量示例和習題,以幫助讀者加深理解和提升實踐操作能力。 本書適合作為高等學校電腦科學與技術、軟件工程等專業的教材,同時可供編譯器研究者和開發者參考。 "

目錄大綱

目錄

模塊1引論和基本概念

第1章引論3

1.1編譯器技術的應用4

1.1.1高級語言的實現4

1.1.2針對電腦體系結構的優化6

1.1.3新電腦體系結構的設計7

1.1.4程序翻譯8

1.1.5編譯器相關的建模及科學9

1.1.6程序設計語言的部分特性11

1.1.7提高軟件開發效率的工具18

1.2編譯器概述20

1.2.1詞法分析21

1.2.2語法分析22

1.2.3語義分析23

1.2.4中間代碼生成23

1.2.5代碼優化24

1.2.6代碼生成24

1.2.7符號表管理25

1.2.8階段的分組25

1.2.9解釋器26

1.2.10編譯器的生成與構造27

小結29

習題130

拓展閱讀: 深度學習編譯器30第2章文法和語言34

2.1預備知識35

2.1.1字母表35

2.1.2符號串35

2.2文法的非形式討論36

2.3文法和語言的形式定義40

2.4語法樹與二義性文法42

2.4.1語法樹的概念42

2.4.2二義性與最左(最右)推導42

2.4.3子樹與短語、句柄43

2.4.4抽象語法樹46

2.5句子的分析47

2.6有關文法的實用限制49

2.7文法的其他表示法: EBNF和語法圖50

2.8文法和語言的分類52

2.9文法構造與文法化簡56

2.9.1由語言構造文法的例子56

2.9.2文法的化簡59

2.9.3構造無ε產生式的上下文無關文法60

小結62

習題263

拓展閱讀: 非喬姆斯基的兩種語法與Chart分析算法65

模塊2編譯器的構造技術

第3章詞法分析概述及詞法分析器的人工實現73

3.1詞法單元及屬性73

3.1.1詞法單元、模式、詞素73

3.1.2詞法單元的屬性74

3.1.3詞法錯誤 75

3.2輸入緩沖75

3.2.1緩沖區對76

3.2.2哨兵標記77

3.3詞法單元的描述與識別78

3.3.1串和語言78

3.3.2正則表達式79

3.3.3正則定義81

3.3.4正則文法和正則式的等價性82

3.3.5狀態轉換圖83

小結87

習題387

拓展閱讀: 正則表達式的擴展與漢語詞法分析89第4章語法分析概述及遞歸子程序法94

4.1語法分析概述94

4.1.1上下文無關文法的定義95

4.1.2推導96

4.1.3分析樹97

4.1.4二義性98

4.1.5驗證文法生成的語言100

4.1.6非上下文無關語言的構造100

4.2自上而下分析101

4.2.1自上而下分析的一般方法102

4.2.2存在問題及解決方法106

4.3遞歸下降分析法107

小結 110

習題4110

拓展閱讀: 遞歸子程序的應用112第5章符號表管理115

5.1概述115

5.2符號表的組織和內容116

5.3非分程序結構語言的符號表組織119

5.4分程序結構語言的符號表組織120

小結121

習題5122

拓展閱讀: Open64的符號表設計123第6章運行時存儲空間的組織和管理129

6.1概述129

6.2靜態存儲分配131

6.3動態存儲分配132

6.4面向對象語言的存儲分配策略141

6.4.1類和對象141

6.4.2面向對象程序運行時的特徵141

6.4.3對象的存儲組織142

6.4.4例程的動態綁定143

小結145

習題6146

拓展閱讀: 垃圾回收152第7章源程序的中間形式157

7.1波蘭表示158

7.2n元表示159

7.2.1四元式161

7.2.2三元式161

7.2.3靜態單賦值形式162

7.3圖形表示163

7.3.1抽象語法樹163

7.3.2有向無環圖164

7.4抽象機代碼166

小結167

習題7168

拓展閱讀: LLVM和LLVM IR170第8章錯誤處理172

8.1概述172

8.2錯誤分類173

8.3錯誤的診察和報告174

8.4錯誤處理技術174

8.4.1詞法錯誤的恢復和校正176

8.4.2語法錯誤的恢復和校正176

8.4.3語義錯誤的恢復和校正177

小結178

習題8179

拓展閱讀: 中文錯誤處理179第9章語法制導翻譯技術181

9.1翻譯文法和語法制導翻譯182

9.2屬性翻譯文法185

9.3自上而下語法制導翻譯190

9.3.1遞歸下降翻譯器191

9.3.2LL(1)翻譯器195

小結198

習題9199

拓展閱讀: 前沿語法制導翻譯技術200第10章語義分析和代碼生成202

10.1語義分析的概念203

10.2棧式抽象機及其匯編指令204

10.3聲明的處理207

10.3.1符號常量的處理207

10.3.2簡單變量的處理208

10.3.3數組的處理210

10.4表達式的處理211

10.5賦值語句的處理215

10.6控制語句的處理217

10.6.1if語句的處理217

10.6.2while語句的處理219

10.6.3for語句的處理221

10.7過程調用和返回的處理223

小結227

習題10228

拓展閱讀: 自然語言處理229

模塊3編譯前段分析及其自動化生成技術

第11章詞法分析器的自動生成技術233

11.1有限自動機233

11.1.1不確定的有限自動機235

11.1.2確定的有限自動機237

11.1.3NFA到DFA的轉換238

11.1.4DFA的化簡242

11.2從正則表達式到有限自動機243

11.3從正則文法到有限自動機248

11.4詞法分析器生成工具Lex249

小結252

習題11253

拓展閱讀: 有限自動機的應用257第12章語法分析及自動生成技術261

12.1自上而下分析261

12.1.1自上而下分析的一般方法262

12.1.2消除左遞歸264

12.1.3提取左公因子266

12.1.4LL(1)文法266

12.1.5遞歸下降的預測分析268

12.1.6非遞歸的預測分析269

12.1.7構造分析表271

12.1.8預測分析的錯誤恢復272

12.2自下而上分析275

12.2.1歸約275

12.2.2句柄276

12.2.3用棧實現移進歸約分析277

12.2.4移進歸約分析的沖突278

12.3自下而上優先分析279

12.3.1簡單優先分析法279

12.3.2運算符優先分析法282

12.3.3運算符優先分析算法290

12.3.4優先函數292

12.3.5運算符優先分析法的局限性296

小結297

習題12298

拓展閱讀: 實際應用中語法分析器所面臨的困境302第13章自下而上語法分析——LR(k)分析方法309

13.1LR分析器310

13.1.1LR分析算法310

13.1.2LR文法和LR分析方法的特點318

13.2SLR分析319

13.3規範的LR分析322

13.3.1規範LR(1)項322

13.3.2構造LR(1)項集族323

13.3.3規範LR(1)語法分析表325

13.4LALR分析327

13.4.1LALR分析表的構造327

13.4.2高效構造LALR語法分析表的方法330

13.5非二義且非LR的上下文無關文法334

13.5.1用優先級和結合性解決沖突335

13.5.2懸空else的二義性337

13.6語法分析表的自動生成339

13.6.1終結符和產生式的優先級339

13.6.2結合規則339

13.6.3LR語法分析表的安排342

13.7語法分析器的生成器343

13.7.1分析器的生成器yacc343

13.7.2用yacc處理二義文法346

13.7.3yacc的錯誤恢復348

小結349

習題13350

拓展閱讀: GLR算法與基於統計的語法分析算法353參考文獻358