基本信息
策劃編輯:秦緒好 楊勇
責任編輯:王承慧
適用專業:計算機相關專業
適合層次:本科
內容簡介
編譯原理課程是一門專門學習與研究程式設計語言的實現技術的課程,在計算機科學領域有著及其重要的地位。全書以淺顯的語言引入編譯原理的基本概念,分章對程式語言、語言分析基礎,程式設計語言常用語法與翻譯方法、詞法分析、自上而下的語法分析、自下而上的語法分析、運行時存儲空間管理、最佳化及目標代碼生成等內容進行了詳細的講解。本書適用於高等院校計算機專業本科教材,也可供教師、研究生及有關科技工作者學習和參考。
圖書目錄
第1章 編譯的基本概念 1
1.1 為什麼需要編譯程式 1
1.2 編譯的基本過程 2
習題 10
第2章 程式語言 11
2.1 高級語言 11
2.1.1 高級語言的分類 11
2.1.2 數據類型及其操作 12
2.1.3 語句與表達式 14
2.1.4 程式的結構 16
2.2 中間語言 18
2.2.1 逆波蘭表示法 18
2.2.2 三地址代碼 19
習題 21
第3章 語言分析基礎 22
3.1 語言和語法 22
3.2 產生式 23
3.3 上下文無關文法及其語言 23
3.3.1 上下文無關文法的基本概念 24
3.3.2 上下文無關文法所定義的語言 25
3.4 語法樹與抽象語法樹 28
3.4.1 語法樹 28
3.4.2 二義文法 28
3.4.3 抽象語法樹 29
3.5 上下文無關文法的設計 30
3.5.1 文法設計基礎 30
3.5.2 消除二義性 32
3.6 形式語言淺述 34
3.6.1 語言的組成 35
3.6.2 產生式文法 36
3.6.3 喬姆斯基文法分類 36
習題 38
第4章 程式設計語言常用語法與翻譯方法 40
4.1 程式設計語言常用語法 40
4.1.1 表達式語法(算術) 40
4.1.2 賦值語句 41
4.1.3 if語句 41
4.1.4 循環語句 42
4.1.5 說明語句 42
4.1.6 函式的定義與調用 43
4.1.7 程式語句序列文法 43
4.2 中間代碼的翻譯 44
4.2.1 表達式中間代碼生成 44
4.2.2 if語句中間代碼生成 46
4.2.3 布爾表達式代碼生成 49
4.2.4 循環語句中間代碼 51
4.2.5 綜合實例 52
習題 54
第5章 詞法分析 55
5.1 詞法與正規式 55
5.2 有限狀態自動機 57
5.2.1 確定有限自動機(DFA) 57
5.2.2 非確定有限自動機(NFA) 62
5.2.3 從DFA到NFA的轉換 63
5.2.4 從NFA到DFA的轉換 65
5.2.5 確定有限自動機的化簡 69
5.3 從自動機到正規式的轉換 72
5.4 正規文法與有限自動機的等價性 74
5.5 正規文法與正規式 76
習題 77
第6章 自上而下的語法分析 80
6.1 自上而下語法分析概論 80
6.2 適合自上而下分析的文法 81
6.2.1 左遞歸的消除 81
6.2.2 消除回溯與提取左因子 84
6.3 LL(1)分析法 85
6.3.1 LL(1)分析的基本方法 85
6.3.2 LL(1)文法 86
6.3.3 求FIRST集合 87
6.3.4 求FOLLOW 集合 91
6.3.5 預測分析程式 95
6.4 遞歸下降分析程式 98
習題 99
第7章 自下而上的語法分析 102
7.1 自下而上語法分析概論 102
7.1.1 歸約的概念 102
7.1.2 歸約的問題 104
7.1.3 規範歸約 104
7.2 算符優先分析 106
7.2.1 優先關係與算符優先文法 106
7.2.2 算符優先關係表的構造算法 108
7.2.3 算符優先分析算法 109
7.2.4 優先函式 113
7.3 LR分析法 114
7.3.1 LR分析 114
7.3.2 LR(0)項目集和LR(0)分析表的構造 119
7.3.3 SLR分析表的構造 122
7.3.4 規範LR分析表的構造 125
7.3.5 LALR分析表的構造 128
習題 132
第8章 語法制導翻譯 135
8.1 屬性文法 135
8.1.1 屬性文法的概念 135
8.1.2 依賴圖 139
8.1.3 綜合屬性與S屬性文法 140
8.1.4 繼承屬性及其計算 142
8.2 符號表 145
8.2.1 符號表的組織與作用 145
8.2.2 符號表數據內容及查找 146
8.2.3 名字的作用域 147
8.3 翻譯中間代碼屬性 149
8.3.1 算術表達式及賦值語句的翻譯 150
8.3.2 控制語句的翻譯 152
習題 159
第9章 運行時存儲空間管理 161
9.1 程式運行時的存儲環境 161
9.2 靜態存儲分配 163
9.3 基於棧的運行時存儲器管理 164
9.3.1 簡單的棧式存儲管理 164
9.3.2 過程可局部定義的棧式存儲管理 168
9.4 參數傳遞機制 172
9.4.1 值傳遞 173
9.4.2 地址傳遞 173
9.4.3 值結果傳遞 174
9.4.4 名字傳遞 176
習題 177
第10章 最佳化及目標代碼生成 181
10.1 局部最佳化 181
10.1.1 基本塊 181
10.1.2 基本塊中的等價代換 182
10.2 全局最佳化 183
10.3 循環最佳化 185
10.3.1 外提不變式 186
10.3.2 強度削弱 187
10.3.3 刪除基本歸納變數 188
10.4 目標代碼生成 189
10.4.1 基本問題 189
10.4.2 目標機器模型 191
10.4.3 一個簡單的代碼生成器 191
10.4.4 暫存器的分配 194
習題 194
附錄 部分習題詳解 197
參考文獻 267