《編譯原理(第3版)》系統(tǒng)地介紹了編譯程序的設(shè)計原理及實現(xiàn)技術(shù)。在內(nèi)容的組織上,本書強調(diào)知識的實用性,將編譯的基本理論與具體的實現(xiàn)技術(shù)有機地結(jié)合起來,既注重了理論的完整性,化繁為簡,又將理論融于具體的實例中,化難為易,以達到準確、清楚地闡述相關(guān)概念和原理的目的。除各章節(jié)對理論闡述的條理性外,書中給出的例子也具有實用性與連貫性,使讀者對編譯的各個階段能有一個全面、直觀的認識。本書采用的算法全部由C語言描述,各章均附有習(xí)題。
本書可作為計算機專業(yè)的本科教材,也可作為計算機軟件工程人員的參考資料。
更多科學(xué)出版社服務(wù),請掃碼獲取。
目錄
前言
第1章 緒論 1
1.1 程序設(shè)計語言和編譯程序 1
1.2 編譯程序的歷史及發(fā)展 3
1.3 編譯過程和編譯程序結(jié)構(gòu) 4
1.4 編譯程序的開發(fā) 6
1.5 構(gòu)造編譯程序所應(yīng)具備的知識內(nèi)容 8
習(xí)題一 9
第2章 詞法分析 10
2.1 詞法分析器的設(shè)計方法 10
2.1.1 單詞符號的分類與輸出形式 10
2.1.2 狀態(tài)轉(zhuǎn)換圖 12
2.2 一個簡單的詞法分析器示例 13
2.2.1 C語言子集的單詞符號表示 13
2.2.2 C語言子集對應(yīng)的狀態(tài)轉(zhuǎn)換圖 14
2.2.3 狀態(tài)轉(zhuǎn)換圖的實現(xiàn) 15
2.3 正規(guī)表達式與有限自動機簡介 18
2.3.1 正規(guī)表達式與正規(guī)集 18
2.3.2 有限自動機 20
2.4 正規(guī)表達式到有限自動機的構(gòu)造 23
2.4.1 由正規(guī)表達式構(gòu)造等價的非確定有限自動機(NFA) 23
2.4.2 NFA的確定化 23
2.4.3 確定有限自動機(DFA)的化簡 26
2.4.4 正規(guī)表達式到有限自動機構(gòu)造示例 28
2.5 詞法分析器的自動生成 33
習(xí)題二 35
第3章 語法分析 37
3.1 文法和語言 37
3.1.1 文法和語言的基本概念 37
3.1.2 形式語言分類 40
3.1.3 正規(guī)表達式與上下文無關(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 表達式及賦值語句的翻譯 123
4.4.1 簡單算術(shù)表達式和賦值語句的翻譯 123
4.4.2 布爾表達式的翻譯 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 語句標號和轉(zhuǎn)移語句的翻譯 142
4.6 數(shù)組元素的翻譯 143
4.6.1 數(shù)組元素的地址計算及中間代碼形式 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進行基本塊的優(yōu)化處理 162
5.1.4 DAG構(gòu)造算法的進一步討論 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 到達G定值與引用G定值鏈 181
5.3.2 定值G引用鏈(du鏈) 185
5.3.3 復(fù)寫傳播 188
?5.4 代碼優(yōu)化示例 192
習(xí)題五 199
第6章 目標程序運行時存儲空間的組織 203
6.1 靜態(tài)存儲分配 203
6.2 簡單的棧式存儲分配 204
6.2.1 棧式存儲分配與活動記錄 206
6.2.2 過程的執(zhí)行 207
6.3 嵌套過程語言的棧式實現(xiàn) 210
6.3.1 嵌套層次顯示(DISPLAY)表和活動記錄 210
6.3.2 嵌套過程的執(zhí)行 211
6.3.3 訪問非局部名的另一種實現(xiàn)方法 212
6.4 堆式動態(tài)存儲分配 216
6.4.1 堆式存儲的概念 216
6.4.2 堆式存儲的管理方法 217
?6.5 參數(shù)傳遞補遺 219
6.5.1 參數(shù)傳遞的方法 220
6.5.2 不同參數(shù)傳遞方法比較 221
習(xí)題六 222
第7章 目標代碼生成 225
7.1 簡單代碼生成器 225
7.1.1 待用信息與活躍信息 226
7.1.2 代碼生成算法 228
7.1.3 寄存器分配 230
7.1.4 源程序到目標代碼生成示例 232
?7.2 匯編指令到機器代碼翻譯概述 235
習(xí)題七 241
第8章 符號表與錯誤處理 243
8.1 符號表 243
8.1.1 符號表的作用 243
8.1.2 符號表的組織 244
8.1.3 分程序結(jié)構(gòu)語言符號表建立 245
8.1.4 非分程序結(jié)構(gòu)語言符號表建立 249
8.1.5 常用符號表結(jié)構(gòu) 249
8.1.6 符號表內(nèi)容 251
8.2 錯誤處理 252
8.2.1 語法錯誤校正 252
8.2.2 語義錯誤校正 259
習(xí)題八 261
?第9章 并行編譯技術(shù)簡介 263
9.1 并行計算機體系結(jié)構(gòu) 263
9.1.1 向量計算機 263
9.1.2 共享存儲器多處理機 264
9.1.3 分布式存儲器大規(guī)模并行計算機 264
9.2 并行編譯技術(shù) 265
9.2.1 并行編譯技術(shù)的概念 265
9.2.2 并行編譯系統(tǒng)的功能和結(jié)構(gòu) 266
9.3 自動并行編譯 268
9.3.1 依賴關(guān)系分析 268
9.3.2 程序轉(zhuǎn)換及數(shù)據(jù)分布 270
9.3.3 調(diào)度 271
參考文獻 273
附錄1 8086/8088指令碼匯總表 274
附錄2 8086/8088指令編碼空間表 279
電子資源形式:ppt課件、習(xí)題解析與上機指導(dǎo)