Go 語言定製指南

柴樹杉 史斌 丁爾男

  • 出版商: 人民郵電
  • 出版日期: 2022-04-01
  • 售價: $479
  • 貴賓價: 9.5$455
  • 語言: 簡體中文
  • 頁數: 202
  • ISBN: 7115584419
  • ISBN-13: 9787115584410
  • 立即出貨

  • Go 語言定製指南-preview-1
  • Go 語言定製指南-preview-2
Go 語言定製指南-preview-1

買這商品的人也買了...

商品描述

Go 語言語法樹是 Go 語言源文件的另一種語義等價的表現形式,Go 語言自帶的go fmt 和 go doc等命令都是建立在 Go 語言語法樹基礎之上的分析工具。本書從Go 語言語法樹出發,重新審視Go 語言源文件,闡述定製Go 語言的核心技術。書中通過對 go/ast、go/ssa 等包的分析,-步步深入Go 語言核心,最後簡要介紹 LLVM,讀者可以結合 IIVM 和 Go 語言語法樹按需定製,創造一個語法與 Go 語言語法頭似的簡單的編程語言及與其對應的編譯器,達到掌握自製編程語言和編譯器的目的。

本書面向已經熟練掌握 Go 語言並在進行項目開發的程序員,也適合想深入瞭解 Go 語言底層運行機制的程序員閱讀,同時可作為對編程語言/編譯器有興趣並想進行實際項目實踐的程序員的參考書。

作者簡介

柴树杉,Go/C/汇编语言爱好者,《Go语言高级编程》作者之一,关注与汇编语言相关的底层技术。他目前在蚂蚁集团从事领域特定语言(DSL)的设计和开发工作。

史斌,有十余年编译器和虚拟机开发经验。Go和LLVM 开源项目贡献者,拥有这两个项目官方代码仓库的提交权限,目前两个项目的提交记录都超过100次。他在全球Go贡献者榜上长期排名TOP50,目前致力于国产芯片软件生态系统的构建工作。

丁尔男,Go/C/Web前端技术爱好者,长年从事3D开发工作,热衷于性能优化。他目前在武汉航天远景科技股份有限公司分管3D相关产品的开发工作。

目錄大綱

第 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