《編譯原理(第3版)》系統(tǒng)地介紹了編譯程序的設(shè)計(jì)原理及實(shí)現(xiàn)技術(shù)。在內(nèi)容的組織上,本書強(qiáng)調(diào)知識(shí)的實(shí)用性,將編譯的基本理論與具體的實(shí)現(xiàn)技術(shù)有機(jī)地結(jié)合起來,既注重了理論的完整性,化繁為簡,又將理論融于具體的實(shí)例中,化難為易,以達(dá)到準(zhǔn)確、清楚地闡述相關(guān)概念和原理的目的。除各章節(jié)對(duì)理論闡述的條理性外,書中給出的例子也具有實(shí)用性與連貫性,使讀者對(duì)編譯的各個(gè)階段能有一個(gè)全面、直觀的認(rèn)識(shí)。本書采用的算法全部由C語言描述,各章均附有習(xí)題。
本書可作為計(jì)算機(jī)專業(yè)的本科教材,也可作為計(jì)算機(jī)軟件工程人員的參考資料。
更多科學(xué)出版社服務(wù),請(qǐng)掃碼獲取。
目錄
前言
第1章 緒論 1
1.1 程序設(shè)計(jì)語言和編譯程序 1
1.2 編譯程序的歷史及發(fā)展 3
1.3 編譯過程和編譯程序結(jié)構(gòu) 4
1.4 編譯程序的開發(fā) 6
1.5 構(gòu)造編譯程序所應(yīng)具備的知識(shí)內(nèi)容 8
習(xí)題一 9
第2章 詞法分析 10
2.1 詞法分析器的設(shè)計(jì)方法 10
2.1.1 單詞符號(hào)的分類與輸出形式 10
2.1.2 狀態(tài)轉(zhuǎn)換圖 12
2.2 一個(gè)簡單的詞法分析器示例 13
2.2.1 C語言子集的單詞符號(hào)表示 13
2.2.2 C語言子集對(duì)應(yīng)的狀態(tài)轉(zhuǎn)換圖 14
2.2.3 狀態(tài)轉(zhuǎn)換圖的實(shí)現(xiàn) 15
2.3 正規(guī)表達(dá)式與有限自動(dòng)機(jī)簡介 18
2.3.1 正規(guī)表達(dá)式與正規(guī)集 18
2.3.2 有限自動(dòng)機(jī) 20
2.4 正規(guī)表達(dá)式到有限自動(dòng)機(jī)的構(gòu)造 23
2.4.1 由正規(guī)表達(dá)式構(gòu)造等價(jià)的非確定有限自動(dòng)機(jī)(NFA) 23
2.4.2 NFA的確定化 23
2.4.3 確定有限自動(dòng)機(jī)(DFA)的化簡 26
2.4.4 正規(guī)表達(dá)式到有限自動(dòng)機(jī)構(gòu)造示例 28
2.5 詞法分析器的自動(dòng)生成 33
習(xí)題二 35
第3章 語法分析 37
3.1 文法和語言 37
3.1.1 文法和語言的基本概念 37
3.1.2 形式語言分類 40
3.1.3 正規(guī)表達(dá)式與上下文無關(guān)文法 43
3.2 推導(dǎo)與語法樹 44
3.2.1 推導(dǎo)與短語 44
3.2.2 語法樹與二義性 45
3.3 自頂向下的語法分析 50
3.3.1 遞歸下降分析法 50
3.3.2 LL(1)分析法 58
3.4 自底向上的語法分析 65
3.4.1 自底向上分析原理 65
3.4.2 算符優(yōu)先分析法 68
3.5 規(guī)范歸約的自底向上語法分析方法 78
3.5.1 LR分析器的工作原理 78
3.5.2 LR(0)分析器 82
3.5.3 SLR(1)分析器 88
?3.5.4 LR(1)分析器 92
?3.5.5 LALR分析器 97
3.5.6 二義文法的應(yīng)用 99
?3.5.7 LR分析器應(yīng)用與拓展 104
習(xí)題三 106
第4章 語義分析和中間代碼生成 112
4.1 概述 112
4.1.1 語義分析的概念 112
4.1.2 語法制導(dǎo)翻譯方法 112
4.2 屬性文法 114
4.2.1 文法的屬性 114
4.2.2 屬性文法 115
4.3 幾種常見的中間語言 116
4.3.1 抽象語法樹 116
4.3.2 逆波蘭表示法 117
4.3.3 三地址代碼 120
4.4 表達(dá)式及賦值語句的翻譯 123
4.4.1 簡單算術(shù)表達(dá)式和賦值語句的翻譯 123
4.4.2 布爾表達(dá)式的翻譯 125
4.5 控制語句的翻譯 130
4.5.1 條件語句if的翻譯 131
4.5.2 條件循環(huán)語句while的翻譯 133
4.5.3 三種基本控制結(jié)構(gòu)的翻譯 134
4.5.4 多分支控制語句case的翻譯 140
4.5.5 語句標(biāo)號(hào)和轉(zhuǎn)移語句的翻譯 142
4.6 數(shù)組元素的翻譯 143
4.6.1 數(shù)組元素的地址計(jì)算及中間代碼形式 143
4.6.2 賦值語句中數(shù)組元素的翻譯 144
4.6.3 數(shù)組元素翻譯示例 146
4.7 過程或函數(shù)調(diào)用語句的翻譯 149
4.7.1 過程或函數(shù)調(diào)用的方法 149
4.7.2 過程或函數(shù)調(diào)用語句的四元式生成 150
4.8 說明語句的翻譯 151
4.8.1 變量說明的翻譯 151
4.8.2 數(shù)組說明的翻譯 151
4.9 遞歸下降語法制導(dǎo)翻譯方法簡介 152
習(xí)題四 154
第5章 代碼優(yōu)化 157
5.1 局部優(yōu)化 157
5.1.1 基本塊的劃分方法 157
5.1.2 基本塊的DAG方法 158
5.1.3 用DAG進(jìn)行基本塊的優(yōu)化處理 162
5.1.4 DAG構(gòu)造算法的進(jìn)一步討論 164
5.2 循環(huán)優(yōu)化 165
5.2.1 程序流圖與循環(huán) 165
5.2.2 循環(huán)的查找 167
5.2.3 循環(huán)優(yōu)化 172
?5.3 全局優(yōu)化概述 181
5.3.1 到達(dá)G定值與引用G定值鏈 181
5.3.2 定值G引用鏈(du鏈) 185
5.3.3 復(fù)寫傳播 188
?5.4 代碼優(yōu)化示例 192
習(xí)題五 199
第6章 目標(biāo)程序運(yùn)行時(shí)存儲(chǔ)空間的組織 203
6.1 靜態(tài)存儲(chǔ)分配 203
6.2 簡單的棧式存儲(chǔ)分配 204
6.2.1 棧式存儲(chǔ)分配與活動(dòng)記錄 206
6.2.2 過程的執(zhí)行 207
6.3 嵌套過程語言的棧式實(shí)現(xiàn) 210
6.3.1 嵌套層次顯示(DISPLAY)表和活動(dòng)記錄 210
6.3.2 嵌套過程的執(zhí)行 211
6.3.3 訪問非局部名的另一種實(shí)現(xiàn)方法 212
6.4 堆式動(dòng)態(tài)存儲(chǔ)分配 216
6.4.1 堆式存儲(chǔ)的概念 216
6.4.2 堆式存儲(chǔ)的管理方法 217
?6.5 參數(shù)傳遞補(bǔ)遺 219
6.5.1 參數(shù)傳遞的方法 220
6.5.2 不同參數(shù)傳遞方法比較 221
習(xí)題六 222
第7章 目標(biāo)代碼生成 225
7.1 簡單代碼生成器 225
7.1.1 待用信息與活躍信息 226
7.1.2 代碼生成算法 228
7.1.3 寄存器分配 230
7.1.4 源程序到目標(biāo)代碼生成示例 232
?7.2 匯編指令到機(jī)器代碼翻譯概述 235
習(xí)題七 241
第8章 符號(hào)表與錯(cuò)誤處理 243
8.1 符號(hào)表 243
8.1.1 符號(hào)表的作用 243
8.1.2 符號(hào)表的組織 244
8.1.3 分程序結(jié)構(gòu)語言符號(hào)表建立 245
8.1.4 非分程序結(jié)構(gòu)語言符號(hào)表建立 249
8.1.5 常用符號(hào)表結(jié)構(gòu) 249
8.1.6 符號(hào)表內(nèi)容 251
8.2 錯(cuò)誤處理 252
8.2.1 語法錯(cuò)誤校正 252
8.2.2 語義錯(cuò)誤校正 259
習(xí)題八 261
?第9章 并行編譯技術(shù)簡介 263
9.1 并行計(jì)算機(jī)體系結(jié)構(gòu) 263
9.1.1 向量計(jì)算機(jī) 263
9.1.2 共享存儲(chǔ)器多處理機(jī) 264
9.1.3 分布式存儲(chǔ)器大規(guī)模并行計(jì)算機(jī) 264
9.2 并行編譯技術(shù) 265
9.2.1 并行編譯技術(shù)的概念 265
9.2.2 并行編譯系統(tǒng)的功能和結(jié)構(gòu) 266
9.3 自動(dòng)并行編譯 268
9.3.1 依賴關(guān)系分析 268
9.3.2 程序轉(zhuǎn)換及數(shù)據(jù)分布 270
9.3.3 調(diào)度 271
參考文獻(xiàn) 273
附錄1 8086/8088指令碼匯總表 274
附錄2 8086/8088指令編碼空間表 279
電子資源形式:ppt課件、習(xí)題解析與上機(jī)指導(dǎo)