图书介绍
领域特定语言【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

- (英)MartinFowler著;ThoughtWorks中国译 著
- 出版社: 北京:机械工业出版社
- ISBN:9787111413059
- 出版时间:2013
- 标注页数:464页
- 文件大小:85MB
- 文件页数:490页
- 主题词:程序语言-程序设计
PDF下载
下载说明
领域特定语言PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一部分 叙述2
第1章 入门例子2
1.1 哥特式建筑安全系统2
1.2 状态机模型4
1.3 为格兰特小姐的控制器编写程序7
1.4 语言和语义模型13
1.5 使用代码生成15
1.6 使用语言工作台17
1.7 可视化20
第2章 使用DSL21
2.1 定义DSL21
2.1.1 DSL的边界22
2.1.2 片段DSL和独立DSL25
2.2 为何需要DSL25
2.2.1 提高开发效率26
2.2.2 与领域专家的沟通26
2.2.3 执行环境的改变27
2.2.4 其他计算模型28
2.3 DSL的问题28
2.3.1 语言噪音29
2.3.2 构建成本29
2.3.3 集中营语言30
2.3.4 “一叶障目”的抽象30
2.4 广义的语言处理31
2.5 DSL的生命周期31
2.6 设计优良的DSL从何而来32
第3章 实现DSL34
3.1 DSL处理之架构34
3.2 解析器的工作方式37
3.3 文法、语法和语义39
3.4 解析中的数据39
3.5 宏41
3.6 测试DSL42
3.6.1 语义模型的测试42
3.6.2 解析器的测试45
3.6.3 脚本的测试49
3.7 错误处理50
3.8 DSL迁移51
第4章 实现内部DSL54
4.1 连贯API与命令-查询API54
4.2 解析层的需求57
4.3 使用函数58
4.4 字面量集合61
4.5 基于文法选择内部元素63
4.6 闭包64
4.7 解析树操作66
4.8 标注67
4.9 为字面量提供扩展69
4.10 消除语法噪音69
4.11 动态接收69
4.12 提供类型检查70
第5章 实现外部DSL72
5.1 语法分析策略72
5.2 输出生成策略74
5.3 解析中的概念76
5.3.1 单独的词法分析76
5.3.2 文法和语言77
5.3.3 正则文法、上下文无关文法和上下文相关文法77
5.3.4 自顶向下解析和自底向上解析79
5.4 混入另一种语言81
5.5 XML DSL82
第6章 内部DSL vs外部DSL84
6.1 学习曲线84
6.2 创建成本85
6.3 程序员的熟悉度85
6.4 与领域专家沟通86
6.5 与宿主语言混合86
6.6 强边界87
6.7 运行时配置87
6.8 趋于平庸88
6.9 组合多种DSL88
6.10 总结89
第7章 其他计算模型概述90
7.1 几种计算模型92
7.1.1 决策表92
7.1.2 产生式规则系统93
7.1.3 状态机94
7.1.4 依赖网络95
7.1.5 选择模型95
第8章 代码生成96
8.1 选择生成什么96
8.2 如何生成99
8.3 混合生成代码和手写代码100
8.4 生成可读的代码101
8.5 解析之前的代码生成101
8.6 延伸阅读101
第9章 语言工作台102
9.1 语言工作台之要素102
9.2 模式定义语言和元模型103
9.3 源码编辑和投射编辑107
9.4 说明性编程109
9.5 工具之旅110
9.6 语言工作台和CASE工具112
9.7 我们该使用语言工作台吗112
第二部分 通用主题116
第10章 各种DSL116
10.1 Graphviz116
10.2 JMock117
10.3 CSS118
10.4 HQL119
10.5 XAML120
10.6 FIT122
10.7 Make等123
第11章 语义模型125
11.1 工作原理125
11.2 使用场景127
11.3 入门例子(Java)128
第12章 符号表129
12.1 工作原理129
12.2 使用场景131
12.3 参考文献131
12.4 以外部DSL实现的依赖网络(Java和ANTLR)131
12.5 在一个内部DSL中使用符号键(Ruby)133
12.6 用枚举作为静态类型符号(Java)134
第13章 语境变量137
13.1 工作原理137
13.2 使用场景137
13.3 读取INI文件(C#)138
第14章 构造型生成器141
14.1 工作原理141
14.2 使用场景142
14.3 构建简单的航班信息(C#)142
第15章 宏144
15.1 工作原理144
15.1.1 文本宏145
15.1.2 语法宏148
15.2 使用场景151
第16章 通知153
16.1 工作原理153
16.2 使用场景154
16.3 一个非常简单的通知(C#)154
16.4 解析中的通知(Java)155
第三部分 外部DSL主题160
第17章 分隔符指导翻译160
17.1 工作原理160
17.2 使用场景162
17.3 常客记分(C#)163
17.3.1 语义模型163
17.3.2 解析器165
17.4 使用格兰特小姐的控制器解析非自治语句(Java)168
第18章 语法指导翻译175
18.1 工作原理175
18.1.1 词法分析器176
18.1.2 语法分析器179
18.1.3 产生输出181
18.1.4 语义预测181
18.2 使用场景182
18.3 参考文献182
第19章 BNF183
19.1 工作原理183
19.1.1 多重性符号(Kleene运算符)184
19.1.2 其他一些有用的运算符186
19.1.3 解析表达式文法186
19.1.4 将EBNF转换为基础BNF187
19.1.5 行为代码189
19.2 使用场景191
第20章 基于正则表达式表的词法分析器192
20.1 工作原理192
20.2 使用场景193
20.3 格兰特小姐控制器的词法处理(Java)194
第21章 递归下降法语法解析器197
21.1 工作原理197
21.2 使用场景200
21.3 参考文献200
21.4 递归下降和格兰特小姐的控制器(Java)201
第22章 解析器组合子205
22.1 工作原理206
22.1.1 处理动作208
22.1.2 函数式风格的组合子209
22.2 使用场景209
22.3 解析器组合子和格兰特小姐的控制器(Java)210
第23章 解析器生成器217
23.1 工作原理217
23.2 使用场景219
23.3 Hello World(Java和ANTLR)219
23.3.1 编写基本的文法220
23.3.2 构建语法分析器221
23.3.3 为文法添加代码动作223
23.3.4 使用代沟225
第24章 树的构建227
24.1 工作原理227
24.2 使用场景229
24.3 使用ANTLR的树构建语法(Java和ANTLR)230
24.3.1 标记解释230
24.3.2 解析231
24.3.3 组装语义模型233
24.4 使用代码动作进行树的构建(Java和ANTLR)236
第25章 嵌入式语法翻译242
25.1 工作原理242
25.2 使用场景243
25.3 格兰特小姐的控制器(Java和ANTLR)243
第26章 内嵌解释器247
26.1 工作原理247
26.2 使用场景247
26.3 计算器(ANTLR和Java)247
第27章 外加代码250
27.1 工作原理250
27.2 使用场景251
27.3 嵌入动态代码(ANTLR、Java和JavaScript)252
27.3.1 语义模型252
27.3.2 语法分析器254
第28章 可变分词方式258
28.1 工作原理258
28.1.1 字符引用259
28.1.2 词法状态261
28.1.3 修改标记类型262
28.1.4 忽略标记类型263
28.2 使用场景264
第29章 嵌套的运算符表达式265
29.1 工作原理265
29.1.1 使用自底向上的语法分析器265
29.1.2 自顶向下的语法分析器266
29.2 使用场景268
第30章 以换行符作为分隔符269
30.1 工作原理269
30.2 使用场景271
第31章 外部DSL拾遗272
31.1 语法缩进272
31.2 模块化文法274
第四部分 内部DSL主题276
第32章 表达式生成器276
32.1 工作原理276
32.2 使用场景277
32.3 具有和没有生成器的连贯日历(Java)278
32.4 对于日历使用多个生成器(Java)280
第33章 函数序列282
33.1 工作原理282
33.2 使用场景283
33.3 简单的计算机配置(Java)283
第34章 嵌套函数286
34.1 工作原理286
34.2 使用场景287
34.3 简单计算机配置范例(Java)288
34.4 用标记处理多个不同的参数(C#)289
34.5 针对IDE支持使用子类型标记(Java)291
34.6 使用对象初始化器(C#)292
34.7 周期性事件(C#)293
34.7.1 语义模型294
34.7.2 DSL296
第35章 方法级联299
35.1 工作原理299
35.1.1 生成器还是值300
35.1.2 收尾问题301
35.1.3 分层结构301
35.1.4 渐进式接口302
35.2 使用场景303
35.3 简单的计算机配置范例(Java)303
35.4 带有属性的方法级联(C#)306
35.5 渐进式接口(C#)307
第36章 对象范围309
36.1 工作原理309
36.2 使用场景310
36.3 安全代码(C#)310
36.3.1 语义模型311
36.3.2 DSL313
36.4 使用实例求值(Ruby)315
36.5 使用实例初始化器(Java)317
第37章 闭包319
37.1 工作原理319
37.2 使用场景323
第38章 嵌套闭包324
38.1 工作原理324
38.2 使用场景325
38.3 用嵌套闭包来包装函数序列(Ruby)326
38.4 简单的C#示例(C#)327
38.5 使用方法级联(Ruby)328
38.6 带显式闭包参数的函数序列(Ruby)330
38.7 采用实例级求值(Ruby)332
第39章 列表的字面构造335
39.1 工作原理335
39.2 使用场景335
第40章 Literal Map336
40.1 工作原理336
40.2 使用场景336
40.3 使用List和Map表达计算机的配置信息(Ruby)337
40.4 演化为Greenspun式(Ruby)338
第41章 动态接收342
41.1 工作原理342
41.2 使用场景343
41.3 积分——使用方法名解析(Ruby)344
41.3.1 模型345
41.3.2 生成器347
41.4 积分——使用方法级联(Ruby)348
41.4.1 模型349
41.4.2 生成器349
41.5 去掉安全仪表盘控制器中的引用(JRuby)351
第42章 标注357
42.1 工作原理357
42.1.1 定义标注358
42.1.2 处理标注359
42.2 使用场景360
42.3 用于运行时处理的特定语法(Java)360
42.4 使用类方法(Ruby)362
42.5 动态代码生成(Ruby)363
第43章 解析树操作365
43.1 工作原理365
43.2 使用场景366
43.3 由C#条件生成IMAP查询(C#)367
43.3.1 语义模型367
43.3.2 以C#构建369
43.3.3 退后一步373
第44章 类符号表375
44.1 工作原理375
44.2 使用场景376
44.3 在静态类型中实现类符号表(Java)377
第45章 文本润色383
45.1 工作原理383
45.2 使用场景383
45.3 使用润色的折扣规则(Ruby)384
第46章 为字面量提供扩展386
46.1 工作原理386
46.2 使用场景387
46.3 食谱配料(C#)387
第五部分 其他计算模型390
第47章 适应性模型390
47.1 工作原理390
47.1.1 在适应性模型中使用命令式代码391
47.1.2 工具393
47.2 使用场景394
第48章 决策表395
48.1 工作原理395
48.2 使用场景396
48.3 为一个订单计算费用(C#)396
48.3.1 模型397
48.3.2 解析器400
第49章 依赖网络403
49.1 工作原理403
49.2 使用场景405
49.3 分析饮料(C#)405
49.3.1 语义模型406
49.3.2 解析器407
第50章 产生式规则系统409
50.1 工作原理409
50.1.1 链式操作410
50.1.2 矛盾推导411
50.1.3 规则结构里的模式412
50.2 使用场景412
50.3 俱乐部会员校验(C#)412
50.3.1 模型413
50.3.2 解析器414
50.3.3 演进DSL414
50.4 适任资格的规则:扩展俱乐部成员(C#)416
50.4.1 模型417
50.4.2 解析器419
第51章 状态机421
51.1 工作原理421
51.2 使用场景423
51.3 安全面板控制器(Java)423
第六部分 代码生成426
第52章 基于转换器的代码生成426
52.1 工作原理426
52.2 使用场景427
52.3 安全面板控制器(Java生成的C)427
第53章 模板化的生成器431
53.1 工作原理431
53.2 使用场景432
53.3 生成带有嵌套条件的安全控制面板状态机(Velocity和Java 生成的C)432
第54章 嵌入助手438
54.1 工作原理438
54.2 使用场景439
54.3 安全控制面板的状态(Java和ANTLR)439
54.4 助手类应该生成HTML吗(Java和Velocity)442
第55章 基于模型的代码生成444
55.1 工作原理444
55.2 使用场景445
55.3 安全控制面板的状态机(C)445
55.4 动态载入状态机(C)451
第56章 无视模型的代码生成454
56.1 工作原理454
56.2 使用场景455
56.3 使用嵌套条件的安全面板状态机(C)455
第57章 代沟457
57.1 工作原理457
57.2 使用场景458
57.3 根据数据结构生成类(Java和一些Ruby)459
参考文献463
热门推荐
- 2879221.html
- 2255902.html
- 1748817.html
- 1483138.html
- 2770673.html
- 2521889.html
- 406967.html
- 342257.html
- 3546359.html
- 3307331.html
- http://www.ickdjs.cc/book_2499165.html
- http://www.ickdjs.cc/book_1050720.html
- http://www.ickdjs.cc/book_1888120.html
- http://www.ickdjs.cc/book_1158978.html
- http://www.ickdjs.cc/book_942206.html
- http://www.ickdjs.cc/book_516863.html
- http://www.ickdjs.cc/book_2648110.html
- http://www.ickdjs.cc/book_3297334.html
- http://www.ickdjs.cc/book_3869093.html
- http://www.ickdjs.cc/book_3363526.html