http://www.zhoujingen.cn/blog/2748.html
DSML是 特定领域模型语言(domain-specific modelling language),以前介绍的MetaEdit+使用的DSM方法中使用的就是DSML,它是一种能够用来构建图形模型的一种DSL,DSM的GOPPRR就是一个用来构建DSML语言的元模型。html
DSL架构

- DSL脚本(DSL Script):每个DSL的核心都是一个域模型,它定义了这一语言所表明的各类概念,这些概念的属性,以及它们之间的关系
- 在问题域中用于构建、配置或者其余用途的一种语言
- 能够是文本,也能够是图形,或者二者混合使用
- 图形语言不仅是图表,不然使用Visio之类的画图软件就好了,它其实是要建立模型,这个模型要可以从概念上描绘你正在建立的系统,并对其内容进行图表化的表示。一个模型能够同时由多个图表来表示,每一个图表表示模型的某个方面
- 文本语言用户输入,能够快速的打字。
- 文本语言的优点在于能够进行比较和合并,而图形表达式能够更容易的看出内容之间的关联。
- 相对来讲,文本语言比图形复杂
- 语义模型(Semantic Model)
- DSL脚本的一种内存完整表示
- 有时候这个就是抽象语法树(AST)
- 分离Parse和Generate
- 生成代码(Generated Code):DSL的一个最重要的应用是用来生产简单的文本形式的工件,例如源代码、数据库脚本
DSL应用的优势
- 高级别的重用:若是仅适用通用编程语言,则每次只能解决一个问题,但若是应用特定领域开发方法设计并实现一些特殊语言,每一个特殊语言能够高效地解决一类类似的问题
- 使用DSL的软件架构能够跨接软件工程过程各阶段之间的鸿沟,特别是经过代码生成能够很好的进行设计和实现阶段的衔接
- 让领域专家参与开发过程,不单单是需求阶段,架构阶段也须要参与
- 经过在问题空间工做,可让不熟悉如何实现技术的人,包括商业人士,也可以更了解模型
- 使用DSL表达的模型,能够在问题空间这个较高的抽象层次进行验证,这意味着能够在开发周期的更早期发现由于理解和表述而形成的错误。
- 一个模型中具有了重要的业务知识,将解决方案从一种技术迁移到另外一种技术,或在同一技术的不一样版本之间迁移,就变的相对容易。通常经过适当修改生成器或解释器就能够作到。