
內容簡介
在程序員與計算機的“交流”過程中,解釋器無疑扮演著優秀的翻譯角色。它為隻懂0和1的計算機翻譯源代碼,為看似隨機的字符賦予含義。這是如何實現的呢?充滿好奇心的你,是否曾經思考過這個問題?跟隨本書,你將揭開解釋器的神秘麵紗,通曉它的工作原理,並編寫出自己的解釋器。
本書采用Go語言來為自創的編程語言Monkey實現解釋器。你將為Monkey語言實現類C語法、變量綁定、基本數據類型、算術運算、內置函數、閉包等特性,並了解什麼是詞法分析器、語法分析器和抽象語法樹。
作者簡介
索斯藤·鮑爾(Thorsten Ball)
Sourcegraph軟件工程師,精通多門程序設計語言,包括Go、C、JavaScript和Ruby,深諳編譯原理、係統編程、Unix、數據庫等相關技術。現居德國,長期活躍於歐洲各大技術大會。
孫波翔
軟件工程師,碩士畢業後旅居法國。從事與Python、Go相關的研究和工作,熱愛開源,側重於Python、GUI、編譯器方向。給NumPy、PySide2、wxWidgets、Cython、Pyston v1解釋器等開源項目貢獻過代碼,另譯有《深入理解Python特性》。
目錄
前言第1章詞法分析
1.1詞法分析
1.2定義詞法單元
1.3詞法分析器
1.4擴展詞法單元和詞法分析器
1.5編寫REPL
第2章語法分析
2.1語法分析器
2.2為什麼不用語法分析器生成器
2.3為Monkey語言編寫語法分析器
2.4語法分析器的第一步:解析let語句
2.5解析return語句
2.6解析表達式
2.7普拉特解析的工作方式
2.8擴展語法分析器
2.9RPPL
第3章求值
3.1為符號賦予含義
3.2求值策略
3.3樹遍歷解釋器
3.4表示對象
3.5求值表達式
3.6條件語句
3.7return語句
3.8錯誤處理
3.9綁定與環境
3.10函數和函數調用
3.11如何處理垃圾
第4章擴展解釋器
4.1數據類型和函數
4.2字符串
4.3內置函數
4.4數組
4.5哈希表
4.6大結局
第5章遺失的篇章:Monkey的宏係統
5.1宏係統
5.2Monkey的宏係統
5.3quote
5.4unquote
5.5宏擴展
5.6擴展REPL
5.7關於宏的一些暢想
······
最後修改:2025 年 01 月 22 日
© 允許規範轉載
