日韩精品 中文字幕 动漫,91亚洲午夜一区,在线不卡日本v一区v二区丶,久久九九国产精品自在现拍

注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)其他編程語(yǔ)言/工具領(lǐng)域特定語(yǔ)言

領(lǐng)域特定語(yǔ)言

領(lǐng)域特定語(yǔ)言

定 價(jià):¥89.00

作 者: (英)Martin Fowler 著,ThoughtWorks中國(guó) 譯
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 計(jì)算機(jī)/網(wǎng)絡(luò) 軟件工程/開(kāi)發(fā)項(xiàng)目管理

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787111413059 出版時(shí)間: 2013-03-01 包裝: 平裝
開(kāi)本: ` 頁(yè)數(shù): 488 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《領(lǐng)域特定語(yǔ)言》是DSL領(lǐng)域的豐碑之作,由世界級(jí)軟件開(kāi)發(fā)大師和軟件開(kāi)發(fā)“教父”Martin Fowler歷時(shí)多年寫(xiě)作而成,ThoughtWorks中國(guó)翻譯。全面詳盡地講解了各種DSL及其構(gòu)造方式,揭示了與編程語(yǔ)言無(wú)關(guān)的通用原則和模式,闡釋了如何通過(guò)DSL有效提高開(kāi)發(fā)人員的生產(chǎn)力以及增進(jìn)與領(lǐng)域?qū)<业挠行贤?,能為開(kāi)發(fā)人員選擇和使用DSL提供有效的決策依據(jù)和指導(dǎo)方法。《領(lǐng)域特定語(yǔ)言》全書(shū)共57章,分為六個(gè)部分:第一部分介紹了什么是DSL,DSL的用途,如何實(shí)現(xiàn)外部DS和內(nèi)部DSL,如何生成代碼,語(yǔ)言工作臺(tái)的使用方法;第二部分介紹了各種DSL,分別講述了語(yǔ)義模型、符號(hào)表、語(yǔ)境變量、構(gòu)造型生成器、宏和通知的工作原理和使用場(chǎng)景;第三部分分別揭示分隔符指導(dǎo)翻譯、語(yǔ)法指導(dǎo)翻譯、BNF、易于正則表達(dá)式表的詞法分析器、遞歸下降法詞法分析器、解析器組合子、解析器生成器、樹(shù)的構(gòu)建、嵌入式語(yǔ)法翻譯、內(nèi)嵌解釋器、外加代碼等;第四部分介紹了表達(dá)式生成器、函數(shù)序列、嵌套函數(shù)、方法級(jí)聯(lián)、對(duì)象范圍、閉包、嵌套閉包、標(biāo)注、解析數(shù)操作、類(lèi)符號(hào)表、文本潤(rùn)色、字面量擴(kuò)展的工作原理和使用場(chǎng)景;第五部分介紹了適應(yīng)性模型、決策表、依賴(lài)網(wǎng)絡(luò)、產(chǎn)生式規(guī)則系統(tǒng)、狀態(tài)機(jī)等計(jì)算模型的工作原理和使用場(chǎng)景;第六部分介紹了基于轉(zhuǎn)換器的代碼生成、模板化的生成器、嵌入助手、基于模型的代碼生成、無(wú)視模型的代碼生成和代溝等內(nèi)容。

作者簡(jiǎn)介

  Martin Fowler,世界級(jí)軟件開(kāi)發(fā)大師,軟件開(kāi)發(fā)“教父”,敏捷開(kāi)發(fā)方法的創(chuàng)始人之一,在面向?qū)ο蠓治雠c設(shè)計(jì)、UML、模式、極限編程、重構(gòu)和DSL等領(lǐng)域都有非常深入的研究并為軟件開(kāi)發(fā)行業(yè)做出了卓越貢獻(xiàn)。他樂(lè)于分享,撰寫(xiě)了《企業(yè)應(yīng)用架構(gòu)模式》(榮獲第13屆Jolt生產(chǎn)力大獎(jiǎng))、《重構(gòu):改善既有代碼的設(shè)計(jì)》、《分析模式:可復(fù)用的對(duì)象模型》、《UML精粹:標(biāo)準(zhǔn)對(duì)象建模語(yǔ)言簡(jiǎn)明指南》等在軟件開(kāi)發(fā)領(lǐng)域頗負(fù)盛名的著作。

圖書(shū)目錄

譯者序
前言
第一部分 敘  述
第1章入門(mén)例子2
1.1 哥特式建筑安全系統(tǒng)2
1.2 狀態(tài)機(jī)模型4
1.3 為格蘭特小姐的控制器編寫(xiě)程序7
1.4 語(yǔ)言和語(yǔ)義模型13
1.5使用代碼生成15
1.6 使用語(yǔ)言工作臺(tái)17
1.7 可視化20
第2章 使用DSL21
2.1定義DSL21
 2.1.1DSL的邊界22
 2.1.2片段DSL和獨(dú)立DSL25
2.2為何需要DSL25
 2.2.1 提高開(kāi)發(fā)效率26
 2.2.2與領(lǐng)域?qū)<业臏贤?6
 2.2.3執(zhí)行環(huán)境的改變27
 2.2.4其他計(jì)算模型28
2.3DSL的問(wèn)題28
 2.3.1語(yǔ)言噪音29
 2.3.2構(gòu)建成本29
 2.3.3集中營(yíng)語(yǔ)言30
 2.3.4 “一葉障目”的抽象30
2.4廣義的語(yǔ)言處理31
2.5DSL的生命周期31
2.6設(shè)計(jì)優(yōu)良的DSL從何而來(lái)32
第3章實(shí)現(xiàn)DSL34
3.1DSL處理之架構(gòu)34
3.2解析器的工作方式37
3.3文法、語(yǔ)法和語(yǔ)義39
3.4解析中的數(shù)據(jù)39
3.5宏41
3.6測(cè)試DSL42
 3.6.1語(yǔ)義模型的測(cè)試42
 3.6.2解析器的測(cè)試45
 3.6.3腳本的測(cè)試49
3.7錯(cuò)誤處理50
3.8DSL遷移51
第4章實(shí)現(xiàn)內(nèi)部DSL54
4.1連貫API與命令–查詢(xún)API54
4.2解析層的需求57
4.3使用函數(shù)58
4.4字面量集合61
4.5基于文法選擇內(nèi)部元素63
4.6閉包64
4.7解析樹(shù)操作66
4.8標(biāo)注67
4.9為字面量提供擴(kuò)展69
4.10消除語(yǔ)法噪音69
4.11動(dòng)態(tài)接收69
4.12提供類(lèi)型檢查70
第5章實(shí)現(xiàn)外部DSL72
5.1語(yǔ)法分析策略72
5.2輸出生成策略74
5.3解析中的概念76
 5.3.1單獨(dú)的詞法分析76
 5.3.2文法和語(yǔ)言77
 5.3.3正則文法、上下文無(wú)關(guān)文法和上下文相關(guān)文法77
 5.3.4自頂向下解析和自底向上解析79
5.4混入另一種語(yǔ)言81
5.5XML DSL82
第6章內(nèi)部DSL vs 外部DSL84
6.1學(xué)習(xí)曲線(xiàn)84
6.2創(chuàng)建成本85
6.3程序員的熟悉度85
6.4與領(lǐng)域?qū)<覝贤?6
6.5與宿主語(yǔ)言混合86
6.6強(qiáng)邊界87
6.7運(yùn)行時(shí)配置87
6.8趨于平庸88
6.9組合多種DSL88
6.10總結(jié)89
第7章其他計(jì)算模型概述90
7.1幾種計(jì)算模型92
 7.1.1決策表92
 7.1.2產(chǎn)生式規(guī)則系統(tǒng)93
 7.1.3狀態(tài)機(jī)94
 7.1.4依賴(lài)網(wǎng)絡(luò)95
 7.1.5選擇模型95
第8章代碼生成96
8.1選擇生成什么96
8.2如何生成99
8.3混合生成代碼和手寫(xiě)代碼100
8.4生成可讀的代碼101
8.5解析之前的代碼生成101
8.6延伸閱讀101
第9章語(yǔ)言工作臺(tái)102
9.1語(yǔ)言工作臺(tái)之要素102
9.2模式定義語(yǔ)言和元模型103
9.3源碼編輯和投射編輯107
9.4說(shuō)明性編程109
9.5工具之旅110
9.6語(yǔ)言工作臺(tái)和CASE工具112
9.7我們?cè)撌褂谜Z(yǔ)言工作臺(tái)嗎112
第二部分 通 用 主 題
第10章各種DSL116
10.1Graphviz116
10.2JMock117
10.3CSS118
10.4HQL119
10.5XAML120
10.6FIT122
10.7Make等123
第11章語(yǔ)義模型125
11.1工作原理125
11.2使用場(chǎng)景127
11.3入門(mén)例子(Java)128
第12章符號(hào)表129
12.1工作原理129
12.2使用場(chǎng)景131
12.3參考文獻(xiàn)131
12.4以外部DSL實(shí)現(xiàn)的依賴(lài)網(wǎng)絡(luò)(Java和ANTLR)131
12.5在一個(gè)內(nèi)部DSL中使用符號(hào)鍵(Ruby)133
12.6用枚舉作為靜態(tài)類(lèi)型符號(hào)(Java)134
第13章語(yǔ)境變量137
13.1工作原理137
13.2使用場(chǎng)景137
13.3讀取INI文件(C#)138
第14章構(gòu)造型生成器141
14.1工作原理141
14.2使用場(chǎng)景142
14.3構(gòu)建簡(jiǎn)單的航班信息(C#)142
第15章宏144
15.1工作原理144
   15.1.1文本宏145
   15.1.2語(yǔ)法宏148
15.2使用場(chǎng)景151
第16章通知153
16.1工作原理153
16.2使用場(chǎng)景154
16.3一個(gè)非常簡(jiǎn)單的通知(C#)154
16.4解析中的通知(Java)155
第三部分 外部DSL主題
第17章分隔符指導(dǎo)翻譯160
17.1工作原理160
17.2使用場(chǎng)景162
17.3??陀浄郑–#)163
   17.3.1 語(yǔ)義模型163
   17.3.2解析器165
17.4使用格蘭特小姐的控制器解析非自治語(yǔ)句(Java)168
第18章語(yǔ)法指導(dǎo)翻譯175
18.1工作原理175
   18.1.1詞法分析器176
   18.1.2語(yǔ)法分析器179
   18.1.3產(chǎn)生輸出181
   18.1.4語(yǔ)義預(yù)測(cè)181
18.2使用場(chǎng)景182
18.3參考文獻(xiàn)182
第19章BNF183
19.1工作原理183
   19.1.1多重性符號(hào)(Kleene運(yùn)算符)184
   19.1.2其他一些有用的運(yùn)算符186
   19.1.3解析表達(dá)式文法186
   19.1.4將EBNF轉(zhuǎn)換為基礎(chǔ)BNF187
   19.1.5行為代碼189
19.2使用場(chǎng)景191
第20章基于正則表達(dá)式表的詞法分析器192
20.1工作原理192
20.2使用場(chǎng)景193
20.3格蘭特小姐控制器的詞法處理(Java)194
第21章遞歸下降法語(yǔ)法解析器197
21.1工作原理197
21.2使用場(chǎng)景200
21.3參考文獻(xiàn)200
21.4遞歸下降和格蘭特小姐的控制器(Java)201
第22章解析器組合子205
22.1工作原理206
   22.1.1處理動(dòng)作208
   22.1.2函數(shù)式風(fēng)格的組合子209
22.2使用場(chǎng)景209
22.3解析器組合子和格蘭特小姐的控制器(Java)210
第23章解析器生成器217
23.1工作原理217
23.2使用場(chǎng)景219
23.3Hello World(Java和ANTLR)219
   23.3.1編寫(xiě)基本的文法220
   23.3.2構(gòu)建語(yǔ)法分析器221
   23.3.3為文法添加代碼動(dòng)作223
   23.3.4使用代溝225
第24章樹(shù)的構(gòu)建227
24.1工作原理227
24.2使用場(chǎng)景229
24.3使用ANTLR的樹(shù)構(gòu)建語(yǔ)法(Java和ANTLR)230
   24.3.1標(biāo)記解釋230
   24.3.2解析231
   24.3.3組裝語(yǔ)義模型233
24.4使用代碼動(dòng)作進(jìn)行樹(shù)的構(gòu)建(Java和ANTLR)236
第25章嵌入式語(yǔ)法翻譯242
25.1工作原理242
25.2使用場(chǎng)景243
25.3格蘭特小姐的控制器(Java和ANTLR)243
第26章內(nèi)嵌解釋器247
26.1工作原理247
26.2使用場(chǎng)景247
26.3計(jì)算器(ANTLR和Java)247
第27章外加代碼250
27.1工作原理250
27.2使用場(chǎng)景251
27.3嵌入動(dòng)態(tài)代碼(ANTLR、Java和JavaScript)252
   27.3.1語(yǔ)義模型252
   27.3.2語(yǔ)法分析器254
第28章可變分詞方式258
28.1工作原理258
   28.1.1字符引用259
   28.1.2詞法狀態(tài)261
   28.1.3修改標(biāo)記類(lèi)型262
   28.1.4忽略標(biāo)記類(lèi)型263
28.2使用場(chǎng)景264
第29章嵌套的運(yùn)算符表達(dá)式265
29.1工作原理265
   29.1.1使用自底向上的語(yǔ)法分析器265
   29.1.2自頂向下的語(yǔ)法分析器266
29.2使用場(chǎng)景268
第30章以換行符作為分隔符269
30.1工作原理269
30.2使用場(chǎng)景271
第31章外部DSL拾遺272
31.1語(yǔ)法縮進(jìn)272
31.2模塊化文法274
第四部分 內(nèi)部DSL主題
第32章表達(dá)式生成器276
32.1工作原理276
32.2使用場(chǎng)景277
32.3具有和沒(méi)有生成器的連貫日歷(Java)278
32.4對(duì)于日歷使用多個(gè)生成器(Java)280
第33章函數(shù)序列282
33.1工作原理282
33.2使用場(chǎng)景283
33.3簡(jiǎn)單的計(jì)算機(jī)配置(Java)283
第34章嵌套函數(shù)286
34.1工作原理286
34.2使用場(chǎng)景287
34.3簡(jiǎn)單計(jì)算機(jī)配置范例(Java)288
34.4用標(biāo)記處理多個(gè)不同的參數(shù)(C#)289
34.5針對(duì)IDE支持使用子類(lèi)型標(biāo)記(Java)291
34.6使用對(duì)象初始化器(C#)292
34.7周期性事件(C#)293
   34.7.1語(yǔ)義模型294
   34.7.2DSL296
第35章方法級(jí)聯(lián)299
35.1工作原理299
  35.1.1生成器還是值300
  35.1.2收尾問(wèn)題301
  35.1.3分層結(jié)構(gòu)301
  35.1.4漸進(jìn)式接口302
35.2使用場(chǎng)景303
35.3簡(jiǎn)單的計(jì)算機(jī)配置范例(Java)303
35.4帶有屬性的方法級(jí)聯(lián)(C#)306
35.5漸進(jìn)式接口(C#)307
第36章對(duì)象范圍309
36.1工作原理309
36.2使用場(chǎng)景310
36.3安全代碼(C#)310
36.3.1 語(yǔ)義模型311
36.3.2DSL313
36.4使用實(shí)例求值(Ruby)315
36.5使用實(shí)例初始化器(Java)317
第37章閉包319
37.1工作原理319
37.2使用場(chǎng)景323
第38章嵌套閉包324
38.1工作原理324
38.2使用場(chǎng)景325
38.3用嵌套閉包來(lái)包裝函數(shù)序列(Ruby)326
38.4簡(jiǎn)單的C#示例(C#)327
38.5使用方法級(jí)聯(lián)(Ruby)328
38.6帶顯式閉包參數(shù)的函數(shù)序列(Ruby)330
38.7采用實(shí)例級(jí)求值(Ruby)332
第39章列表的字面構(gòu)造335
39.1工作原理335
39.2使用場(chǎng)景335
第40章Literal Map336
40.1工作原理336
40.2使用場(chǎng)景336
40.3使用List和Map表達(dá)計(jì)算機(jī)的配置信息(Ruby)337
40.4演化為Greenspun式(Ruby)338
第41章動(dòng)態(tài)接收342
41.1工作原理342
41.2使用場(chǎng)景343
41.3積分——使用方法名解析(Ruby)344
   41.3.1模型345
   41.3.2生成器347
41.4積分——使用方法級(jí)聯(lián)(Ruby)348
   41.4.1模型349
   41.4.2生成器349
41.5去掉安全儀表盤(pán)控制器中的引用(JRuby)351
第42章標(biāo)注357
42.1工作原理357
   42.1.1定義標(biāo)注358
   42.1.2處理標(biāo)注359
42.2使用場(chǎng)景360
42.3用于運(yùn)行時(shí)處理的特定語(yǔ)法(Java)360
42.4使用類(lèi)方法(Ruby)362
42.5動(dòng)態(tài)代碼生成(Ruby)363
第43章解析樹(shù)操作365
43.1工作原理365
43.2使用場(chǎng)景366
43.3由C#條件生成IMAP查詢(xún)(C#)367
   43.3.1語(yǔ)義模型367
   43.3.2以C#構(gòu)建369
   43.3.3退后一步373
第44章類(lèi)符號(hào)表375
44.1 工作原理375
44.2使用場(chǎng)景376
44.3在靜態(tài)類(lèi)型中實(shí)現(xiàn)類(lèi)符號(hào)表(Java)377
第45章文本潤(rùn)色383
45.1工作原理383
45.2使用場(chǎng)景383
45.3使用潤(rùn)色的折扣規(guī)則(Ruby)384
第46章為字面量提供擴(kuò)展386
46.1工作原理386
46.2使用場(chǎng)景387
46.3食譜配料(C#)387
第五部分 其他計(jì)算模型
第47章適應(yīng)性模型390
47.1工作原理390
   47.1.1在適應(yīng)性模型中使用命令式代碼391
   47.1.2工具393
47.2使用場(chǎng)景394
第48章決策表395
48.1工作原理395
48.2使用場(chǎng)景396
48.3為一個(gè)訂單計(jì)算費(fèi)用(C#)396
   48.3.1模型397
   48.3.2解析器400
第49章依賴(lài)網(wǎng)絡(luò)403
49.1工作原理403
49.2使用場(chǎng)景405
49.3分析飲料(C#)405
   49.3.1語(yǔ)義模型406
   49.3.2解析器407
第50章產(chǎn)生式規(guī)則系統(tǒng)409
50.1工作原理409
   50.1.1鏈?zhǔn)讲僮?10
   50.1.2矛盾推導(dǎo)411
   50.1.3規(guī)則結(jié)構(gòu)里的模式412
50.2使用場(chǎng)景412
50.3俱樂(lè)部會(huì)員校驗(yàn)(C#)412
   50.3.1模型413
   50.3.2解析器414
   50.3.3演進(jìn)DSL414
50.4適任資格的規(guī)則:擴(kuò)展俱樂(lè)部成員(C#)416
   50.4.1模型417
   50.4.2解析器419
第51章?tīng)顟B(tài)機(jī)421
51.1工作原理421
51.2使用場(chǎng)景423
51.3安全面板控制器(Java)423
第六部分 代 碼 生 成
第52章基于轉(zhuǎn)換器的代碼生成426
52.1工作原理426
52.2使用場(chǎng)景427
52.3安全面板控制器(Java生成的C)427
第53章模板化的生成器431
53.1工作原理431
53.2使用場(chǎng)景432
53.3生成帶有嵌套條件的安全控制面板狀態(tài)機(jī)(Velocity和Java生成的C)432
第54章嵌入助手438
54.1工作原理438
54.2使用場(chǎng)景439
54.3安全控制面板的狀態(tài)(Java和ANTLR)439
54.4助手類(lèi)應(yīng)該生成HTML嗎(Java和Velocity)442
第55章基于模型的代碼生成444
55.1工作原理444
55.2使用場(chǎng)景445
55.3安全控制面板的狀態(tài)機(jī)(C)445
55.4動(dòng)態(tài)載入狀態(tài)機(jī)(C)451
第56章無(wú)視模型的代碼生成454
56.1工作原理454
56.2使用場(chǎng)景455
56.3使用嵌套條件的安全面板狀態(tài)機(jī)(C)455
第57章代溝457
57.1工作原理457
57.2使用場(chǎng)景458
57.3根據(jù)數(shù)據(jù)結(jié)構(gòu)生成類(lèi)(Java和一些Ruby)459
參考文獻(xiàn)463

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) rgspecialties.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)