且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《领域特定语言》一导读

更新时间:2022-09-29 16:14:17

《领域特定语言》一导读

前 言

在我开始编程之前,DSL(Domain–Specific Language,领域特定语言)就已经成了程序世界中的一员。随便找个UNIX或者Lisp老手问问,他一定会跟你滔滔不绝地谈起DSL是怎么成为他的镇宅之宝的,直到你被烦得痛不欲生为止。但即便这样,DSL却从未成为计算领域的一大亮点。大多数人都是从别人那里学到DSL,而且只学到了有限的几种技术。
我写这本书就是为了改变这个现状。我希望通过本书介绍的大量DSL技术,让你有足够的信息来做出决策:是否在工作中使用DSL,以及选择哪一种DSL技术。
造成DSL流行的原因有很多,我只着重强调两点:首先, 提升开发人员的生产力;其次,增进与领域专家之间的沟通。如果DSL选择得当,就可以使一段复杂的代码变得清晰易懂,在使用这段代码时提高程序员的工作效率。同时,如果DSL选择得当,就可以使一段普通的文字既可以当做可执行的软件,又可以充当功能描述,让领域专家能理解他们的想法是如何在系统中得到体现的,开发者和领域专家的沟通也会更加顺畅。增进沟通比起工作效率提升困难了一些,但带来的效果却更为显著。因为它可以帮助我们打通软件开发中最狭窄的瓶颈─程序员和客户之间的沟通。

目 录

第一部分 叙  述
第1章入门例子
1.1 哥特式建筑安全系统
1.2 状态机模型
1.3 为格兰特小姐的控制器编写程序
1.4 语言和语义模型
1.5使用代码生成
1.6 使用语言工作台
1.7 可视化
第2章 使用DSL
2.1定义DSL
2.2为何需要DSL
2.3DSL的问题
2.4广义的语言处理
2.5DSL的生命周期
2.6设计优良的DSL从何而来
第3章实现DSL
3.1DSL处理之架构
3.2解析器的工作方式
3.3文法、语法和语义
3.4解析中的数据
3.5宏
3.6测试DSL
3.7错误处理
3.8DSL迁移
第4章实现内部DSL
4.1连贯API与命令–查询API
4.2解析层的需求
4.3使用函数
4.4字面量集合
4.5基于文法选择内部元素
4.6闭包
4.7解析树操作
4.8标注
4.9为字面量提供扩展
4.10消除语法噪音
4.11动态接收
4.12提供类型检查