本書旨在傳授開發語言應用(工具)的經驗和理念,幫助讀者構建自己的語言應用。這里的語言應用并非特指用編譯器或解釋器實現編程語言,而是泛指任何處理、分析、翻譯輸入文件的程序,比如配置文件讀取器、數據讀取器、模型驅動的代碼生成器、源碼到源碼的翻譯器、源碼分析工具、解釋器,以及諸如此類的工具。為此,作者舉例講解已有語言應用的工作機制,拆解、歸納出31種易于理解且常用的設計模式(每種都包括通用數據結構、算法、策略)。雖然示例是用Java編寫的,但相信讀者可以觸類旁通,利用這些設計模式構建針對其他編程語言(既包括特定領域語言,也包括通用編程語言)的應用。
雖然本書不專門討論如何設計編程語言,但讀者在閱讀的過程中將吸收豐富的相關知識。比較不同編程語言的特點、了解編程語言的發展歷史是學習設計編程語言的好途徑。
Terence Parr是美國舊金山大學的計算機教授、研究生導師,他一直致力于從事ANTLR項目(antlr.org)和模板引擎(stringtemplate.org)的設計和開發工作。Terence曾擔任IBM、洛克希德馬丁、NeXT、雷諾汽車等公司的技術顧問,另著有《ANTLR指南》。
第1部分 讀取輸入 第1章 初探語言應用 1.1 大局觀 1.2 模式概覽 1.3 深入淺出語言應用 1.4 為語言應用選擇合適的模式 第2章 基本解析模式 2.1 識別式子的結構 2.2 構建遞歸下降語法解析器 2.3 使用文法DSL來構建語法解析器 2.4 詞法單元和句子 第3章 高階解析模式 3.1 利用任意多的向前看符號進行解析 3.2 記憶式解析 3.3 采用語義信息指導解析過程 第2部分 分析輸入 第4章 從語法樹構建中間表示 4.1 為什么要構建樹 4.2 構建抽象語法樹 4.3 簡要介紹ANTLR 4.4 使用ANTLR文法構建AST 第5章 遍歷并改寫樹形結構 5.1 遍歷樹以及訪問順序 5.2 封裝訪問節點的代碼 5.3 根據文法自動生成訪問者 5.4 將遍歷與匹配解耦 第6章 記錄并識別程序中的符號 6.1 收集程序實體的信息 6.2 根據作用域劃分符號 6.3 解析符號 第7章 管理數據聚集的符號表 7.1 為結構體構建作用域樹 7.2 為類構建作用域樹 第8章 靜態類型檢查 第3部分 解釋執行 第9章 構建高級解釋器 9.1 高級解釋器存儲系統的設計 9.2 高級解釋器中的符號記錄 9.3 處理指令 第10章 構建字節碼解釋器 10.1 設計字節碼解釋器 10.2 定義匯編語言語法 10.3 字節碼機器的架構 10.4 如何深入 第4部分 生成輸出 第11章 語言的翻譯 11.1 語法制導的翻譯 11.2 基于規則的翻譯 11.3 模型驅動的翻譯 11.4 創建嵌套的輸出模型 第12章 使用模板生成DSL 12.1 熟悉StringTemplate 12.2 StringTemplate的性質 12.2 從一個簡單的輸入模型生成模板 12.4 在輸入模型不同的情況下復用模板 12.5 使用樹文法來創建模板 12.6 對數據列表使用模板 12.7 編寫可改變輸出結果的翻譯器 第13章 知識匯總 13.1 在蛋白質結構中查找模式 13.2 使用腳本構建三維場景 13.3 處理XML 13.4 讀取通用的配置文件 13.5 對代碼進行微調 13.6 為Java添加新的類型 13.7 美化源代碼 13.8 編譯為機器碼 參考文獻 索引
別看那些編譯原理的書了!這本書教你編寫真正實用的解析器、翻譯器、解釋器等語言應用,Terence Parr 在書中細致地講解了先進的語言工具和語言應用中設計模式的用法。無論是編寫自己的領域專用語言(DSL),還是挖掘已有代碼、查錯或是尋寶,都能從這本簡單易懂的書中找到示例和模式,因為它基本上覆蓋了解析技術的方方面面。
Guido Van Rossum
Python語言之父
我的"龍書"被打入冷宮了!
Dan Bornstein
Android平臺Dalvik虛擬機的設計者
本書對每個語言設計者來說都是一筆無價的財富。
Tom Nurkkala博士
泰勒大學計算機科學系副教授
Terence清晰地闡釋了語言設計中的概念。如果你想獨創一門語言卻又無從下手,或者覺得它高不可攀,那么,從這本書開始吧。
Adam Keys
這本書行文風格淺顯卻又不失韻味,以這個經久不衰的熱門話題為中心,娓娓道來,頗有大師風范。《編程語言實現模式》不光講述創造語言的方法,還指引我們在這個過程中該思考些什么。要想創造一個強壯的、可維護的專用語言,這本書是無價之寶。
Kyle Ferrio博士
Breaulty研究機構科學軟件開發部門主管
既然是python之父推薦
翻譯的書還是不行,希望看原版吧!
來了來了來了
內容一般吧,沒有想象的好
看起來還不錯
十分有用的書籍,送貨比系統預計時間快。
這是屬于后期提高自身的書了,還沒看。
湊字數湊字數湊字數湊字數湊字數湊字數湊字數湊字數
促銷時買的,可能得在積淀多謝才能看下去。。。
書都不錯,ESM快遞太差居然說掉了找不到了.等了15天才送到
經典書籍,值得一讀。
書雖好,可惜讀者小眾,價格又貴,必然滯銷。慢慢等打5折時再買。
看這本書需要先熟悉antlr的用法,否則讀起很多例子看不懂。
內容還是不錯的 但是感覺過多的篇幅介紹ALTER的工具。
書相當好,名詞解釋的很清楚。可惜,個人智商問題,導致看不明白
如題, 好書一本 可以喝編譯原理類的書一起看看
書被壓皺了啊!!以前都是紙箱子包好送來的 這次怎么就一塑料袋子
很多東西原來都沒注意過,雖然有些確實用不到,不過理念和思想是共通的。
非常好的一本書,把很復雜的編譯原理講的淺顯易懂,非常好
這本書是不錯的,不過作者的Antlr4版本已經與這本書描述的有很多不同,建議作為編譯原理的課外讀物,而不是主要讀物。可以當作一種小實踐。
沒塑封,書角和封面都有折痕,還好我的強迫癥好轉了很多,不然絕對讀不下去
經典的著作,高手之路的必備神器!匠人精神,良心作品!
本來以為是python寫的,沒想到是java寫的,更沒想到的是意外的好看