用Go語言自製解釋器

用Go語言自製解釋器

《用Go語言自製解釋器》是2022年人民郵電出版社出版的圖書,作者是[德] 索斯藤·鮑爾(Thorsten Ball)。

基本介紹

  • 中文名:用Go語言自製解釋器 
  • 作者:[德] 索斯藤·鮑爾(Thorsten Ball)
  • 出版時間:2022年6月
  • 出版社:人民郵電出版社
  • 頁數:276 頁
  • ISBN:9787115588289
  • 開本:16 開
  • 裝幀:平裝
內容簡介,圖書目錄,作者簡介,

內容簡介

在程式設計師與計算機的“交流”過程中,解釋器扮演著優秀的翻譯角色。通過本書,讀者將知曉解釋器的工作原理,並編寫出自己的解釋器。本書採用Go語言來為自創的程式語言Monkey實現解釋器。讀者將為Monkey語言實現類C語法、變數綁定、基本數據類型、算術運算、內置函式、閉包等特性,並了解什麼是詞法分析器語法分析器抽象語法樹

圖書目錄

第 1章 詞法分析 1
1.1 詞法分析 1
1.2 定義詞法單元 2
1.3 詞法分析器 4
1.4 擴展詞法單元和詞法分析器 14
1.5 編寫REPL 20
第 2章 語法分析 23
2.1 語法分析器 23
2.2 為什麼不用語法分析器生成器 26
2.3 為Monkey 語言編寫語法分析器 27
2.4 語法分析器的第 一步:解析let語句 28
2.5 解析return語句 42
2.6 解析表達式 44
2.6.1 Monkey 中的表達式 45
2.6.2 自上而下的運算符優先權分析(也稱普拉特解析法) 46
2.6.3 術語 47
2.6.4 準備AST 48
2.6.5 實現普拉特語法分析器 52
2.6.6 標識符 53
2.6.7 整數字面量 57
2.6.8 前綴運算符 60
2.6.9 中綴運算符 65
2.7 普拉特解析的工作方式 72
2.8 擴展語法分析器 81
2.8.1 布爾字面量 83
2.8.2 分組表達式 87
2.8.3 if 表達式 88
2.8.4 函式字面量 94
2.8.5 調用表達式 100
2.8.6 刪除TODO 105
2.9 RPPL 107
第3章 求值 110
3.1 為符號賦予含義 110
3.2 求值策略 111
3.3 樹遍歷解釋器 113
3.4 表示對象 114
3.4.1 對象系統的基礎 116
3.4.2 整數 116
3.4.3 布爾值 117
3.4.4 空值 118
3.5 求值表達式 118
3.5.1 整數字面量 119
3.5.2 完成REPL 122
3.5.3 布爾字面量 123
3.5.4 空值 125
3.5.5 前綴表達式 126
3.5.6 中綴表達式 129
3.6 條件語句 135
3.7 return語句 139
3.8 錯誤處理 143
3.9 綁定與環境 149
3.10 函式和函式調用 154
3.11 如何處理垃圾 165
第4章 擴展解釋器 168
4.1 數據類型和函式 168
4.2 字元串 168
4.2.1 在詞法分析器中支持字元串 169
4.2.2 字元串語法分析 172
4.2.3 字元串求值 173
4.2.4 字元串連線 175
4.3 內置函式 177
4.4 數組 182
4.4.1 在詞法分析器中支持數組 183
4.4.2 數組字面量語法分析 185
4.4.3 索引運算符表達式語法分析 188
4.4.4 數組字面量求值 192
4.4.5 索引運算符表達式求值 194
4.4.6 為數組添加內置函式 197
4.4.7 測試驅動數組 201
4.5 哈希表 202
4.5.1 哈希字面量詞法分析 203
4.5.2 哈希字面量語法分析 205
4.5.3 哈希對象 210
4.5.4 哈希字面量求值 215
4.5.5 哈希索引表達式求值 218
4.6 大結局 222
第5章 遺失的篇章:Monkey的宏系統 224
5.1 宏系統 224
5.2 Monkey 的宏系統 227
5.3 quote 229
5.4 unquote 233
5.4.1 遍歷樹 235
5.4.2 替換unquote調用 248
5.5 宏擴展 256
5.5.1 macro關鍵字 257
5.5.2 宏字面量語法分析 259
5.5.3 定義宏 262
5.5.4 展開宏 267
5.5.5 強大的unless 宏 271
5.6 擴展REPL 273
5.7 關於宏的一些暢想 274

作者簡介

索斯藤·鮑爾(Thorsten Ball)
Sourcegraph軟體工程師,精通多門程式設計語言,包括Go、C、JavaScript和Ruby,深諳編譯原理、系統編程、Unix、資料庫等相關技術。現居德國,長期活躍於歐洲各大技術大會。
孫波翔
軟體工程師,碩士畢業後旅居法國。從事與Python、Go相關的研究和工作,熱愛開源,側重於Python、GUI、編譯器方向。給NumPy、PySide2、wxWidgets、Cython、Pyston v1解釋器等開源項目貢獻過代碼,另譯有《深入理解Python特性》。

相關詞條

熱門詞條

聯絡我們