領(lǐng)域特定語(yǔ)言這要書是專業(yè)性十分強(qiáng)的,非常適合有經(jīng)驗(yàn)的開發(fā)者,由世界級(jí)軟件開發(fā)大師和軟件開發(fā)“教父”MartinFowler歷時(shí)多年寫作而成,揭示了與編程語(yǔ)言無(wú)關(guān)的通用原則和模式,能為開發(fā)人員選擇和使用DSL提供有效的決策依據(jù)和指導(dǎo)方法。東坡小編分享領(lǐng)域特定語(yǔ)言pdf中文完整版電子書籍,點(diǎn)擊下面的地址即可免費(fèi)下載閱讀。
領(lǐng)域特定語(yǔ)言目錄
譯者序
前言
第一部分 敘 述
第1章 入門例子
1.1 哥特式建筑安全系統(tǒng)
1.2 狀態(tài)機(jī)模型
1.3 為格蘭特小姐的控制器編寫程序
1.4 語(yǔ)言和語(yǔ)義模型
1.5使用代碼生成
1.6 使用語(yǔ)言工作臺(tái)
1.7 可視化
第2章 使用DSL
2.1定義DSL
2.1.1DSL的邊界
2.1.2片段DSL和獨(dú)立DSL
2.2為何需要DSL
2.2.1 提高開發(fā)效率
2.2.2與煊蜃?業(yè)墓低?br /> 2.2.3執(zhí)行環(huán)境的改變
2.2.4其他計(jì)算模型
2.3DSL的問題
2.3.1語(yǔ)言噪音
2.3.2構(gòu)建成本
2.3.3集中營(yíng)語(yǔ)言
2.3.4 “一葉障目”的抽象
2.4廣義的語(yǔ)言處理
2.5DSL的生命周期
2.6設(shè)計(jì)優(yōu)良的DSL從何而來
第3章 實(shí)現(xiàn)DSL
3.1DSL處理之架構(gòu)
3.2解析器的工作方式
3.3文法、語(yǔ)法和語(yǔ)義
3.4解析中的數(shù)據(jù)
3.5宏
3.6測(cè)試DSL
3.6.1語(yǔ)義模型的測(cè)試
3.6.2解析器的測(cè)試
3.6.3腳本的測(cè)試
3.7錯(cuò)誤處理
3.8DSL遷移
第4章 實(shí)現(xiàn)內(nèi)部DSL
4.1連貫API與命令–查詢API
4.2解析層的需求
4.3使用函數(shù)
4.4字面量集合
4.5基于文法選擇內(nèi)部元素
4.6閉包
4.7解析樹操作
4.8標(biāo)注
4.9為字面量提供擴(kuò)展
4.10消除語(yǔ)法噪音
4.11動(dòng)態(tài)接收
4.12提供類型檢查
第5章 實(shí)現(xiàn)外部DSL
5.1語(yǔ)法分析策略
5.2輸出生成策略
5.3解析中的概念
5.3.1單獨(dú)的詞法分析
5.3.2文法和語(yǔ)言
5.3.3正則文法、上下文無(wú)關(guān)文法和上下文相關(guān)文法
5.3.4自頂向下解析和自底向上解析
5.4混入另一種語(yǔ)言
5.5XML DSL
第6章 內(nèi)部DSL vs 外部DSL
6.1學(xué)習(xí)曲線
6.2創(chuàng)建成本
6.3程序員的熟悉度
6.4與領(lǐng)域?qū)<覝贤?/p>
6.5與宿主語(yǔ)言混合
6.6強(qiáng)邊界
6.7運(yùn)行時(shí)配置
6.8趨于平庸
6.9組合多種DSL
6.10總結(jié)
第7章 其他計(jì)算模型概述
7.1幾種計(jì)算模型
7.1.1決策表
7.1.2產(chǎn)生式規(guī)則系統(tǒng)
7.1.3狀態(tài)機(jī)
7.1.4依賴網(wǎng)絡(luò)
7.1.5選擇模型
第8章 代碼生成
8.1選擇生成什么
8.2如何生成
8.3混合生成代碼和手寫代碼
8.4生成可讀的代碼
8.5解析之前的代碼生成
8.6延伸閱讀
第9章 語(yǔ)言工作臺(tái)
9.1語(yǔ)言工作臺(tái)之要素
9.2模式定義語(yǔ)言和元模型
9.3源碼編輯和投射編輯
9.4說明性編程
9.5工具之旅
9.6語(yǔ)言工作臺(tái)和CASE工具
9.7我們?cè)撌褂谜Z(yǔ)言工作臺(tái)嗎
第二部分 通 用 主 題
第10章 各種DSL
10.1Graphviz
10.2JMock
10.3CSS
10.4HQL
10.5XAML
10.6FIT
10.7Make等
第11章 語(yǔ)義模型
11.1工作原理
11.2使用場(chǎng)景
11.3入門例子(Java)
第12章 符號(hào)表
12.1工作原理
12.2使用場(chǎng)景
12.3參考文獻(xiàn)
12.4以外部DSL實(shí)現(xiàn)的依賴網(wǎng)絡(luò)(Java和ANTLR)
12.5在一個(gè)內(nèi)部DSL中使用符號(hào)鍵(Ruby)
12.6用枚舉作為靜態(tài)類型符號(hào)(Java)
第13章 語(yǔ)境變量
13.1工作原理
13.2使用場(chǎng)景
13.3讀取INI文件(C#)
第14章 構(gòu)造型生成器
14.1工作原理
14.2使用場(chǎng)景
14.3構(gòu)建簡(jiǎn)單的航班信息(C#)
第15章 宏
15.1工作原理
15.1.1文本宏
15.1.2語(yǔ)法宏
15.2使用場(chǎng)景
第16章 通知
16.1工作原理
16.2使用場(chǎng)景
16.3一個(gè)非常簡(jiǎn)單的通知(C#)
16.4解析中的通知(Java)
第三部分 外部DSL主題
第17章 分隔符指導(dǎo)翻譯
17.1工作原理
17.2使用場(chǎng)景
17.3?陀浄郑–#)
17.3.1 語(yǔ)義模型
17.3.2解析器
17.4使用格蘭特小姐的控制器解析非自治語(yǔ)句(Java)
第18章 語(yǔ)法指導(dǎo)翻譯
18.1工作原理
18.1.1詞法分析器
18.1.2語(yǔ)法分析器
18.1.3產(chǎn)生輸出
18.1.4語(yǔ)義預(yù)測(cè)
18.2使用場(chǎng)景
18.3參考文獻(xiàn)
第19章 BNF
19.1工作原理
19.1.1多重性符號(hào)(Kleene運(yùn)算符)
19.1.2其他一些有用的運(yùn)算符
19.1.3解析表達(dá)式文法
19.1.4將EBNF轉(zhuǎn)換為基礎(chǔ)BNF
19.1.5行為代碼
19.2使用場(chǎng)景
第20章 基于正則表達(dá)式表的詞法分析器
20.1工作原理
20.2使用場(chǎng)景
20.3格蘭特小姐控制器的詞法處理(Java)
第21章 遞歸下降法語(yǔ)法解析器
21.1工作原理
21.2使用場(chǎng)景
21.3參考文獻(xiàn)
21.4遞歸下降和格蘭特小姐的控制器(Java)
第22章 解析器組合子
22.1工作原理
22.1.1處理動(dòng)作
22.1.2函數(shù)式風(fēng)格的組合子
22.2使用場(chǎng)景
22.3解析器組合子和格蘭特小姐的控制器(Java)
第23章 解析器生成器
23.1工作原理
23.2使用場(chǎng)景
23.3Hello World(Java和ANTLR)
23.3.1編寫基本的文法
23.3.2構(gòu)建語(yǔ)法分析器
23.3.3為文法添加代碼動(dòng)作
23.3.4使用代溝
第24章 樹的構(gòu)建
24.1工作原理
24.2使用場(chǎng)景
24.3使用ANTLR的樹構(gòu)建語(yǔ)法(Java和ANTLR)
24.3.1標(biāo)記解釋
24.3.2解析
24.3.3組裝語(yǔ)義模型
24.4使用代碼動(dòng)作進(jìn)行樹的構(gòu)建(Java和ANTLR)
第25章 嵌入式語(yǔ)法翻譯
25.1工作原理
25.2使用場(chǎng)景
25.3格蘭特小姐的控制器(Java和ANTLR)
第26章 內(nèi)嵌解釋器
26.1工作原理
26.2使用場(chǎng)景
26.3計(jì)算器(ANTLR和Java)
第27章 外加代碼
27.1工作原理
27.2使用場(chǎng)景
27.3嵌入動(dòng)態(tài)代碼(ANTLR、Java和JavaScript)
27.3.1語(yǔ)義模型
27.3.2語(yǔ)法分析器
第28章 可變分詞方式
28.1工作原理
28.1.1字符引用
28.1.2詞法狀態(tài)
28.1.3修改標(biāo)記類型
28.1.4忽略標(biāo)記類型
28.2使用場(chǎng)景
第29章 嵌套的運(yùn)算符表達(dá)式
29.1工作原理
29.1.1使用自底向上的語(yǔ)法分析器
29.1.2自頂向下的語(yǔ)法分析器
29.2使用場(chǎng)景
第30章 以換行符作為分隔符
30.1工作原理
30.2使用場(chǎng)景
第31章 外部DSL拾遺
31.1語(yǔ)法縮進(jìn)
31.2模塊化文法
第四部分 內(nèi)部DSL主題
第32章 表達(dá)式生成器
32.1工作原理
32.2使用場(chǎng)景
32.3具有和沒有生成器的連貫日歷(Java)
32.4對(duì)于日歷使用多個(gè)生成器(Java)
第33章 函數(shù)序列
33.1工作原理
33.2使用場(chǎng)景
33.3簡(jiǎn)單的計(jì)算機(jī)配置(Java)
第34章 嵌套函數(shù)
34.1工作原理
34.2使用場(chǎng)景
34.3簡(jiǎn)單計(jì)算機(jī)配置范例(Java)
34.4用標(biāo)記處理多個(gè)不同的參數(shù)(C#)
34.5針對(duì)IDE支持使用子類型標(biāo)記(Java)
34.6使用對(duì)象初始化器(C#)
34.7周期性事件(C#)
34.7.1語(yǔ)義模型
34.7.2DSL
第35章 方法級(jí)聯(lián)
35.1工作原理
35.1.1生成器還是值
35.1.2收尾問題
35.1.3分層結(jié)構(gòu)
35.1.4漸進(jìn)式接口
35.2使用場(chǎng)景
35.3簡(jiǎn)單的計(jì)算機(jī)配置范例(Java)
35.4帶有屬性的方法級(jí)聯(lián)(C#)
35.5漸進(jìn)式接口(C#)
第36章 對(duì)象范圍
36.1工作原理
36.2使用場(chǎng)景
36.3安全代碼(C#)
36.3.1 語(yǔ)義模型
36.3.2DSL
36.4使用實(shí)例求值(Ruby)
36.5使用實(shí)例初始化器(Java)
第37章 閉包
37.1工作原理
37.2使用場(chǎng)景
第38章 嵌套閉包
38.1工作原理
38.2使用場(chǎng)景
38.3用嵌套閉包來包裝函數(shù)序列(Ruby)
38.4簡(jiǎn)單的C#示例(C#)
38.5使用方法級(jí)聯(lián)(Ruby)
38.6帶顯式閉包參數(shù)的函數(shù)序列(Ruby)
38.7采用實(shí)例級(jí)求值(Ruby)
第39章 列表的字面構(gòu)造
39.1工作原理
39.2使用場(chǎng)景
第40章 Literal Map
40.1工作原理
40.2使用場(chǎng)景
40.3使用List和Map表達(dá)計(jì)算機(jī)的配置信息(Ruby)
40.4演化為Greenspun式(Ruby)
第41章 動(dòng)態(tài)接收
41.1工作原理
41.2使用場(chǎng)景
41.3積分——使用方法名解析(Ruby)
41.3.1模型
41.3.2生成器
41.4積分——使用方法級(jí)聯(lián)(Ruby)
41.4.1模型
41.4.2生成器
41.5去掉安全儀表盤控制器中的引用(JRuby)
第42章 標(biāo)注
42.1工作原理
42.1.1定義標(biāo)注
42.1.2處理標(biāo)注
42.2使用場(chǎng)景
42.3用于運(yùn)行時(shí)處理的特定語(yǔ)法(Java)
42.4使用類方法(Ruby)
42.5動(dòng)態(tài)代碼生成(Ruby)
第43章 解析樹操作
43.1工作原理
43.2使用場(chǎng)景
43.3由C#條件生成IMAP查詢(C#)
43.3.1語(yǔ)義模型
43.3.2以C#構(gòu)建
43.3.3退后一步
第44章 類符號(hào)表
44.1 工作原理
44.2使用場(chǎng)景
44.3在靜態(tài)類型中實(shí)現(xiàn)類符號(hào)表(Java)
第45章 文本潤(rùn)色
45.1工作原理
45.2使用場(chǎng)景
45.3使用潤(rùn)色的折扣規(guī)則(Ruby)
第46章 為字面量提供擴(kuò)展
46.1工作原理
46.2使用場(chǎng)景
46.3食譜配料(C#)
第五部分 其他計(jì)算模型
第47章 適應(yīng)性模型
47.1工作原理
47.1.1在適應(yīng)性模型中使用命令式代碼
47.1.2工具
47.2使用場(chǎng)景
第48章 決策表
48.1工作原理
48.2使用場(chǎng)景
48.3為一個(gè)訂單計(jì)算費(fèi)用(C#)
48.3.1模型
48.3.2解析器
第49章 依賴網(wǎng)絡(luò)
49.1工作原理
49.2使用場(chǎng)景
49.3分析飲料(C#)
49.3.1語(yǔ)義模型
49.3.2解析器
第50章 產(chǎn)生式規(guī)則系統(tǒng)
50.1工作原理
50.1.1鏈?zhǔn)讲僮?/p>
50.1.2矛盾推導(dǎo)
50.1.3規(guī)則結(jié)構(gòu)里的模式
50.2使用場(chǎng)景
50.3俱樂部會(huì)員校驗(yàn)(C#)
50.3.1模型
50.3.2解析器
50.3.3演進(jìn)DSL
50.4適任資格的規(guī)則:擴(kuò)展俱樂部成員(C#)
50.4.1模型
50.4.2解析器
第51章 狀態(tài)機(jī)
51.1工作原理
51.2使用場(chǎng)景
51.3安全面板控制器(Java)
第六部分 代 碼 生 成
第52章 基于轉(zhuǎn)換器的代碼生成
52.1工作原理
52.2使用場(chǎng)景
52.3安全面板控制器(Java生成的C)
第53章 模板化的生成器
53.1工作原理
53.2使用場(chǎng)景
53.3生成帶有嵌套條件的安全控制面板狀態(tài)機(jī)(Velocity和Java生成的C)
第54章 嵌入助手
54.1工作原理
54.2使用場(chǎng)景
54.3安全控制面板的狀態(tài)(Java和ANTLR)
54.4助手類應(yīng)該生成HTML嗎(Java和Velocity)
第55章 基于模型的代碼生成
55.1工作原理
55.2使用場(chǎng)景
55.3安全控制面板的狀態(tài)機(jī)(C)
55.4動(dòng)態(tài)載入狀態(tài)機(jī)(C)
第56章 無(wú)視模型的代碼生成
56.1工作原理
56.2使用場(chǎng)景
56.3使用嵌套條件的安全面板狀態(tài)機(jī)(C)
第57章 代溝
57.1工作原理
57.2使用場(chǎng)景
57.3根據(jù)數(shù)據(jù)結(jié)構(gòu)生成類(Java和一些Ruby)
參考文獻(xiàn)
領(lǐng)域特定語(yǔ)言節(jié)選
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版