我用过 Eclipse Xtext 在几个项目中。我喜欢在Ecore(Meta)模型上定义语法的简便性,并让您为您制作的所有内容(包括令人敬畏的Eclipse插件编辑器),但我对基础的基础非常不舒服 EMF框架 所有在静态领域的一切都在静态领域。

最近我遇到了喷气桥 国会议员(元编程系统). 。它基于完全不同的哲学。尽管XTEXT用于创建基于文本的DSL为您生成解析器(并实例化这些EOBJECTS),但在MPS创建的语言中,一个人直接编辑了基础模型结构。到目前为止,我明白了。

任何人都有这些DSL工具的经验,可以指出与它们合作,预期用例和受众,复杂性,学习曲线的主要区别(老实说,开始使用Xtext的人应该对EMF的胆量了解很多) ,代码生成等?

有帮助吗?

解决方案

XTEXT是一种基于普通文本文件的传统方法。可以使用您喜欢的命令行工具将它们与任何版本控制系统进行邮寄,存储和比较,甚至可以在编辑器外部修改。它将其紧密整合到Eclipse EMF中,并与您可以在Eclipse Eco-System中找到的一大堆工具合作。最近,它将(并正在这样做)演变成某种“编程语言开发工具包”,使您可以支持各种其他工具。

另一侧的议员与基于投影的编辑器一起使用,该编辑器在环境中工作时“看起来”的文本。基础存储格式是特定于工具的(阅读:不使用特殊程序的不可用),并且不会解析纯文本文件。这提供了一些很大的优势,例如嵌入任意Langauges(例如Java内的SQL内部的REGEX)。该工具链使模型形式的生成能够建模转换,这些转换 - 作为编辑时 - 一开始就感到不寻常,但也很强大。

这两种工具都以某种方式将您锁定在他们的世界(MPS/Eclipse)中。即使您可以在无头模式下运行两者,也无法轻松地在另一个IDE内启动Xtext编辑器。国会议员也是如此。我认为XTEXT是“更开放的”,因为它可以与普通的文本文件一起使用,并且与已建立的工具(EMF和Eclipse一般而言)一起使用。

这回答了你的问题了吗?如果您有更多详细的问题,我将尝试为您提供更精确的答案。

其他提示

MPS的主要思想不是使用投影编辑器,而不是基于文本的编辑器。这是语言的兼容性。例如,您可以使用元组扩展Java,另一个人可以使用异步方法调用扩展Java。在基于文本的工具(例如XTEXT)中,无法确保两个扩展可以很好地工作,因为由此产生的语法可能模棱两可。国会议员使这成为可能。您只需像添加库一样向项目添加语言。

在我看来,Jetbrain的议员一开始就更容易学习。您无需使用Xtext中的workflow-files之类的配置文件。

一个主要区别是,在MPS中,您可以直接编辑模型,并在语法/编辑器视图中向您显示此模型。在Xtext中,您编辑语法,并生成/解析模型。

我认为国会议员更强大。您可以更轻松地组合语言并扩展它们。投影编辑器的一个重要优势是您可以隐藏信息或显示从模型检索到的其他信息。您还可以使用不同的视图,例如表或图形(以MPS 2.1出现)。

可以使用MPS进行版本控制。有一个在树模型上使用的合并/差异工具。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top