本書根據(jù)高等學(xué)校本科課程“編譯原理”的教學(xué)基本要求進(jìn)行編寫。本書系統(tǒng)介紹了編譯程序在設(shè)計(jì)和實(shí)現(xiàn)方面的基本原理、基本方法和實(shí)現(xiàn)技術(shù)。主要內(nèi)容包括:形式語言與文法、正規(guī)式與有窮自動機(jī)、詞法分析、自頂向下語法分析、自底向上語法分析、語義分析與中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成、符號表以及運(yùn)行時(shí)的存儲組織與管理等相關(guān)知識。本書系統(tǒng)性強(qiáng),概念、條理清晰,內(nèi)容通俗易懂。本書共 11章,每一章均包括學(xué)習(xí)導(dǎo)讀、基本內(nèi)容、本章小結(jié)、核心概念、單元自測和習(xí)題等。
更多科學(xué)出版社服務(wù),請掃碼獲取。
目錄
前言
第1章 緒論 1
1.1 程序設(shè)計(jì)語言與編譯程序 1
1.1.1 程序設(shè)計(jì)語言的翻譯程序 1
1.1.2 編譯程序和解釋程序 1
1.1.3 學(xué)習(xí)編譯程序帶來的益處 3
1.2 編譯的基本知識 3
1.2.1 編譯過程 3
1.2.2 編譯程序的基本結(jié)構(gòu) 6
1.2.3 遍 6
1.2.4 編譯程序的前端和后端 7
1.3 編譯程序的設(shè)計(jì)和實(shí)現(xiàn)方式 8
1.4 編譯程序的配套工具 9
1.4.1 預(yù)處理器 9
1.4.2 匯編程序 9
1.4.3 連接裝配程序 10
1.5 編譯程序的發(fā)展及編譯技術(shù)的應(yīng)用 11
1.5.1 編譯程序的發(fā)展 11
1.5.2 編譯技術(shù)的應(yīng)用 11
1.6 本章小結(jié) 12
單元自測題 1 12
習(xí)題1 14
第2章 形式語言與文法 15
2.1 程序設(shè)計(jì)語言的描述 15
2.2 形式語言的基本概念 16
2.2.1 字母表和符號串 16
2.2.2 符號串的運(yùn)算 17
2.3 文法和語言的形式定義 18
2.3.1 文法的形式定義 18
2.3.2 語言的形式定義 21
2.3.3 規(guī)范推導(dǎo)和規(guī)范歸約 22
2.3.4 遞歸規(guī)則與文法的遞歸性 23
2.4 短語、直接短語和句柄 25
2.5 語法樹及文法的二義性 26
2.5.1 語法樹 26
2.5.2 文法的二義性 28
2.5.3 文法二義性的消除 29
2.6 文法的實(shí)用限制和等價(jià)變換 31
2.6.1 文法的實(shí)用限制 31
2.6.2 文法的等價(jià)變換 32
2.7 文法和語言的分類 33
2.8 本章小結(jié) 35
單元自測題2 36
習(xí)題2 39
第3章 正規(guī)式與有窮自動機(jī) 41
3.1 正規(guī)式與正規(guī)集 41
3.2 正規(guī)式與正規(guī)文法 42
3.3 有窮自動機(jī) 45
3.3.1 確定的有窮自動機(jī) 45
3.3.2 非確定的有窮自動機(jī) 47
3.3.3 DFA與 NFA的等價(jià)性 48
3.3.4 NFA確定化為 DFA 49
3.3.5 DFA化簡 51
3.4 正規(guī)式與有窮自動機(jī) 54
3.4.1 由正規(guī)式 R構(gòu)造 NFA 54
3.4.2 有窮自動機(jī)到正規(guī)式的轉(zhuǎn)換方法 56
3.5 正規(guī)文法與有窮自動機(jī) 57
3.5.1 右線性文法到有窮自動機(jī)的轉(zhuǎn)換方法 57
3.5.2 左線性文法到有窮自動機(jī)的轉(zhuǎn)換方法 58
3.5.3 有窮自動機(jī)到正規(guī)文法的轉(zhuǎn)換方法 59
3.6 本章小結(jié) 60
單元自測題 3 60
習(xí)題3 62
第4章詞法分析 64
4.1 詞法分析程序的功能 64
4.2 單詞符號及輸出單詞的形式 64
4.2.1 語言的單詞符號 64
4.2.2 詞法分析程序輸出單詞的形式 65
4.3 詞法分析程序的構(gòu)造 66
4.4 詞法分析程序的自動生成工具 LEX 73
4.4.1 LEX介紹 73
4.4.2 LEX源程序的結(jié)構(gòu) 74
4.4.3 LEX的實(shí)例 77
4.5本章小結(jié) 78
單元自測題4 79
習(xí)題4 80
第5章 自頂向下語法分析 81
5.1 語法分析的作用和分類 81
5.2 非確定的自頂向下分析法的思想 82
5.3 文法的左遞歸性和回溯的消除 83
5.3.1 左遞歸性的消除 83
5.3.2 確定的自頂向下分析的定義 84
5.3.3 回溯的消除 85
5.4 遞歸下降分析法 89
5.5 預(yù)測分析法 90
5.6 本章小結(jié) 94
單元自測題 5 94
習(xí)題5 96
第6章自底向上語法分析 98
6.1 自底向上分析法的原理 98
6.2 LR分析法 99
6.2.1 LR語法分析程序的工作原理和過程 100
6.2.2 LR(0)分析法 103
6.2.3 SLR(1)分析法 107
6.2.4 LR(1)分析法 113
6.2.5 LALR(1)分析法 116
6.2.6 LR分析對二義性文法的應(yīng)用 120
6.2.7 LR語法分析中的錯誤恢復(fù)技術(shù) 121
6.2.8 LR分析法的應(yīng)用與拓展 124
6.3 語法分析程序自動生成工具簡介 125
6.4 本章小結(jié) 125
單元自測題6 126
習(xí)題6 128
第7章 語義分析與中間代碼生成 130
7.1 語義分析的基本知識 130
7.1.1 語義分析的概念 130
7.1.2 語義分析的任務(wù) 131
7.1.3 語義分析的錯誤處理 131
7.2 語法制導(dǎo)翻譯 132
7.2.1 語法制導(dǎo) 132
7.2.2 翻譯方案 133
7.2.3 基于語法制導(dǎo)的翻譯 133
7.3 屬性文法 135
7.3.1 屬性文法的基本概念 135
7.3.2 屬性文法的處理方法 138
7.4 幾種常見的中間語言 139
7.4.1 抽象語法樹 139
7.4.2 逆波蘭式 140
7.4.3 三元式、間接三元式和樹形表示 141
7.4.4 四元式和三地址代碼 143
7.5 遞歸下降語法制導(dǎo)翻譯 144
7.6 自底向上語法制導(dǎo)翻譯 145
7.6.1 簡單算術(shù)表達(dá)式和賦值語句的翻譯 145
7.6.2 布爾表達(dá)式的翻譯 147
7.6.3 控制語句的翻譯 148
7.6.4 循環(huán)語句的翻譯 149
7.6.5 簡單說明語句的翻譯 150
7.6.6 含數(shù)組元素的賦值語句的翻譯 150
7.6.7 過程和函數(shù)調(diào)用語句的翻譯 152
7.7 本章小結(jié) 152
單元自測題7 153
習(xí)題7 156
第8章代碼優(yōu)化 158
8.1 代碼優(yōu)化的含義、原則和分類 158
8.2 局部優(yōu)化 159
8.2.1 基本塊的劃分方法 159
8.2.2 基本塊的優(yōu)化技術(shù) 161
8.2.3 基本塊優(yōu)化技術(shù)的實(shí)現(xiàn) 163
8.3 循環(huán)優(yōu)化 168
8.3.1 循環(huán)的基本概念 169
8.3.2 循環(huán)的優(yōu)化技術(shù) 171
8.4 本章小結(jié) 175
單元自測題8 175
習(xí)題8 176
第9章 目標(biāo)代碼生成 178
9.1 目標(biāo)代碼生成的作用、形式和過程 178
9.2 簡單代碼生成器實(shí)例 180
9.3 代碼生成器的自動生成技術(shù) 183
9.4 本章小結(jié) 183
單元自測題 9 183
習(xí)題9 184
第10章 符號表 185
10.1 符號表的組織和內(nèi)容 185
10.2 符號表的結(jié)構(gòu)與存放 187
10.2.1 線性符號表 187
10.2.2 有序符號表 188
10.2.3 散列符號表 189
10.3 符號表的管理 190
10.3.1 符號表的建立 190
10.3.2 符號表的查填 191
10.4 本章小結(jié) 192
單元自測題10 192
習(xí)題10 193
第11章 運(yùn)行時(shí)的存儲組織與管理 194
11.1 運(yùn)行時(shí)存儲組織的作用、任務(wù)和存儲空間的布局 194
11.1.1 運(yùn)行時(shí)存儲組織的作用與任務(wù) 194
11.1.2 程序運(yùn)行時(shí)存儲空間的布局 195
11.2 靜態(tài)存儲分配 196
11.3 棧式存儲分配 197
11.4 堆式存儲分配 197
11.5 活動記錄 199
11.5.1 過程活動記錄 199
11.5.2 嵌套過程定義中非局部量的訪問 201
11.6 本章小結(jié) 206
單元自測題 11 206
習(xí)題11 207
參考文獻(xiàn)208