1. e-works数字化企业网
  2. 书屋
  3. 书籍列表
  4. 领域特定语言

领域特定语言

 查看您的阅读历史
领域特定语言

全书共57章,分为六个部分:第一部分介绍了什么是DSL,DSL的用途,如何实现外部DS和内部DSL,如何生成代码,语言工作台的使用方法;第二部分介绍了各种DSL,分别讲述了语义模型、符号表、语境变量、构造型生成器、宏和通知的工作原理和使用场景;第三部分分别揭示分隔符指导翻译、语法指导翻译、BNF、易于正则表达式表的词法分析器、递归下降法词法分析器、解析器组合子、解析器生成器、树的构建、嵌入式语法翻译、内嵌解释器、外加代码等;第四部分介绍了表达式生成器、函数序列、嵌套函数、方法级联、对象范围、闭包、嵌套闭包、标注、解析数操作、类符号表、文本润色、字面量扩展的工作原理和使用场景;第五部分介绍了适应性模型、决策表、依赖网络、产生式规则系统、状态机等计算模型的工作原理和使用场景;第六部分介绍了基于转换器的代码生成、模板化的生成器、嵌入助手、基于模型的代码生成、无视模型的代码生成和代沟等内容。

作者:Martin Fowler

出版社:华章出版社

出版时间: 2013年3月

定价:¥89.00

京东价:¥60.60

作者简介

Martin Fowler,世界级软件开发大师,软件开发“教父”,敏捷开发方法的创始人之一,在面向对象分析与设计、UML、模式、极限编程、重构和DSL等领域都有非常深入的研究并为软件开发行业做出了卓越贡献。他乐于分享,撰写了《企业应用架构模式》(荣获第13届Jolt生产力大奖)、《重构:改善既有代码的设计》、《分析模式:可复用的对象模型》、《UML精粹:标准对象建模语言简明指南》等在软件开发领域颇负盛名的著作。

 新书抢先读
• AI驱动的数据治理
• 数字化运维创新与实践
• 可持续数据治理实施指南
• 6G之美:新一代无线通信技术演进
• 可视化指南:数据分析与数据交互
• 数据可视化(纪念版)
• 云计算通俗讲义(第4版)
• 让云落地:云计算服务模式(SaaS、PaaS和IaaS)设计决策
• 云端架构:基于云平台的41种可复用的架构最佳实践
• 一本书读懂Web3.0:区块链、NFT、元宇宙和DAO
 他们也在读这本书
flyss206

flyss206

煮咖啡的鱼

煮咖啡的鱼

Ewk_zd

Ewk_zd

tonibi

tonibi

cheneychain

cheneychain

tandingyong

tandingyong

z1346260

z1346260

第1章 入门例子

落笔之初,我需要快速地解释一下本书的内容,就是解释什么是领域特定语言(Domain–Specific Language,DSL)。为达此目的,我一般都会先展示一个具体的例子,随后再给出抽象的定义。因此,我会从一个例子开始,展示DSL可以采用的不同形式。

第2章 使用DSL

看过上一章的例子后,即便尚未给出DSL的一般定义,对于何为DSL,你也应该已经有了自己的认识。(第10章中有更多例子。)现在,要开始讨论DSL的定义及其优势与问题。这样就可以为下一章讨论DSL实现提供一些上下文。

第3章 实现DSL

至此,对于什么是DSL,以及为何要用DSL,我们已经透彻理解。如果要开始构建DSL,那么现在该深入研究所用的技术了。虽然构建内部DSL和外部DSL所用的技术有所不同,但它们还是有一些共通之处的。本章主要关注内部DSL和外部DSL的一些共通问题,而下一章再讨论各自具体的问题。

第4章 实现内部DSL
• 第一节 4.1连贯API与命令–查询
• 第二节 4.2解析层的需求
• 第三节 4.3使用函数
• 第四节 4.4字面量集合
• 第五节 4.5基于文法选择内部元素
• 第六节 4.6闭包
• 第七节 4.7解析树操作
• 第八节 4.8标注
• 第九节 4.9为字面量提供扩展
• 第一十零节 4.10消除语法噪音
• 第一十一节 4.11动态接收
• 第一十二节 4.12提供类型检查
第5章 实现外部DSL
• 第一节 5.1语法分析策略
• 第二节 5.2输出生成策略
• 第三节 5.3解析中的概念
• 第四节 5.4混入另一种语言
• 第五节 5.5XML DSL
第6章 内部DSL vs 外部DSL
• 第一节 6.1学习曲线
• 第二节 6.2创建成本
• 第三节 6.3程序员的熟悉度
• 第四节 6.4与领域专家沟通
• 第五节 6.5与宿主语言混合
• 第六节 6.6强边界
• 第七节 6.7运行时配置
• 第八节 6.8趋于平庸
• 第九节 6.9组合多种
• 第一十零节 6.10总结
第7章 其他计算模型概述
• 第一节 7.1几种计算模型
第8章 代码生成
• 第一节 8.1选择生成什么
• 第二节 8.2如何生成
• 第三节 8.3混合生成代码和手写代码
• 第四节 8.4生成可读的代码
• 第五节 8.5解析之前的代码生成
• 第六节 8.6延伸阅读
第9章 语言工作台
• 第一节 9.1语言工作台之要素
• 第二节 9.2模式定义语言和元模型
• 第三节 9.3源码编辑和投射编辑
• 第四节 9.4说明性编程
• 第五节 9.5工具之旅
• 第六节 9.6语言工作台和CASE工具
• 第七节 9.7我们该使用语言工作台吗
第10章 各种DSL
• 第一节 10.1Graphviz
• 第二节 10.2JMock
• 第三节 10.3CSS
• 第四节 10.4HQL
• 第五节 10.5XAML
• 第六节 10.6FIT
• 第七节 10.7Make等
第11章 语义模型
• 第一节 11.1工作原理
• 第二节 11.2使用场景
• 第三节 11.3入门例子(Java)
第12章 符号表
• 第一节 12.1工作原理
• 第二节 12.2使用场景
• 第三节 12.3参考文献
• 第四节 12.4以外部DSL实现的依赖网络(Java和ANTLR)
• 第五节 12.5在一个内部DSL中使用符号键(Ruby)
• 第六节 12.6用枚举作为静态类型符号(Java)
第13章 语境变量
• 第一节 13.1工作原理
• 第二节 13.2使用场景
• 第三节 13.3读取INI文件(C#)
第14章 构造型生成器
• 第一节 14.1工作原理
• 第二节 14.2使用场景
• 第三节 14.3构建简单的航班信息
第15章 宏
• 第一节 15.1工作原理
• 第二节 15.2使用场景
第16章 通知
• 第一节 16.1工作原理
• 第二节 16.2使用场景
• 第三节 16.3一个非常简单的通知(C#)
• 第四节 16.4解析中的通知(Java)
第17章 分隔符指导翻译
• 第一节 17.1工作原理
• 第二节 17.2使用场景
• 第三节 17.3常客记分(C#)
• 第四节 17.4使用格兰特小姐的控制器解析非自治语句(Java)
第18章 语法指导翻译
• 第一节 18.1工作原理
• 第二节 18.2使用场景
• 第三节 18.3参考文献
第19章 BNF
• 第一节 19.1工作原理
• 第二节 19.2使用场景
第20章 基于正则表达式表的词法分析器
• 第一节 20.1工作原理
• 第二节 20.2使用场景
• 第三节 20.3格兰特小姐控制器的词法处理(Java)
第21章 递归下降法语法解析器
• 第一节 21.1工作原理
• 第二节 21.2使用场景
• 第三节 21.3参考文献
• 第四节 21.4递归下降和格兰特小姐的控制器(Java)
第22章 解析器组合子
• 第一节 22.1工作原理
• 第二节 22.2使用场景
• 第三节 22.3解析器组合子和格兰特小姐的控制器(Java)
第23章 解析器生成器
• 第一节 23.1工作原理
• 第二节 23.2使用场景
• 第三节 23.3Hello World(Java和ANTLR)
第24章 树的构建
• 第一节 24.1工作原理
• 第二节 24.2使用场景
• 第三节 24.3使用ANTLR的树构建语法(Java和ANTLR)
• 第四节 24.4使用代码动作进行树的构建(Java和ANTLR)
第25章 嵌入式语法翻译
• 第一节 25.1工作原理
• 第二节 25.2使用场景
• 第三节 25.3格兰特小姐的控制器(Java和ANTLR)
第26章 内嵌解释器
• 第一节 26.1工作原理
• 第二节 26.2使用场景
• 第三节 26.3计算器(ANTLR和Java)
第27章 外加代码
• 第一节 27.1工作原理
• 第二节 27.2使用场景
• 第三节 27.3嵌入动态代码(ANTLR、Java和JavaScript)
第28章 可变分词方式
• 第一节 28.1工作原理
• 第二节 28.2使用场景
第29章 嵌套的运算符表达式
• 第一节 29.1工作原理
• 第二节 29.2使用场景
第30章 以换行符作为分隔符
• 第一节 30.1工作原理
• 第二节 30.2使用场景
第31章 外部DSL拾遗
• 第一节 31.1语法缩进
• 第二节 31.2模块化文法
第32章 表达式生成器
• 第一节 32.1工作原理
• 第二节 32.2使用场景
• 第三节 32.3具有和没有生成器的连贯日历(Java)
• 第四节 32.4对于日历使用多个生成器(Java)
第33 章函数序列
• 第一节 33.1工作原理
• 第二节 33.2使用场景
• 第三节 33.3简单的计算机配置(Java)
第34章 嵌套函数
• 第一节 34.1工作原理
• 第二节 34.2使用场景
• 第三节 34.3简单计算机配置范例(Java)
• 第四节 34.4用标记处理多个不同的参数(C#)
• 第五节 34.5针对IDE支持使用子类型标记(Java)
• 第六节 34.6使用对象初始化器(C#)
• 第七节 34.7周期性事件(C#)
第35章 方法级联
• 第一节 35.1工作原理
• 第二节 35.2使用场景
• 第三节 35.3简单的计算机配置范例(Java)
• 第四节 35.4带有属性的方法级联(C#)
• 第五节 35.5渐进式接口(C#)
第36章 对象范围
• 第一节 36.1工作原理
• 第二节 36.2使用场景
• 第三节 36.3安全代码(C#)
• 第四节 36.4使用实例求值(Ruby)
• 第五节 36.5使用实例初始化器(Java)
第37章 闭包
• 第一节 37.1工作原理
• 第二节 37.2使用场景
第38章 嵌套闭包
• 第一节 38.1工作原理
• 第二节 38.2使用场景
• 第三节 38.3用嵌套闭包来包装函数序列(Ruby)
• 第四节 38.4简单的C#示例(C#)
• 第五节 38.5使用方法级联(Ruby)
• 第六节 38.6带显式闭包参数的函数序列(Ruby)
• 第七节 38.7采用实例级求值(Ruby)
第39章 列表的字面构造
• 第一节 39.1工作原理
• 第二节 39.2使用场景
第40章 Literal Map
• 第一节 40.1工作原理
• 第二节 40.2使用场景
• 第三节 40.3使用List和Map表达计算机的配置信息(Ruby)
• 第四节 40.4演化为Greenspun式(Ruby)
第41章 动态接收
• 第一节 41.1工作原理
• 第二节 41.2使用场景
• 第三节 41.3积分——使用方法名解析(Ruby)
• 第四节 41.4积分——使用方法级联(Ruby)
• 第五节 41.5去掉安全仪表盘控制器中的引用(JRuby)
第42章 标注
• 第一节 42.1工作原理
• 第二节 42.2使用场景
• 第三节 42.3用于运行时处理的特定语法(Java)
• 第四节 42.4使用类方法(Ruby)
• 第五节 42.5动态代码生成(Ruby)
第43章 解析树操作
• 第一节 43.1工作原理
• 第二节 43.2使用场景
• 第三节 43.3由C#条件生成IMAP查询(C#)
第44章 类符号表
• 第一节 44.1 工作原理
• 第二节 44.2使用场景
• 第三节 44.3在静态类型中实现类符号表(Java)
第45章 文本润色
• 第一节 45.1工作原理
• 第二节 45.2使用场景
• 第三节 45.3使用润色的折扣规则(Ruby)
第46章 为字面量提供扩展
• 第一节 46.1工作原理
• 第二节 46.2使用场景
• 第三节 46.3食谱配料(C#)
第47章 适应性模型
• 第一节 47.1工作原理
• 第二节 47.2使用场景
第48章 决策表
• 第一节 48.1工作原理
• 第二节 48.2使用场景
• 第三节 48.3为一个订单计算费用(C#)
第49章 依赖网络
• 第一节 49.1工作原理
• 第二节 49.2使用场景
• 第三节 49.3分析饮料(C#)
第50章 产生式规则系统
• 第一节 50.1工作原理
• 第二节 50.2使用场景
• 第三节 50.3俱乐部会员校验(C#)
• 第四节 50.4适任资格的规则:扩展俱乐部成员(C#)
第51章 状态机
• 第一节 51.1工作原理
• 第二节 51.2使用场景
• 第三节 51.3安全面板控制器(Java)
第52章 基于转换器的代码生成
• 第一节 52.1工作原理
• 第二节 52.2使用场景
• 第三节 52.3安全面板控制器(Java生成的C)
第53章 模板化的生成器
• 第一节 53.1工作原理
• 第二节 53.2使用场景
• 第三节 53.3生成带有嵌套条件的安全控制面板状态机(Velocity和Java生成的C)
第54章 嵌入助手
• 第一节 54.1工作原理
• 第二节 54.2使用场景
• 第三节 54.3安全控制面板的状态(Java和ANTLR)
• 第四节 54.4助手类应该生成HTML吗(Java和Velocity)
第55章 基于模型的代码生成
• 第一节 55.1工作原理
• 第二节 55.2使用场景
• 第三节 55.3安全控制面板的状态机(C)
• 第四节 55.4动态载入状态机(C)
第56章 无视模型的代码生成
• 第一节 56.1工作原理
• 第二节 56.2使用场景
• 第三节 56.3使用嵌套条件的安全面板状态机(C)
第57章 代沟
• 第一节 57.1工作原理
• 第二节 57.2使用场景
• 第三节 57.3根据数据结构生成类(Java和一些Ruby)

系列微信

数字化企业网
PLM之神
e-works制信科技
MES百科
工业自动化洞察
智能制造IM
AI智造圈
智能工厂前线
工业机器人洞察
智造人才圈
工业软件应用
智能制造网博会
ERP之家
供应链指南针
© 2002-2026  武汉制信科技有限公司  版权所有  ICP经营许可证:鄂B2-20030029-1(于2003年首获许可证:鄂B2-20030029)
鄂公网安备:420100003343号 法律声明及隐私权政策     投诉举报电话:027-87592219

关于我们    |    联系我们    |    隐私条款

ICP经营许可证:鄂B2-20080078
(于2003年首获许可证:鄂B2-20030029)
鄂公网安备:420100003343号
© 2002-2026  武汉制信科技有限公司  版权所有
投诉举报电话:027-87592219

扫码查看