领域特定语言的有趣例子

时间:2011-03-18 10:55:45

标签: database programming-languages concurrency language-design dsel

我正在考虑为我的本科项目使用Domain Specific Languages。我的一个问题是我无法找到任何有趣的例子我可以根据。有没有人有任何好的DSEL示例(最好是开源)?

此外,我希望看到的一个领域是使用DSEL解决/解决并发问题(协同程序等)。在DSEL中有没有人使用过这个好例子?如果这是DSEL的愚蠢应用,请解释原因......

另一个潜在的探索领域是数据库编程。再次这是DSEL的一个愚蠢的探索领域。例如,会向C#添加一些疯狂的数据库操作语法,说是一个很好的项目吗?

编辑:我将要实现的一般语言是Java,Python,Scala,C#等。可能不是C ++或C.

2 个答案:

答案 0 :(得分:1)

Linda实现可以被视为eDSL。像CL-STM这样的STM实现肯定是eDSL。

与并发性无关,但是嵌入式Prolog实现非常有用,它们有很多用于Scheme,Lisp和Clojure。解析eDSL已经被提及了 - 他们的族长Parsec绝对值得深入研究。

编辑:您的实施语言列表中缺少最有趣的eDSL机会。最强大和最灵活的eDSL是通过元编程实现的。 Scala风格(甚至是Haskell风格)的eDSL基于高阶函数,即小型解释器。它们在设计上更复杂,灵活性更低,并且仅限于宿主语言的语法。

答案 1 :(得分:0)

boost::spirit如果您在C ++之后是一个有趣的例子。引用:

  

Spirit是一组C ++库   解析和输出生成   实现为域特定   嵌入式语言(DSEL)......

(我不知道“解决并发”是什么意思。我不知道如何解决“并发问题”,或者DSEL如何帮助。)