我在几个项目中使用了 Eclipse Xtext。我喜欢通过 Ecore(元)模型定义语法的简易性,以及生成包括出色的 Eclipse 插件编辑器在内的所有内容,但是我对潜在的 EMF 框架 感到相当不舒服,其中一切都被硬编码为静态字段。
最近,我接触了 JetBrains 的 MPS(元编程系统)。它基于完全不同的哲学。虽然 Xtext 用于创建基于文本的 DSL 并为您生成解析器(并实例化这些 EObject),但在 MPS 创建的语言中,用户可以直接编辑底层模型结构。到目前为止,我理解了这一点。
有没有人同时使用过这两个 DSL 工具,以指出它们在使用、预期用例和受众、复杂度、学习曲线(坦白地说,要开始使用 Xtext,应该对 EMF 的内部了解相当多),代码生成等方面的主要区别?