《Go語言定製指南》是人民郵電出版社2022年出版的圖書,作者是柴樹杉、史斌和丁爾男。
基本介紹
- 中文名:Go語言定製指南
- 作者:柴樹杉 、史斌 、丁爾男
- 出版社:人民郵電出版社
- 出版時間:2022年
- 頁數:202 頁
- ISBN:9787115584410
內容簡介,圖書目錄,作者簡介,
內容簡介
本書從Go 語言語法樹出發,重新審視Go 語言源檔案,闡述定製Go 語言的核心技術。書中通過對 go/ast、go/ssa 等包的分析,一步步深入Go 語言核心,最後簡要介紹 LLVM,讀者可以結合 IIVM 和 Go 語言語法樹按需定製,創造一個語法與 Go 語言語法頭似的簡單的程式語言及與其對應的編譯器,達到掌握自製程式語言遙境和編譯器的目的。本書面向已經熟練掌握 Go 語言並在進行項目開發的程式設計師,也適合想深入了解 Go 語言底層運行機制的程式設計師閱讀,同時可作為對程式語言/編譯器有興趣並想進行實際項目實踐的程式設計師的參考書。
圖書目錄
第 1章 詞法單元 1
1.1 詞法單元簡介 2
1.2 表示詞法單元的數據類型 3
1.3 FileSet和File 6
1.4 解析詞法單元 7
1.5 位置信息 10
1.6 小結 11
第 2章 基礎字面值 13
2.1 基礎字面煮射兆拔值的定義 13
2.2 基礎字面值的語法樹影只充灶結構 15
2.3 構造基礎字面值 16
2.4 解析基礎字面值 17
2.5 標識符字面值 18
2.6 小結 19
第3章 基礎表達式 21
3.1 語法規範 21
3.2 解析表達式 22
3.3 求值表達式 25
3.4 標識符:為表達式引入變數 26
3.5 小結 28
第4章 代碼結構 29
4.1 目錄結構和包結構 29
4.2 檔案結構 30
4.3 診斷語法樹 34
4.4 小結 36
第5章 通用聲明 39
5.1 導入聲明 39
5.2 類型聲明 42
5.3 常量聲明 44
5.4 變數聲明 46
5.5 聲明分組 48
5.6 小結 49
第6章 函式聲明 51
6.1 語法規範 51
6.2 函式聲明和方法聲明 52
6.3 參數列表和返回值列表 54
6.4 小結 55
第7章 複合類型 57
7.1 語法規範 57
7.2 基礎類型 58
7.3 指針類型 61
7.4 數組類型 63
7.5 切片類型 66
7.6 結構體類型 67
7.7 映射類型 70
7.8 管道類型 71
7.9 函式類型 72
7.10 接口類型 73
7.11 小結 75
第8章 更複雜的字面值 77
8.1 語法規範 77
8.2 函希試謎數字面值 78
8.3 複合字面值的語法 80
8.4 數組字面值和切片字面值 81
8.5 結構體字面值 83
8.6 映射字面值 85
8.7 小結 86
第9章 複合表達式 87
9.1 表達式語法 87
9.2 類型轉換和函式調用 88
9.3 點選擇運算 90
9.4 索引運算 91
9.5 切片運算 92
9.6 類型斷言 93
9.7 小結 95
第 10章 語句塊和語句 97
10.1 語法規範 97
10.2 空語句塊 98
10.3 表達式語句 100
10.4 返回語句 101
10.5 聲明語句 103
10.6 短聲明語句和多賦值語句 104
10.7 if/else分支語句 106
10.8 愚碑舉for循環 108
10.9 類型斷言 111
10.10 go語句和defer語句 113
10.11 小結 114
第 11章 類型檢查 115
11.1 語義錯誤 115
11.2 go/types包 116
11.3 跨包的類型檢查 118
11.4 小結 122
第 12章 語義信息 123
12.1 名字空間 123
12.2 整體架構 127
12.3 小結 128
第 13章 靜態單賦值形主主迎式 129
13.1 靜態單賦值簡介 129
13.2 生成靜態單賦值 130
13.3 靜態單賦永影再值解釋執行 134
13.4 go/ssa包的架構 136
13.5 小結 138
第 14章 凹語言 139
14.1 Hello,凹語言 139
14.2 訪問全局變數 144
14.3 調用自定義函式 153
14.4 四則運算 157
14.5 分支控制 160
14.6 導入函式 165
14.7 小結 168
第 15章 LLVM簡介 169
15.1 背景介紹 169
15.2 安裝LLVM 171
15.3 printf函式 172
15.4 簡單的四則運算 175
15.5 比較運算 176
15.6 分支與循環 177
15.7 基本塊 180
15.8 PHI指令 182
15.9 有限循環 184
15.10 小結 185
第 16章 LLVM示例 187
16.1 W語言 187
16.2 W語言編譯器wcc的設計 189
16.3 W語言編譯器wcc的實現 191
16.4 W語言的代碼示例 198
16.5 小結 200
後記 201
作者簡介
柴樹杉,Go/C/彙編語言愛好者,《Go語言高級編程》作者之一,關注與彙編語言相關的底層技術。他目前在螞蟻集團從事領域特定語言(DSL)的設計和開發工作。
史斌,有十餘年編譯器和虛擬機開發經驗。Go和LLVM 開源項目貢獻者,擁有這兩個項目官方代碼倉庫的提交許可權,目前兩個項目的提交記錄都超過100次。他在全球Go貢獻者榜上長期排名TOP50,目前致力於國產晶片軟體生態系統的構建工作。
丁爾男,Go/C/Web前端技術愛好者,長年從事3D開發工作,熱衷於性能最佳化。他目前在武漢航天遠景科技股份有限公司分管3D相關產品的開發工作。
8.5 結構體字面值 83
8.6 映射字面值 85
8.7 小結 86
第9章 複合表達式 87
9.1 表達式語法 87
9.2 類型轉換和函式調用 88
9.3 點選擇運算 90
9.4 索引運算 91
9.5 切片運算 92
9.6 類型斷言 93
9.7 小結 95
第 10章 語句塊和語句 97
10.1 語法規範 97
10.2 空語句塊 98
10.3 表達式語句 100
10.4 返回語句 101
10.5 聲明語句 103
10.6 短聲明語句和多賦值語句 104
10.7 if/else分支語句 106
10.8 for循環 108
10.9 類型斷言 111
10.10 go語句和defer語句 113
10.11 小結 114
第 11章 類型檢查 115
11.1 語義錯誤 115
11.2 go/types包 116
11.3 跨包的類型檢查 118
11.4 小結 122
第 12章 語義信息 123
12.1 名字空間 123
12.2 整體架構 127
12.3 小結 128
第 13章 靜態單賦值形式 129
13.1 靜態單賦值簡介 129
13.2 生成靜態單賦值 130
13.3 靜態單賦值解釋執行 134
13.4 go/ssa包的架構 136
13.5 小結 138
第 14章 凹語言 139
14.1 Hello,凹語言 139
14.2 訪問全局變數 144
14.3 調用自定義函式 153
14.4 四則運算 157
14.5 分支控制 160
14.6 導入函式 165
14.7 小結 168
第 15章 LLVM簡介 169
15.1 背景介紹 169
15.2 安裝LLVM 171
15.3 printf函式 172
15.4 簡單的四則運算 175
15.5 比較運算 176
15.6 分支與循環 177
15.7 基本塊 180
15.8 PHI指令 182
15.9 有限循環 184
15.10 小結 185
第 16章 LLVM示例 187
16.1 W語言 187
16.2 W語言編譯器wcc的設計 189
16.3 W語言編譯器wcc的實現 191
16.4 W語言的代碼示例 198
16.5 小結 200
後記 201
作者簡介
柴樹杉,Go/C/彙編語言愛好者,《Go語言高級編程》作者之一,關注與彙編語言相關的底層技術。他目前在螞蟻集團從事領域特定語言(DSL)的設計和開發工作。
史斌,有十餘年編譯器和虛擬機開發經驗。Go和LLVM 開源項目貢獻者,擁有這兩個項目官方代碼倉庫的提交許可權,目前兩個項目的提交記錄都超過100次。他在全球Go貢獻者榜上長期排名TOP50,目前致力於國產晶片軟體生態系統的構建工作。
丁爾男,Go/C/Web前端技術愛好者,長年從事3D開發工作,熱衷於性能最佳化。他目前在武漢航天遠景科技股份有限公司分管3D相關產品的開發工作。