兩周自製腳本語言
內容描述
<內容簡介>
千葉滋編著的《兩周自製腳本語言/圖靈程序設計叢書》一本優秀的編譯原理入門讀物。全書穿插了大量輕鬆風趣的對話,讀者可以隨書中的人物一起從最簡單的語言解釋器開始,逐步添加新功能,最終完成一個支持函數、數組、對象等高級功能的語言編譯器。《兩周自製腳本語言/圖靈程序設計叢書》與眾不同的實現方式不僅大幅簡化了語言處理器的複雜度,還有助於拓展讀者的視野。 《兩周自製腳本語言/圖靈程序設計叢書》適合對編譯原理及語言處理器設計有興趣的讀者以及正在學習相關課程的大中專院校學生。同時,已經學習過相關知識,有一定經驗的開發者,也一定能從本書新穎的實現方式中受益良多。
<目錄>
第1部分 基礎篇 第1天 來,我們一起做些什麼吧 1.1 機器語言與彙編語言 1.2 解釋器與編譯器 1.3 開發語言處理器 1.4 語言處理器的結構與本書的框架 第2天 設計程序設計語言 2.1 麻雀雖小、五臟俱全的程序設計語言 2.2 句尾的分號 2.3 含糊不得的語言 第3天 分割單詞 3.1 Token對象 3.2 通過正則表達式定義單詞 3.3 借助java.util.regex設計詞法分析器 3.4 詞法分析器試運行 第4天 用於表示程序的對象 4.1 抽象語法樹的定義 4.2 設計節點類 4.3 BNF 4.4 語法分析與抽象語法樹 第5天 設計語法分析器 5.1 Stone語言的語法 5.2 使用解析器與組合子 5.3 由語法分析器生成的抽象語法樹 5.4 測試語法分析器 第6天 通過解釋器執行程序 6.1 eval方法與環境對象 6.2 各種類型的eval方法 6.3 關於GluonJ 6.4 執行程序 第7天 添加函數功能 7.1 擴充語法規則 7.2 作用域與生存周期 7.3 執行函數 7.4 計算斐波那契數 7.5 為閉包提供支持 7.6 實現閉包 第8天 關聯Java語言 8.1 原生函數 8.2 編寫使用原生函數的程序 第9天 設計面向對象語言 9.1 設計用於操作類與對象的語法 9.2 實現類所需的語法規則 9.3 實現eval方法 9.4 通過閉包表示對象 9.5 運行包含類的程序 第10天 無法割捨的數組 10.1 擴展語法分析器 10.2 僅通過修改器來實現數組第2部分 性能優化篇 第11天 優化變量讀寫性能 11.1 通過簡單數組來實現環境 11.2 用於記錄全局變量的環境 11.3 事先確定變量值的存放位置 11.4 修正eval方法並最終完成性能優化 第12天 優化對象操作性能 12.1 減少內存佔用 12.2 能否通過事先查找變量的保存位置來優化性能 12.3 定義lookup方法 12.4 整合所有修改並執行 12.5 內聯緩存 第13天 設計中間代碼解釋器 13.1 中間代碼與機器語言 13.2 Stone虛擬機 13.3 通過棧實現環境 13.4 寄存器的使用 13.5 引用變量的值 13.6 if語句與while語句 13.7 函數的定義與調用 13.8 轉換為虛擬機器語言 13.9 通過虛擬機執行 第14天 為Stone語言添加靜態類型支持以優化性能 14.1 指定變量類型 14.2 通過數據類型檢查發現錯誤 14.3 運行程序時執行類型檢查 14.4 對類型省略的變量進行類型推論 14.5 Java二進制代碼轉換 14.6 綜合所有修改再次運行程序第3部分 解說篇(自習時間) 第15天 手工設計詞法分析器 15.1 修改自動機 15.2 自動機程序 15.3 正則表達式的極限 第16天 語法分析方式 16.1 正則表達式與BNF 16.2 語法分析演算法 16.3 LL語法分析 16.4 算符優先分析法與自底向上語法分析 第17天 Parser庫的內部結構 17.1 組合子分析 17.2 解析器組合子的內部 第18天 GluonJ的使用方法 18.1 設定類路徑 18.2 啟動設定 18.3 GluonJ語言 18.4 功能總結 第19天 抽象語法樹與設計模式 19.1 理想的設計 19.2 Interpreter模式 19.3 Visitor模式 19.4 使用反射 19.5 面向切麵語言