注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)計(jì)算機(jī)科學(xué)理論與基礎(chǔ)知識編譯器構(gòu)造

編譯器構(gòu)造

編譯器構(gòu)造

定 價:¥109.00

作 者: [美]查爾斯·N.費(fèi)希爾,[美]羅恩·K.塞隆,[美]理查德·J.勒布朗
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787111768203 出版時間: 2025-04-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  本書面向初學(xué)者,從編譯器構(gòu)造的角度進(jìn)行分析,旨在幫助讀者深入理解編譯器的設(shè)計(jì)原理和方法。全書共14章,主要內(nèi)容包括:詞法分析和語法分析、語法制導(dǎo)翻譯、符號表和聲明處理、語義分析、虛擬機(jī)代碼、運(yùn)行時支持、目標(biāo)代碼生成等。全書內(nèi)容安排緊湊合理,對編譯器構(gòu)造的基本知識與關(guān)鍵技術(shù)進(jìn)行了深入淺出的講解,并提供了詳盡清晰的算法,倡導(dǎo)在實(shí)踐中學(xué)習(xí)編譯器構(gòu)造的相關(guān)技術(shù)。本書不僅可作為計(jì)算機(jī)專業(yè)本科生或研究生的教材,也適合作為相關(guān)領(lǐng)域技術(shù)人員的參考書。

作者簡介

  查爾斯·N.費(fèi)希爾 (Charles N.Fischer) 美國威斯康星大學(xué)計(jì)算機(jī)科學(xué)系教授,長期為本科生和研究生講授編譯原理相關(guān)課程。研究興趣為編譯器設(shè)計(jì)與實(shí)現(xiàn)。羅恩·K.塞隆 (Ron K.Cytron) 美國圣路易斯華盛頓大學(xué)計(jì)算機(jī)科學(xué)與工程系教授,研究興趣為實(shí)時系統(tǒng)與程序設(shè)計(jì)語言。理查德·J.勒布朗 (Richard J.LeBlanc,Jr.) 美國佐治亞理工學(xué)院計(jì)算機(jī)系教授,主講編譯器與解釋器方面的課程。曾任ACM教育委員會委員,是SE2004教育規(guī)范委員會副主席。 王剛,南開大學(xué)計(jì)算機(jī)學(xué)院教授、博士生導(dǎo)師。主要講授程序設(shè)計(jì)、算法、編譯、并行計(jì)算方面的課程。研究興趣包括計(jì)算機(jī)理論、海量信息存儲、并行與分布式計(jì)算、搜索引擎等,特別是在分布式存儲系統(tǒng)可靠性技術(shù)、云存儲用戶數(shù)據(jù)隱私保護(hù)、搜索引擎性能優(yōu)化等方向取得了一系列重要成果。近年來在計(jì)算機(jī)領(lǐng)域的國際頂尖學(xué)術(shù)期刊及國際頂級學(xué)術(shù)會議發(fā)表學(xué)術(shù)論文。主持國家863項(xiàng)目、國家自然科學(xué)基金項(xiàng)目、天津市自然科學(xué)基金項(xiàng)目等,主持與百度公司、奇虎360公司、華為公司等合作項(xiàng)目?,F(xiàn)為IEEE/ACM/中國計(jì)算機(jī)學(xué)會會員、中國計(jì)算機(jī)學(xué)會信息存儲專委會委員、中國計(jì)算機(jī)學(xué)會理論計(jì)算機(jī)專委會委員。

圖書目錄

目  錄
Crafting a Compiler
前言
致謝
第1章 引言 1
1.1 編譯技術(shù)歷史 1
1.2 編譯器的功能 2
1.2.1 編譯器生成的機(jī)器代碼 3
1.2.2 目標(biāo)代碼格式 4
1.3 解釋器 5
1.4 語法和語義 6
1.4.1 靜態(tài)語義 7
1.4.2 運(yùn)行時語義 7
1.5 編譯器的組織 9
1.5.1 詞法分析器 10
1.5.2 語法分析器 10
1.5.3 類型檢查器 10
1.5.4 翻譯器 10
1.5.5 符號表 11
1.5.6 優(yōu)化器 11
1.5.7 代碼生成器 11
1.5.8 編譯器編寫工具 12
1.6 程序設(shè)計(jì)語言和編譯器設(shè)計(jì) 12
1.7 計(jì)算機(jī)體系結(jié)構(gòu)和編譯器設(shè)計(jì) 13
1.8 編譯器設(shè)計(jì)考慮 13
1.8.1 調(diào)試編譯器 14
1.8.2 優(yōu)化編譯器 14
1.8.3 可重定位編譯器 14
1.9 集成開發(fā)環(huán)境 15
習(xí)題 15
第2章 一個簡單的編譯器 18
2.1 ac語言的一個非形式化定義 18
2.2 ac的形式化定義 19
2.2.1 語法規(guī)范 19
2.2.2 單詞規(guī)范 20
2.3 一個簡單編譯器的各階段 21
2.4 詞法分析 22
2.5 語法分析 23
2.5.1 預(yù)測語法分析例程 24
2.5.2 實(shí)現(xiàn)產(chǎn)生式 25
2.6 抽象語法樹 25
2.7 語義分析 27
2.7.1 符號表 27
2.7.2 類型檢查 27
2.8 代碼生成 29
習(xí)題 31
第3章 詞法分析——理論與實(shí)踐 32
3.1 詞法分析器概述 32
3.2 正則表達(dá)式 34
3.3 示例 35
3.4 有限自動機(jī)與詞法分析器 36
3.5 詞法分析器生成器 39
3.5.1 在Lex中定義單詞 40
3.5.2 字符集 40
3.5.3 使用正則表達(dá)式定義單詞 41
3.5.4 使用Lex處理字符 43
3.6 其他詞法分析器生成器 44
3.7 構(gòu)建詞法分析器的實(shí)際考慮 45
3.7.1 處理標(biāo)識符和字面值 45
3.7.2 使用編譯器指示以及列出
源碼行 48
3.7.3 結(jié)束詞法分析器 49
3.7.4 多超前字符 49
3.7.5 性能考慮 51
3.7.6 詞法錯誤恢復(fù) 52
3.8 正則表達(dá)式和有限自動機(jī) 53
3.8.1 將正則表達(dá)式轉(zhuǎn)換為NFA 54
3.8.2 創(chuàng)建DFA 54
3.8.3 優(yōu)化有限自動機(jī) 56
3.8.4 將有限自動機(jī)轉(zhuǎn)換為正則
表達(dá)式 58
3.9 總結(jié) 60
習(xí)題 61
第4章 文法和語法分析 64
4.1 上下文無關(guān)文法 64
4.1.1 最左推導(dǎo) 66
4.1.2 最右推導(dǎo) 66
4.1.3 語法分析樹 66
4.1.4 其他類型的文法 67
4.2 CFG的性質(zhì) 68
4.2.1 歸約文法 68
4.2.2 二義性 68
4.2.3 錯誤的語言定義 69
4.3 轉(zhuǎn)換擴(kuò)展文法 69
4.4 語法分析器和識別器 70
4.5 文法分析算法 72
4.5.1 文法表示 72
4.5.2 推導(dǎo)空字符串 73
4.5.3 First集 74
4.5.4 Follow集 77
習(xí)題 79
第5章 自頂向下語法分析 82
5.1 概述 82
5.2 LL(k)文法 83
5.3 遞歸下降LL(1)語法分析器 85
5.4 表驅(qū)動LL(1)語法分析器 86
5.5 獲得LL(1)文法 88
5.5.1 公共前綴 88
5.5.2 左遞歸 89
5.6 一個非LL(1)語言 90
5.7 LL(1)分析器的性質(zhì) 92
5.8 分析表的表示 92
5.8.1 緊湊存儲 93
5.8.2 壓縮 94
5.9 語法錯誤恢復(fù)和修復(fù) 96
5.9.1 錯誤恢復(fù) 96
5.9.2 錯誤修復(fù) 96
5.9.3 LL(1)分析器中的錯誤檢測 97
5.9.4 LL(1)分析器中的錯誤恢復(fù) 97
習(xí)題 98
第6章 自底向上語法分析 102
6.1 概述 102
6.2 移進(jìn)–歸約語法分析器 103
6.2.1 LR語法分析器和最右推導(dǎo) 103
6.2.2 LR分析如針織 104
6.2.3 LR分析引擎 105
6.2.4 LR分析表 105
6.2.5 LR(k)分析 107
6.3 構(gòu)造LR(0)分析表 109
6.4 沖突診斷 113
6.4.1 二義性文法 114
6.4.2 非LR(k)文法 116
6.5 沖突消解和表構(gòu)造 117
6.5.1 SLR(k)分析表構(gòu)造 117
6.5.2 LALR(k)分析表構(gòu)造 120
6.5.3 LALR傳播圖 122
6.5.4 LR(k)表構(gòu)造 125
習(xí)題 129
第7章 語法制導(dǎo)翻譯 135
7.1 概述 135
7.1.1 語義動作和語義值 135
7.1.2 綜合屬性和繼承屬性 136
7.2 自底向上語法制導(dǎo)翻譯 137
7.2.1 示例 137
7.2.2  產(chǎn)生式克隆 139
7.2.3 強(qiáng)制執(zhí)行語義動作 140
7.2.4 激進(jìn)的文法重構(gòu) 141
7.3 自頂向下語法制導(dǎo)翻譯 142
7.4 抽象語法樹 143
7.4.1 具體語法樹與抽象語法樹 144
7.4.2 一種高效的AST數(shù)據(jù)結(jié)構(gòu) 144
7.4.3 創(chuàng)建AST的基礎(chǔ)架構(gòu) 145
7.5 AST設(shè)計(jì)和構(gòu)造 146
7.5.1 設(shè)計(jì) 147
7.5.2 構(gòu)造 148
7.6 左值和右值的AST結(jié)構(gòu) 150
7.7 AST設(shè)計(jì)模式 152
7.7.1 節(jié)點(diǎn)類層次 152
7.7.2 訪問者模式 153
7.7.3 反射訪問者模式 154
習(xí)題 157
第8章 符號表和聲明處理 160
8.1 構(gòu)造符號表 160
8.1.1 靜態(tài)作用域 161
8.1.2 符號表接口 162
8.2 塊結(jié)構(gòu)語言和作用域 163
8.2.1 處理作用域 163
8.2.2 單符號表還是多符號表 163
8.3 基本實(shí)現(xiàn)技術(shù) 164
8.3.1 插入和查找名字 164
8.3.2 名字空間 166
8.3.3 一個高效的符號表實(shí)現(xiàn) 166
8.4 高級特性 169
8.4.1 記錄和類型名 169
8.4.2 重載和類型層次 170
8.4.3 隱式聲明 170
8.4.4 導(dǎo)出指示和導(dǎo)入指示 171
8.4.5 改變搜索規(guī)則 171
8.5 聲明處理基礎(chǔ) 172
8.5.1 符號表中的屬性 172
8.5.2 類型描述符結(jié)構(gòu) 172
8.5.3 使用抽象語法樹進(jìn)行類型
檢查 173
8.6 變量和類型聲明 174
8.6.1 簡單變量聲明 174
8.6.2 處理類型名 175
8.6.3 類型聲明 176
8.6.4 變量聲明再探 178
8.6.5 靜態(tài)數(shù)組類型 179
8.6.6 結(jié)構(gòu)和記錄類型 180
8.6.7 枚舉類型 181
8.7 類和方法聲明 183
8.7.1 處理類聲明 184
8.7.2 處理方法聲明 186
8.8 類型檢查簡介 188
8.8.1 簡單標(biāo)識符和字面量 190
8.8.2 賦值語句 190
8.8.3 檢查表達(dá)式 191
8.8.4 檢查復(fù)雜名字 191
8.9 總結(jié) 194
習(xí)題 195
第9章 語義分析 198
9.1 控制結(jié)構(gòu)的語義分析 198
9.1.1 可達(dá)性和終止分析 199
9.1.2 if語句 200
9.1.3 while、do和repeat循環(huán)
語句 203
9.1.4 for循環(huán)語句 204
9.1.5 break、continue、return和
goto語句 205
9.1.6 switch和case語句 210
9.1.7 異常處理 214
9.2 方法調(diào)用的語義分析 218
9.3 總結(jié) 223
習(xí)題 223
第10章 中間表示 227
10.1 概述 227
10.1.1 示例 228
10.1.2 中端 229
10.2 Java虛擬機(jī) 230
10.2.1 簡介和設(shè)計(jì)原則 230
10.2.2 類文件內(nèi)容 231
10.2.3 JVM指令 232
10.3 靜態(tài)單賦值形式 237
習(xí)題 239
第11章 虛擬機(jī)代碼生成 241
11.1 代碼生成訪問者 241
11.2 類和方法聲明 243
11.2.1 類聲明 243
11.2.2 方法聲明 245
11.3 MethodBodyVisitor 245
11.3.1 常量 245
11.3.2 局部存儲引用 246
11.3.3 靜態(tài)引用 246
11.3.4 表達(dá)式 247
11.3.5 賦值 248
11.3.6 方法調(diào)用 249
11.3.7 字段引用 250
11.3.8 數(shù)組引用 251
11.3.9 條件執(zhí)行 252
11.3.10 循環(huán) 252
11.4 LHSVisitor 253
11.4.1 局部引用 254
11.4.2 靜態(tài)引用 254
11.4.3 字段引用 255
11.4.4 數(shù)組引用 255
習(xí)題 256
第12章 運(yùn)行時支持 258
12.1 靜態(tài)分配 258
12.2 棧分配 259
12.2.1 類和結(jié)構(gòu)中的字段訪問 260
12.2.2 運(yùn)行時訪問幀 261
12.2.3 處理類和對象 262
12.2.4 處理多重作用域 263
12.2.5 塊級分配 264
12.2.6 關(guān)于幀的更多討論 265
12.3 數(shù)組 267
12.3.1 靜態(tài)一維數(shù)組 267
12.3.2 多維數(shù)組 270
12.4 堆管理 272
12.4.1 分配機(jī)制 272
12.4.2 釋放機(jī)制 274
12.4.3 自動垃圾收集 274
12.5 基于區(qū)域的內(nèi)存管理 279
習(xí)題 280
第13章 目標(biāo)代碼生成 284
13.1 翻譯字節(jié)碼 285
13.1.1 分配內(nèi)存地址 286
13.1.2 分配數(shù)組和對象 286
13.1.3 方法調(diào)用 288
13.1.4 字節(jié)碼翻譯過程的示例 290
13.2 翻譯表達(dá)式樹 291
13.3 寄存器分配 294
13.3.1 動態(tài)寄存器分配 294
13.3.2 使用圖著色進(jìn)行寄存器
分配 296
13.3.3 基于優(yōu)先級的寄存器分配 300
13.3.4 過程間寄存器分配 301
13.4 代碼調(diào)度 302
13.4.1 改進(jìn)代碼調(diào)度 305
13.4.2 全局和動態(tài)代碼調(diào)度 306
13.5 指令自動選擇 307
13.5.1 使用BURS選擇指令 308
13.5.2 使用Twig選擇指令 310
13.5.3 其他方法 310
13.6 窺孔優(yōu)化 311
13.6.1 窺孔優(yōu)化級別 311
13.6.2 自動生成窺孔優(yōu)化器 313
習(xí)題 314
第14章 程序優(yōu)化 318
14.1 概述 318
14.2 控制流分析 323
14.2.1 控制流圖 323
14.2.2 程序和控制流結(jié)構(gòu) 325
14.2.3 直接過程調(diào)用圖 325
14.2.4 深度優(yōu)先生成樹 326
14.2.5 支配關(guān)系 329
14.2.6 簡單的支配關(guān)系計(jì)算算法 330
14.2.7 快速的支配關(guān)系計(jì)算算法 332
14.2.8 支配前沿 339
14.2.9 區(qū)間 341
14.3 數(shù)據(jù)流分析介紹 349
14.3.1 可用表達(dá)式 349
14.3.2 活躍變量 351
14.4 數(shù)據(jù)流框架 352
14.4.1 數(shù)據(jù)流評估圖 353
14.4.2 交格 354
14.4.3 轉(zhuǎn)移函數(shù) 355
14.5 求解 356
14.5.1 迭代 356
14.5.2 初始化 359
14.5.3 終止和快速框架 360
14.5.4 滿足分配律的框架 363
14.6 常量傳播 364
14.7 SSA形式 366
14.7.1 放置函數(shù) 368
14.7.2 重命名 369
習(xí)題 371
參考文獻(xiàn) 378

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號