2010-11-21 104 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