domain specific language

来源:互联网 发布:淘宝网商城儿童女装 编辑:程序博客网 时间:2024/05/21 22:55

领域专用语言(domain specific language / DSL) 

首先给出Martin对DSL的定义:

        Domain-Specific Language:A computer programming language of limited expressiveness focused on a particular domain 

 

       在计算机领域,DSL比比皆是,你可能用到过它但却毫不知情。从Windows里的ini配置文件, XML配置文件,到主流编程语言的正则表达式,它们都是DSL:聚焦一个特定的领域,极易读懂,功能很少,异常简洁。

为什么要用DSL

就拿最最常用的正则表达式为例:"\d{3,4}-\d{6,8}",稍微有点编程经验的人立刻就能看出来这个诡异的串所代表的含义,如果需要做什么修改也是非常简单。想象一下如果用程序来实现这个正则表达式的功能(匹配一个电话号码)会是一件怎样的工作,再想想对这个程序进行阅读、修改或是扩展是一样怎样的工作,你就可以体会到正则表达式可以为程序员带来多大的便利。

 
内部DSL:用通用语言的语法表示DSL,需要安装某种风格使用这种语言。
外部DSL:在主程序设计语言之外,用一种单独的语言表示领域专有语言。可以是定制语法,或者遵循另外一种语法,如XML。

DSL---->解析器----->语义模型----->执行
                 |                  |     
                 |                  |
                 |                  V
                 |             代码生成
                 V
           代码生成

DSL---->解析器----->语义模型----->执行
                 |                  |     
                 |                  |
                 |                  V
                 |             代码生成
                 V
           代码生成



Crerated  By  黄强