第1部分 讀取輸入
第1章 初探語言應用 3
1.1 大局觀 3
1.2 模式概覽 5
1.3 深入淺出語言應用 9
1.4 為語言應用選擇合適的模式 17
第2章 基本解析模式 21
2.1 識別式子的結構 22
2.2 構建遞歸下降語法解析器 24
2.3 使用文法DSL來構建語法解析器 26
2.4 詞法單元和句子 27
第3章 高階解析模式 49
3.1 利用任意多的向前看符號進行解析 50
3.2 記憶式解析 52
3.3 采用語義信息指導解析過程 52
第2部分 分析輸入
第4章 從語法樹構建中間表示 73
4.1 為什么要構建樹 75
4.2 構建抽象語法樹 77
4.3 簡要介紹ANTLR 84
4.4 使用ANTLR文法構建AST 86
第5章 遍歷并改寫樹形結構 101
5.1 遍歷樹以及訪問順序 102
5.2 封裝訪問節(jié)點的代碼 105
5.3 根據文法自動生成訪問者 107
5.4 將遍歷與匹配解耦 110
第6章 記錄并識別程序中的符號 131
6.1 收集程序實體的信息 132
6.2 根據作用域劃分符號 134
6.3 解析符號 139
第7章 管理數據聚集的符號表 155
7.1 為結構體構建作用域樹 156
7.2 為類構建作用域樹 158
第8章 靜態(tài)類型檢查 181
第3部分 解釋執(zhí)行
第9章 構建高級解釋器 219
9.1 高級解釋器存儲系統的設計 220
9.2 高級解釋器中的符號記錄 222
9.3 處理指令 224
第10章 構建字節(jié)碼解釋器 239
10.1 設計字節(jié)碼解釋器 241
10.2 定義匯編語言語法 243
10.3 字節(jié)碼機器的架構 245
10.4 如何深入 250
第4部分 生成輸出
第11章 語言的翻譯 278
11.1 語法制導的翻譯 280
11.2 基于規(guī)則的翻譯 281
11.3 模型驅動的翻譯 283
11.4 創(chuàng)建嵌套的輸出模型 291
第12章 使用模板生成DSL 312
12.1 熟悉StringTemplate 313
12.2 StringTemplate的性質 316
12.2 從一個簡單的輸入模型生成模板 317
12.4 在輸入模型不同的情況下復用模板 320
12.5 使用樹文法來創(chuàng)建模板 323
12.6 對數據列表使用模板 330
12.7 編寫可改變輸出結果的翻譯器 336
第13章 知識匯總 348
13.1 在蛋白質結構中查找模式 348
13.2 使用腳本構建三維場景 349
13.3 處理XML 350
13.4 讀取通用的配置文件 352
13.5 對代碼進行微調 353
13.6 為Java添加新的類型 354
13.7 美化源代碼 355
13.8 編譯為機器碼 356
參考文獻 359
索引 361