編譯原理簡明教程(第3版)

馮秀芳 等

  • 出版商: 電子工業
  • 出版日期: 2024-07-01
  • 定價: $414
  • 售價: 8.5$352
  • 語言: 簡體中文
  • 頁數: 320
  • ISBN: 7121484242
  • ISBN-13: 9787121484247
  • 相關分類: Compiler
  • 下單後立即進貨 (約4週~6週)

商品描述

本書討論了編譯原理的基礎理論與實現技術,並在其前幾版的基礎上進行了修訂與更新。本書共13章,內容包括編譯概述、形式語言與自動機理論基礎、詞法分析、語法分析、語義分析及中間代碼生成、代碼優化、目標代碼的生成、符號表和出錯處理、面向對象語言的編譯、並行編譯技術、軟件構造等。在內容的組織上,本書將編譯的基本理論和具體的實現技術有機地結合起來,清楚地闡述相關的概念和原理,並給出部分C語言實現程序;同時,對編譯程序自動生成工具的功能和使用方法做了詳細的介紹。本書提供免費電子課件。

目錄大綱

目 錄
第1章 概述 1
1.1 程序設計語言與翻譯 1
1.1.1 程序設計語言 1
1.1.2 編譯程序和解釋程序 2
1.2 編譯過程概述 3
1.2.1 編譯程序的工作過程 3
1.2.2 編譯程序的結構 7
1.3 編譯程序的開發 7
1.3.1 編譯程序的開發步驟 8
1.3.2 編譯程序的開發技術 8
1.3.3 編譯程序的自動生成 10
1.4 本章小結 10
習題1 11
第2章 形式語言理論基礎 12
2.1 形式語言的基本概念 12
2.1.1 符號和符號串 12
2.1.2 符號串的運算 13
2.1.3 符號串集合的運算 15
2.2 文法和語言的形式定義 16
2.2.1 文法的形式定義 16
2.2.2 形式語言的定義 19
2.3 語法樹和二義性 22
2.3.1 語法樹和推導 22
2.3.2 文法的二義性 25
2.4 文法的限制 28
2.4.1 文法的實用限制 28
2.4.2 文法的等價變換 31
2.4.3 擴充的BNF表示法 33
2.5 文法和語言的Chomsky分類 34
2.5.1 0型文法與0型語言(對應圖靈機) 34
2.5.2 1型文法與1型語言(對應線性界限自動機) 35
2.5.3 2型文法與2型語言(對應下推自動機) 35
2.5.4 3型文法與3型語言(對應有限自動機) 36
2.5.5 四類文法的關系和區別 37
2.6 本章小結 38
習題2 38
第3章 自動機理論基礎 40
3.1 有限自動機的基本概念 40
3.1.1 有限自動機的定義及表示法 40
3.1.2 有限自動機的機器模型 43
3.1.3 確定有限自動機(DFA) 43
3.1.4 有限自動機在電腦內的表示 44
3.1.5 不確定有限自動機(NFA) 45
3.1.6 由NFA到DFA的等價轉換 47
3.2 確定有限自動機DFA的化簡 50
3.2.1 等價狀態和無關狀態 50
3.2.2 自動機的化簡 51
3.3 正則表達式形式定義 53
3.4 下推自動機PDA 54
3.4.1 下推自動機的機器模型 54
3.4.2 PDA的形式定義 55
3.5 本章小結 57
習題3 57
第4章 詞法分析 59
4.1 詞法分析概述 59
4.1.1 詞法分析的功能 59
4.1.2 詞法分析的兩種處理結構 59
4.1.3 單詞符號的種類 60
4.1.4 詞法分析程序的輸出形式 60
4.2 詞法分析程序 61
4.2.1 詞法分析程序的設計與實現 61
4.2.2 單詞的識別 61
4.2.3 無符號數的識別 65
4.2.4 標識符的識別 66
4.3 詞法分析程序的自動生成 68
4.3.1 基本思想 68
4.3.2 Lex源程序結構 69
4.3.3 Lex編譯程序工作過程 71
4.3.4 Lex的實現 71
4.3.5 Lex的使用方式 72
4.4 本章小結 72
習題4 73
第5章 語法分析——自頂向下分析方法 74
5.1 自頂向下語法分析技術 74
5.1.1 自頂向下語法分析思想 75
5.1.2 三種終結符號集 76
5.1.3 自頂向下語法分析難點 78
5.1.4 確定的自頂向下語法分析思想 80
5.2 LL(K)語法分析方法 80
5.2.1 LL(1)語法分析思想 80
5.2.2 LL(1)語法分析方法的邏輯結構 81
5.2.3 LL(1)語法分析方法 81
5.3 遞歸下降語法分析方法 88
5.3.1 遞歸下降語法分析方法的實現思想 88
5.3.2 遞歸子程序及其性質 89
5.3.3 遞歸下降語法分析方法處理示例 90
5.4 本章小結 95
習題5 95
第6章 語法分析——自底向上分析方法 97
6.1 自底向上語法分析技術 97
6.1.1 自底向上語法分析思想 97
6.1.2 自底向上分析難點 99
6.2 自底向上優先分析方法 99
6.2.1 簡單優先分析方法 100
6.2.2 算符優先分析方法 102
6.3 LR(K)分析方法 112
6.3.1 LR分析思想及邏輯結構 113
6.3.2 LR(0)分析方法 116
6.3.3 SLR(1)分析方法 124
6.3.4 LR(1)分析方法 127
6.3.5 LALR(1)分析方法 131
6.4 本章小結 136
習題6 136
第7章 語義分析及中間代碼生成 138
7.1 語義分析概述 138
7.1.1 語義分析的概念 138
7.1.2 屬性文法技術 140
7.2 中間語言代碼 142
7.2.1 抽象語法樹 142
7.2.2 逆波蘭表示 144
7.2.3 四元式 147
7.2.4 三元式 150
7.3 語法制導翻譯 154
7.3.1 表達式的翻譯 154
7.3.2 說明語句的翻譯 158
7.3.3 賦值語句的翻譯 161
7.3.4 控制語句的翻譯 161
7.4 本章小結 164
習題7 165
第8章 代碼優化 167
8.1 代碼優化概述 167
8.1.1 代碼優化的定義 167
8.1.2 代碼優化的分類 167
8.1.3 優化技術簡介 168
8.2 局部優化 171
8.2.1 基本塊的劃分 171
8.2.2 基本塊的DAG表示 173
8.2.3 基本塊優化的實現 176
8.3 循環優化 177
8.3.1 循環的查找 177
8.3.2 循環優化的實現 178
8.4 本章小結 182
習題8 182
第9章 目標代碼的生成 184
9.1 目標代碼生成概述 184
9.1.1 目標代碼 185
9.1.2 寄存器分配 185
9.2 一個電腦模型——虛擬機 186
9.2.1 虛擬機 186
9.2.2 虛擬機的匯編指令 187
9.3 從中間代碼生成目標代碼 189
9.3.1 從逆波蘭表示生成目標代碼 189
9.3.2 從四元式序列生成目標代碼 192
9.4 目標程序運行時的存儲管理 192
9.4.1 程序運行時的存儲組織 193
9.4.2 靜態存儲分配 194
9.4.3 棧式動態存儲分配 195
9.4.4 堆式動態存儲分配 198
9.5 本章小結 200
習題9 201
第10章 符號表和出錯處理 202
10.1 符號表的結構與存放 202
10.1.1 符號表的組織與內容 202
10.1.2 線性符號表 204
10.1.3 有序符號表 204
10.1.4 散列符號表 205
10.1.5 棧式符號表 206
10.2 符號表的管理 208
10.2.1 符號表的建立 208
10.2.2 符號表的查填 209
10.3 程序的錯誤 210
10.3.1 錯誤存在的必然性 210
10.3.2 錯誤的種類 211
10.3.3 錯誤復原 212
10.4 出錯處理 213
10.4.1 詞法錯誤的處理 213
10.4.2 語法錯誤的處理 214
10.4.3 語義錯誤的處理 216
10.5 本章小結 218
習題10 218
第11章 面向對象語言的編譯 220
11.1 概述 220
11.1.1 面向對象語言的基本特徵 220
11.1.2 類和成員的屬性構造 222
11.1.3 面向對象編譯程序的特點 225
11.2 面向對象語言的語法結構 226
11.2.1 單一繼承 226
11.2.2 多重繼承 228
11.2.3 多態性 229
11.2.4 動態綁定 230
11.2.5 接口類型 230
11.3 面向對象的動態存儲分配 231
11.3.1 對象的存儲區管理方式 231
11.3.2 靜態模型和棧式模型廢棄單元的回收 231
11.3.3 堆式模型廢棄單元的回收 232
11.4 本章小結 234
習題11 234
第12章 並行編譯技術 235
12.1 並行電腦及其編譯系統簡介 235
12.1.1 並行計算相關技術簡介 236
12.1.2 並行編譯系統的分類及結構 239
12.2 並行程序設計模型 242
12.2.1 並行體系結構分類及並行程序設計 242
12.2.2 並行程序設計模型 244
12.3 並行編譯系統的構造 245
12.3.1 並行編譯系統的構造簡介 245
12.3.2 程序分析 247
12.3.3 程序優化 251
12.3.4 並行代碼生成 252
12.4 自動並行化技術研究現狀 255
12.4.1 比較典型的自動並行化系統簡介 256
12.4.2 自動並行化編譯系統發展簡介 257
12.5 本章小結 259
習題12 260
第13章 軟件構造 261
13.1 軟件構造技術 261
13.1.1 API的設計和構造 261
13.1.2 基於狀態和表驅動的構造技術 263
13.1.3 基於復用的構造技術 265
13.2 模塊化軟件構造 269
13.2.1 模塊化設計理論 269
13.2.2 數據結構與算法 271
13.2.3 軟件測試與軟件調試 273
13.3 面向對象的軟件構造技術 276
13.3.1 抽象與封裝 277
13.3.2 面向對象的設計 278
13.3.3 測試與調試的基本技術 284
13.4 本章小結 286
習題13 286
附錄A 編譯程序自動生成工具 287
思考題 306
參考文獻 307