在.NET中构建DSL的工具

在.NET中构建DSL的工具,.net,parsing,dsl,dsl-tools,.net,Parsing,Dsl,Dsl Tools,我越来越多地被戏弄到开发DSL上。我已经开发了一个使用F#的小程序,使用fslex和fsyacc,但是错误消息不准确(我也找不到更好的方法来生成错误消息,关于如何处理错误案例的文档似乎很少),而且它们不能充分解析UNICODE字符串这一事实对我来说是不可接受的。 长话短说,我正在寻找能够使开发DSL变得非常简单的工具(用于此目的的Visual Studio工具与我所追求的完全不同),我最感兴趣的是解析/AST生成部分。我看过ANTLR,把代码和语法定义元语言混为一谈对我来说很糟糕,所以请不要在回

我越来越多地被戏弄到开发DSL上。我已经开发了一个使用F#的小程序,使用fslex和fsyacc,但是错误消息不准确(我也找不到更好的方法来生成错误消息,关于如何处理错误案例的文档似乎很少),而且它们不能充分解析UNICODE字符串这一事实对我来说是不可接受的。 长话短说,我正在寻找能够使开发DSL变得非常简单的工具(用于此目的的Visual Studio工具与我所追求的完全不同),我最感兴趣的是解析/AST生成部分。我看过ANTLR,把代码和语法定义元语言混为一谈对我来说很糟糕,所以请不要在回答中提到它或解决方案遇到类似的问题。此外,我还看到了一种名为Boo的语言的一些东西,但我现在真的不想再与另一种语言混为一谈(特别是如果它没有什么支持的话),所以这也不合适。任何其他建议,只要有适当的文档记录,在.NET中运行良好,最后但并非最不重要的是不涉及使用动态类型语言或使用DLR。

也许您可以尝试一下。就我个人而言,我还没有使用过它,但是这些例子看起来很有趣

“奥斯陆”包括: 一种帮助人们以丰富、直观的方式定义模型并与之交互的工具 一种帮助人们创建和使用文本领域特定语言和数据模型的语言 一个关系存储库,使模型对工具和平台组件都可用


是一种总览

你可能仍然想看看Boo的源代码,看看他们是怎么做的。他们还使用ANTLR生成解析器。您不需要将任何代码与ANTLR语法混合在一起,只要它是一个LL(*)语言,它可以作为完全描述性的代码使用。

您想开始使用Oslo。它包括定义DSL的工具和定义DSL语法的工具。语法可以发出AST或其他任何东西

它可以从DSL生成的一种输出是ia对应的SQL Server模式。因此,DSL实例可以存储在SQLServerExpress(或更高版本)中

奥斯陆是微软更大愿景的一部分,但你可以忽略这一点,直接从“DSL”部分开始


我建议你开始并积极主动地让微软知道你喜欢什么和不喜欢什么。不管你是否知道,你现在已经引起了他们的注意。

用几乎通俗易懂的英语创建DSL的最简单方法:

讽刺的是-位于可能是一个很好的解决方案-您可以利用.NET langauges的内置功能构建语法,而不是试图单独构建语法文件。

真的,我说过我对Boo和ANTLR都不感兴趣,所以,如果我给这个a-1,你说你对使用Boo作为语言或将代码与ANTLR语法混合不感兴趣,但我不明白这如何排除使用直接的ANTLR语法和查看Boo的源代码。真的,为什么要投反对票?这是个好答案。此外,我刚刚意识到我要去奥斯陆。还是M#?.+1仅仅是因为我讨厌看到一个体面的答案是-1,而没有理由去解释为什么它被否决。你应该回到你现在开始的地方:)谢谢。我还将删除答案,因为奥斯陆的DSL部分看起来不会发布。有点像垃圾邮件,特别是从措辞上看。。。但好吧,还不至于糟糕到可以标记它。为什么这是被否决的-2?这个问题有问题吗??