2009-05-21 68 views
8

我正在開發一個需要我定義DSL的項目。由於提出正確的DSL對於我的項目至關重要,因此我決定評估現有框架,這些框架有助於定義DSL,對其進行解析並生成代碼(必須使用基於.NET的語言)。我考慮的框架包括:DSL框架的選擇

具有用於定義DSL定製編譯器和pythonish語法理想
  1. 噓語言。
  2. 支持可擴展命令行開關的Windows powershell。
  3. 微軟DSL工具,支持可視化建模,但不靈活(在我看來)
  4. ANTLR這是證明工具
  5. C#流利的接口。(這個不那麼快樂)
  6. 奧斯陸框架(是否成熟)

上面提到的每個框架都有優點和缺點,我無法做出決定。給出上述框架之間的選擇,你會選擇哪一個,爲什麼?

有沒有其他的框架如此基本,我可能錯過了?

任何幫助或指導將不勝感激。

+0

+1 - 一個很好的問題,我也在努力。我研究了Boo中構建域特定語言的早期版本,發現它令人沮喪 - 這些工具似乎並不成熟。我也相信PowerShell在這方面顯示出很大的希望。我也拿起了關於ANTLR的書。 ;) – TrueWill 2009-09-08 22:40:57

回答

1

question of mine涉及DSL的問題,有人建議我使用IronyDLR的組合。但我不知道他們是否穩定。反諷是一種阿爾法,而DLR雖然穩定,仍然在v0.9。我打算在一兩週內開始使用Irony,那麼我將能夠提供一些反饋。然而,光明的一面 - 它們都是開源的,所以你可以自己修復錯誤。

+0

感謝您的信息。反諷看起來很有希望。 – Prashanth 2009-05-25 05:05:43

+0

**反諷被擱置。** http://irony.codeplex.com/Thread/View.aspx?ThreadId=230812 – 2010-11-24 08:29:37

0

Jetbrains的有一個可視化工具,在語言的發展援助,忘了名字,但他們的頭版有它它。我相信它的自由和部分開源。

0

DMS Software Reengineering Toolkit是一套完整的工具,用於定義任意語言,包括DSL,自動構建解析器,分析器和用於定義語言的代碼生成器。

1

如果您打算實現外部DSL,Spoofax(http://strategoxt.org/Spoofax)是一個很好的語言工作臺來做到這一點。這是一個基於語法分析器的文本語言工作臺,可以利用SDF,Stratego等幾種最先進的技術。除了DSL實行,你可以得到一個非常豐富的編輯服務,如代碼完成,大綱視圖,智能感知等

它配備了一個很好的樣本DSL實現和代碼生成到Java。它也可能成爲開始使用這些工具的起點。

以下有關使用教程詳細,這裏的langauge工作臺:http://strategoxt.org/Spoofax/Tour

希望它有幫助!

編輯-1:

下面是使用這種語言特點工作臺實現語言的例子:http://mobl-lang.org/