2010-11-21 102 views
2

我正在寻找使用通用编程语言(GPL)(例如C#,Java,Scala等)实现的DSL。主要目标是调查软件行业每天使用的精心设计的DSL实现的各种重要属性。使用不同的GPL(通用编程语言)实现的DSL(域特定编程语言)

如果您能指出我这样的DSL实现(示例或存储库)并说明您为什么认为它是一个好的DSL,我将非常感谢。

谢谢

阿迪尔Akhter


编辑1:

恕我直言,这个职位可以有助于建立在今天的软件广泛使用有趣的流行的DSL的列表开发(搜索后,至少我找不到任何这样的列表覆盖所有的GPL)。

此列表的几个固有优点之一 - 它可以用于创建DSL和他们的目标域的分类。

以下均相关的链接描述了一些有趣的DSL和工具:

的DSL(由GPLS分类):

  1. 红宝石的DSL =>Ruby DSL (Domain Specific Language) repositories, examples
  2. 的Clojure的DSL =>Are there any Clojure DSLs?
  3. 的Scala的DSL =>Interesting DSLs, Implemented in Scala?
  4. C#的DSL => SharpDOM(http://sharpdom.codeplex.com

工具:

  1. 的Microsoft Visual Studio中可视化和建模SDK:http://code.msdn.microsoft.com/vsvmsdk

回答

1

看看boost.spirit2找到一个非常合作在主流语言中复用DSL。否则,你可以查看任何lisp方言,这使得编写DSL很容易,所以你会发现很多。

1

您可能会考虑non-procedural techniques for implementing DSLs, such as (our) program transformation system。我认为你会发现他们惊人的强大。

+0

谢谢你的回复。我非常喜欢你的工作。我目前正在与[Stratego](http://strategoxt.org/)合作,这是一个使用策略性术语重写的程序转换系统。 但是,这个问题的主要目标是找出如何实现DSLs(或小语言)以及如何实现解决真实世界编程问题以及它们的成功/可行性。关于 – 2011-06-11 21:52:28

+0

您应该注意:SQL,Relay Ladder Logic,Constraint Languages,HDLS(Verilog,VHDL),HTML,XML,Prolog,当然还有用于构建语言工具(EBNF,属性语法...)的语言。这些都是非常广泛使用的DSL。让我们看到它的有用之处在于,它们使我们能够简洁地描述某些任务,并且/或者提供与我们的经典过程(包括OO)语言不同的计算模型。曾经发明过的最好的DSL之一是微积分,被地球上每一位严肃的工程师使用;它是对公式进行操作的约束系统。 – 2011-06-11 21:58:09

+0

再次感谢。我将研究这些DSL。关于 – 2011-06-11 22:36:13