使用不同的 GPL(通用编程语言)实现的 DSL(领域特定编程语言)
我正在寻找使用通用编程语言(GPL)实现的 DSL,例如 C#、Java、Scala 等。主要目标是调查软件行业日常使用的精心设计的 DSL 实现的各种重要属性。
如果您能指出这样的 DSL 实现(示例或存储库)并说明您认为它是一个好的 DSL 的原因,我将不胜感激。
谢谢你,
Adil Akhter
编辑 1:
恕我直言,这篇文章可以帮助创建一个在当今软件开发中广泛使用的有趣的流行 DSL 列表(搜索后,至少我可以没有找到任何涵盖所有 GPL 的此类列表)。
此列表的几个固有好处之一是它可以用于创建其目标 DSL 和域的分类。
以下是描述一些有趣的 DSL 和工具的相关链接:
DSLs(按 GPL 分类):
- Ruby DSLs => Ruby DSL(域特定语言)存储库,示例
- Clojure DSL => 有 Clojure DSL 吗?
- Scala DSL => 有趣的 DSL,在 Scala 中实现?
- C# DSL => ; SharpDOM ( http://sharpdom.codeplex.com )
工具:
- Microsoft Visual Studio可视化和建模 SDK:http://code.msdn.microsoft.com/vsvmsdk
I am looking for DSLs implemented using general purpose programming languages(GPLs) e.g., C#, Java , Scala and so on. Primary goal is to survey various important attributes of well-designed DSL implementations used in a daily basis in Software Industry.
I would highly appreciate if you could point me out such DSL implementations (examples or repositories) and state your reasons why you consider it to be a good DSL.
Thank you,
Adil Akhter
EDIT 1:
IMHO, this post can contribute to create a listing of interesting prevailing DSLs used extensively in today’s Software Development (after searching, at least I could not find any such listings covering all the GPLs).
One of the several inherent benefits of this listing – it can be used create taxonomy of the DSLs and domain they are targeting to.
Followings are the related links that describes some interesting DSLs and Tools:
DSLs( categorized by GPLs):
- Ruby DSLs => Ruby DSL (Domain Specific Language) repositories, examples
- Clojure DSLs => Are there any Clojure DSLs?
- Scala DSLs => Interesting DSLs, Implemented in Scala?
- C# DSLs => SharpDOM ( http://sharpdom.codeplex.com )
Tools:
- Microsoft Visual Studio Visualization and Modeling SDK : http://code.msdn.microsoft.com/vsvmsdk
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看一下 boost.spirit2,可以找到主流语言中非常复杂的 DSL。否则,您可以查看 lisp 的任何方言,这使得编写 DSL 变得非常容易,因此您会发现很多它们。
take a look at boost.spirit2 to find a very complex DSL in a mainstream language. Otherwise you could look at any dialect of lisp which makes it very easy to write DSLs and so you will find lots of them.
您可能会考虑用于实现 DSL 的非过程技术,例如(我们的)程序转换系统。我想你会发现它们出奇的强大。
You might consider non-procedural techniques for implementing DSLs, such as (our) program transformation system. I think you will find them surprisingly powerful.