演化架构和紧急设计: 使用 DSL - 编程入门网
紧急设计: 使用 DSL(5)
时间:2011-08-18 IBM Neal Ford
我们没有必要因为 XML 的优势,总是使用 XML。可以考虑以下配置代码,如清单 5 所示: 清单 5. 定制语法(custom-grammar)的状态机配置
XML 版本有的优势,它也有:是声明式的,有容器概念,并且是简明的。同时它也超越了 XML 和 Java 版本,因为它很少有 噪音字符(例如 <和 >),尽管这对技术实现是必需的,但是影响可读 性。 此版配置代码是一个用 ANTLR 编写的定制外部 DSL,也是一个开源工具,它使得用自定义语言编写变 得很容易。曾经在大学时候不喜欢编译器(包括诸如 Lex 和 YACC 之类的经典工具)课程的人,将很高 兴知道这些工具已经变得好多了。这个例子来自 Fowler 的书中,他说构建 XML 版本和构建定制语言版 本所用时间相同。 演化架构和紧急设计: 使用 DSL(6)时间:2011-08-18 IBM Neal Ford清单 6 中的是用 Ruby 写的另一种可选版本 : 清单 6. JRuby 中的状态机配置
这是一个很好的 内部DSL 例子:DSL 使用基础语言的语法,这意味这个 DSL 必须是符合语法的 Ruby 代码。(因为它是用 Ruby 编写的,可以使用 JRuby 运行,就是说,您的 toaster 所需的全是 JRuby JAR 文件。) 清单 6同定制语言有许多相同的优点。注意,大量使用 Ruby 块充当容器,这能给您同 XML 和定制语 言版本一样的容器语义。它比定制语言使用更少的噪音字符(noise characters)。例如,在 Ruby 中 :前缀表明一个符号,在本例中基本上是用作标识符的不变字符串。 演化架构和紧急设计: 使用 DSL(7)时间:2011-08-18 IBM Neal Ford使用 Ruby 实现这类 DSL 相当简单,如清单 7 所 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |