編程語言實(shí)現(xiàn)模式

出版時(shí)間:2012-3-20  出版社:華中科技大學(xué)出版社  作者:Terence Parr  頁數(shù):388  譯者:李袁奎,堯飄海  
Tag標(biāo)簽:無  

前言

  隨著你不斷編寫語言應(yīng)用,這個(gè)過程中所蘊(yùn)涵的模式就會(huì)逐漸變得清晰而明朗。其實(shí),大多數(shù)的語言應(yīng)用在架構(gòu)上都是相似的。每次編寫語言應(yīng)用的時(shí)候,我都不斷告訴自己:“先建立解析器,用它在內(nèi)存中把數(shù)據(jù)結(jié)構(gòu)建立起來。然后從中抽取信息,必要時(shí)還要改變其結(jié)構(gòu)。最后再寫一個(gè)能根據(jù)這些信息自動(dòng)輸出代碼或者報(bào)告的工具”??窗?,這不就是模式?在這些任務(wù)中總能發(fā)現(xiàn)一些相似的算法和數(shù)據(jù)結(jié)構(gòu)?! ∫坏┱莆樟诉@些語言實(shí)現(xiàn)的設(shè)計(jì)模式或者架構(gòu),編寫起語言應(yīng)用來就得心應(yīng)手了。如果你想快速掌握編寫語言應(yīng)用的能力,這本書正適合你。本書奉行實(shí)用主義,從本質(zhì)上挖掘并提煉語言應(yīng)用中的設(shè)計(jì)模式。你會(huì)了解模式的重要性,學(xué)習(xí)如何實(shí)現(xiàn)這些模式,如何組合這些模式。很快你就能成為開發(fā)語言應(yīng)用的行家里手!  創(chuàng)造新的語言其實(shí)不需要深厚的理論知識(shí)做鋪墊。你可能不信,畢竟所有語言應(yīng)用方面的書都會(huì)占用大量的篇幅講解編譯器知識(shí)。我承認(rèn),為通用編程語言編寫編譯器確實(shí)需要扎實(shí)的計(jì)算機(jī)科學(xué)知識(shí)。然而,大多數(shù)程序員并不需要編寫這種編譯器。因此本書的重心是解決程序員平時(shí)最可能遇到的問題:配置文件讀取、數(shù)據(jù)讀取、模型驅(qū)動(dòng)的代碼生成、源代碼之間的翻譯、源代碼分析和解釋器的實(shí)現(xiàn)。同理,我們沒有使用Scheme等學(xué)術(shù)界推崇的語言,而是跟隨業(yè)界的發(fā)展采用Java編寫所有的示例,以便你能快速地在實(shí)際項(xiàng)目中大顯身手。

內(nèi)容概要

  本書旨在傳授開發(fā)語言應(yīng)用(工具)的經(jīng)驗(yàn)和理念,幫助讀者構(gòu)建自己的語言應(yīng)用。這里的語言應(yīng)用并非特指用編譯器或解釋器實(shí)現(xiàn)編程語言,而是泛指任何處理、分析、翻譯輸入文件的程序,比如配置文件讀取器、數(shù)據(jù)讀取器、模型驅(qū)動(dòng)的代碼生成器、源碼到源碼的翻譯器、源碼分析工具、解釋器,以及諸如此類的工具。為此,作者舉例講解已有語言應(yīng)用的工作機(jī)制,拆解、歸納出31種易于理解且常用的設(shè)計(jì)模式(每種都包括通用數(shù)據(jù)結(jié)構(gòu)、算法、策略)。雖然示例是用Java編寫的,但相信讀者可以觸類旁通,利用這些設(shè)計(jì)模式構(gòu)建針對(duì)其他編程語言(既包括特定領(lǐng)域語言,也包括通用編程語言)的應(yīng)用。

作者簡(jiǎn)介

Terence
Parr是美國(guó)舊金山大學(xué)的計(jì)算機(jī)教授、研究生導(dǎo)師,他一直致力于從事ANTLR項(xiàng)目(antlr.org)和模板引擎(stringtemplate.org)的設(shè)計(jì)和開發(fā)工作。Terence曾擔(dān)任IBM、洛克希德馬丁、NeXT、雷諾汽車等公司的技術(shù)顧問,另著有《ANTLR權(quán)威指南》。

書籍目錄

第1部分  讀取輸入
第1章 初探語言應(yīng)用
1.1 大局觀
1.2 模式概覽
1.3 深入淺出語言應(yīng)用
1.4 為語言應(yīng)用選擇合適的模式
第2章 基本解析模式
2.1 識(shí)別式子的結(jié)構(gòu)
2.2 構(gòu)建遞歸下降語法解析器
2.3 使用文法DSL來構(gòu)建語法解析器
2.4 詞法單元和句子
第3章 高階解析模式
3.1 利用任意多的向前看符號(hào)進(jìn)行解析
3.2 記憶式解析
3.3 采用語義信息指導(dǎo)解析過程
第2部分 分析輸入
第4章 從語法樹構(gòu)建中間表示
4.1 為什么要構(gòu)建樹
4.2 構(gòu)建抽象語法樹
4.3 簡(jiǎn)要介紹ANTLR
4.4 使用ANTLR文法構(gòu)建AST
第5章 遍歷并改寫樹形結(jié)構(gòu)
5.1 遍歷樹以及訪問順序
5.2 封裝訪問節(jié)點(diǎn)的代碼
5.3 根據(jù)文法自動(dòng)生成訪問者
5.4 將遍歷與匹配解耦
第6章 記錄并識(shí)別程序中的符號(hào)
6.1 收集程序?qū)嶓w的信息
6.2 根據(jù)作用域劃分符號(hào)
6.3 解析符號(hào)
第7章 管理數(shù)據(jù)聚集的符號(hào)表
7.1 為結(jié)構(gòu)體構(gòu)建作用域樹
7.2 為類構(gòu)建作用域樹
第8章 靜態(tài)類型檢查
第3部分 解釋執(zhí)行
第9章 構(gòu)建高級(jí)解釋器
9.1 高級(jí)解釋器存儲(chǔ)系統(tǒng)的設(shè)計(jì)
9.2 高級(jí)解釋器中的符號(hào)記錄
9.3 處理指令
第10章 構(gòu)建字節(jié)碼解釋器
10.1 設(shè)計(jì)字節(jié)碼解釋器
10.2 定義匯編語言語法
10.3 字節(jié)碼機(jī)器的架構(gòu)
10.4 如何深入
第4部分 生成輸出
第11章 語言的翻譯
11.1 語法制導(dǎo)的翻譯
11.2 基于規(guī)則的翻譯
11.3 模型驅(qū)動(dòng)的翻譯
11.4 創(chuàng)建嵌套的輸出模型
第12章 使用模板生成DSL
12.1 熟悉StringTemplate
12.2 StringTemplate的性質(zhì)
12.2 從一個(gè)簡(jiǎn)單的輸入模型生成模板
12.4 在輸入模型不同的情況下復(fù)用模板
12.5 使用樹文法來創(chuàng)建模板
12.6 對(duì)數(shù)據(jù)列表使用模板
12.7 編寫可改變輸出結(jié)果的翻譯器
第13章 知識(shí)匯總
13.1 在蛋白質(zhì)結(jié)構(gòu)中查找模式
13.2 使用腳本構(gòu)建三維場(chǎng)景
13.3 處理XML
13.4 讀取通用的配置文件
13.5 對(duì)代碼進(jìn)行微調(diào)
13.6 為Java添加新的類型
13.7 美化源代碼
13.8 編譯為機(jī)器碼
參考文獻(xiàn)
索引

媒體關(guān)注與評(píng)論

  別看那些編譯原理的書了!這本書教你編寫真正實(shí)用的解析器、翻譯器、解釋器等語言應(yīng)用,Terence Parr 在書中細(xì)致地講解了先進(jìn)的語言工具和語言應(yīng)用中設(shè)計(jì)模式的用法。無論是編寫自己的領(lǐng)域?qū)S谜Z言(DSL),還是挖掘已有代碼、查錯(cuò)或是尋寶,都能從這本簡(jiǎn)單易懂的書中找到示例和模式,因?yàn)樗旧细采w了解析技術(shù)的方方面面。  ——Python語言之父Guido Van Rossum‘    我的“龍書”被打入冷宮了!  ——Android平臺(tái)Dalvik虛擬機(jī)的設(shè)計(jì)者Dan Bornstein    本書對(duì)每個(gè)語言設(shè)計(jì)者來說都是一筆無價(jià)的財(cái)富?! ?mdash;—泰勒大學(xué)計(jì)算機(jī)科學(xué)系副教授Tom Nurkkala博士    Terence清晰地闡釋了語言設(shè)計(jì)中的概念。如果你想獨(dú)創(chuàng)一門語言卻又無從下手,或者覺得它高不可攀,那么,從這本書開始吧?! ?mdash;—Adam Keys    這本書行文風(fēng)格淺顯卻又不失韻味,以這個(gè)經(jīng)久不衰的熱門話題為中心,娓娓道來,頗有大師風(fēng)范?!毒幊陶Z言實(shí)現(xiàn)模式》不光講述創(chuàng)造語言的方法,還指引我們?cè)谶@個(gè)過程中該思考些什么。要想創(chuàng)造一個(gè)強(qiáng)壯的、可維護(hù)的專用語言,這本書是無價(jià)之寶?! ?mdash;—Breaulty研究機(jī)構(gòu)科學(xué)軟件開發(fā)部門主管Kyle Ferrio博士

編輯推薦

  雖然《編程語言實(shí)現(xiàn)模式》不專門討論如何設(shè)計(jì)編程語言,但讀者在閱讀的過程中將吸收豐富的相關(guān)知識(shí)。比較不同編程語言的特點(diǎn)、了解編程語言的發(fā)展歷史是學(xué)習(xí)設(shè)計(jì)編程語言的好途徑。

圖書封面

圖書標(biāo)簽Tags

評(píng)論、評(píng)分、閱讀與下載


    編程語言實(shí)現(xiàn)模式 PDF格式下載


用戶評(píng)論 (總計(jì)30條)

 
 

  •   這本書不是初學(xué)者閱讀,是那些有了一定的開發(fā)經(jīng)驗(yàn),有某方面的編程語言基礎(chǔ)。對(duì)于編程習(xí)慣和代碼質(zhì)量有很高地提升價(jià)值
  •   編程語言是怎樣煉成的,及其一些模式化思考
  •   但仍然遠(yuǎn)遠(yuǎn)輸給python源碼剖析了。
  •   隨著java版本的更新,dsl在java中得到越來越多的重視平時(shí)開發(fā)中,也有許多思想可以借鑒書翻譯的還算可以
  •   書相當(dāng)好,名詞解釋的很清楚??上?,個(gè)人智商問題,導(dǎo)致看不明白
  •   正在學(xué)習(xí)DSL,這本書非常有幫助。
  •   要仔細(xì)閱讀,這個(gè)領(lǐng)域還是蠻深的
  •   這本書需要不少基礎(chǔ)知識(shí),沒那么容易學(xué)習(xí)。
  •   細(xì)讀和體會(huì)最重要,翻譯部分有些瑕疵。
  •   很多東西原來都沒注意過,雖然有些確實(shí)用不到,不過理念和思想是共通的。
  •   非常滿意,包裝的很好,發(fā)貨也很快
  •   書被壓皺了?。?!以前都是紙箱子包好送來的 這次怎么就一塑料袋子
  •   不錯(cuò)的,堅(jiān)持閱讀
  •   這本書42萬字,價(jià)格72元,厚度和英文版幾乎一樣,很不便宜
    雖然有英文版電子書,但還是喜歡紙質(zhì)版
    據(jù)說它能起到替代編譯原理的作用,不知道是不是真的,這種說法有點(diǎn)懸
  •   如題, 好書一本 可以喝編譯原理類的書一起看看
  •   實(shí)用主義的龍書
  •   靜下心來看。。。
  •   幫同事買的,書籍印刷還不錯(cuò)
  •   貌似是將編譯與設(shè)計(jì)模式相結(jié)合的,值得一看
  •   內(nèi)容還是不錯(cuò)的 但是感覺過多的篇幅介紹ALTER的工具。
  •   好書,值得慢慢看
  •   看這本書需要先熟悉antlr的用法,否則讀起很多例子看不懂。
  •   如果實(shí)現(xiàn)的是領(lǐng)域?qū)僬Z言的話,不必看這個(gè)了。
  •   很好很好的書。沒話說。
  •   正版書,價(jià)格便宜,值得入手
  •   精品的書要看看
  •   關(guān)于編譯器和解釋器實(shí)現(xiàn)的書
  •   編譯原理新的經(jīng)典
  •   大牛們都推薦了,你還等啥
  •   編程語言實(shí)現(xiàn)模式
 

250萬本中文圖書簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7