我想问一下特定领域的语言。基于Martin Fowler分类的内部DSL。(在我看来,内部DSL就像构建API!!)
用于实现内部DSL的一些常用技术是什么?
另一个问题,内部DSL是什么所谓的流畅的接口,嵌入式语言?
谢谢,乔
发布于 2011-01-03 10:52:08
其中许多问题在DSL in Action,http://debasishg.blogspot.com/中都得到了很好的回答,所以你可能想看看这本由作者写的书。
回答剩下的问题实际上取决于您正在考虑编写的DSL的类型,即使是内部DSL也可以是不同的,可以是日期/时间的简单DSL,也可以是基本上用目标语言编写的语言。
要想更好地讨论它是什么数字用户线路,你可以看看http://www.oreillynet.com/ruby/blog/2005/12/what_is_a_dsl.html。
我建议你把你的计划放在前面,并决定如何使用它,因为当它被使用时,回到并修复一个糟糕的设计将是一场噩梦。
发布于 2011-01-03 10:52:00
我认为Fowler article已经很好地解释了这个概念(他定义了这个术语,所以他的定义是正确的,根据定义:-)
这里的关键概念是元编程:使用宿主语言的元编程工具使其看起来像是引入了新的关键字。在可能/合理的情况下,使用编译时求值,在其他地方使用堆栈遍历将代码注入调用作用域。
严格地说,它只是一个API。然而,(根据我的说法),如果用Pascal做这件事需要适当的语言扩展,那么它就是一个内部DSL。
发布于 2011-01-04 08:39:05
我目前正在阅读Fowler的新书Domain Specific Languages,它的布局与任何模式参考一样,具有实现各种类型/部分的DSL的各种常见模式,以及它们的后端“语义模型”。它的广度令人惊叹,其深度恰好足以展示一些好的例子,也就是说,它讨论了实现/定义DSL的各种正交视图中的概念/问题。
他非常努力地限制深度,否则页数就会平方,而不是翻一番。强烈推荐(到目前为止,我已经读完了第10章,他在其中讨论了一小部分常见的领域特定语言,例如CSS、Make、et.al,只是为了帮助你更好地理解前9章所描述的术语和“模式”--总共有57章,其中大部分都讨论了各种领域特定语言的“模式”)。
https://stackoverflow.com/questions/4581753
复制相似问题