我在几个项目中使用了Eclipse Xtext.我喜欢在Ecore(meta)模型上定义语法的简易性,并为你生成所有内容,包括令人敬畏的Eclipse插件编辑器,但我对基础EMF框架感到非常不舒服,所有内容都在静态字段中进行了硬连接.
最近我遇到了Jetbrains的MPS(元编程系统).它基于完全不同的哲学.虽然Xtext用于创建基于文本的DSL,为您生成解析器(并实例化那些EObject),但在MPS创建的语言中,可直接编辑基础模型结构.到目前为止,我明白了.
有没有人使用这两种DSL工具来指出在使用它们方面的主要差异,预期用例和受众,复杂性,学习曲线(说实话,开始使用Xtext应该对EMF的内容有很多了解) ,代码生成等?
有没有人有使用Xtext,Spoofax和JetBrains的MPS等语言工作台工具的经验?我想尝试一下,并且很难找到不同工具的良好比较.各自的优点和缺点是什么?
我正在寻找构建生成python代码的DSL,所以我特别感兴趣的是听到那些使用python这些工具之一的人(这三个看起来都非常注重Java ......为什么会这样?).DLS主要供我自己使用,因此我不太关心构建一个非常漂亮的IDE,而不是关于它是KISS来定义语法和编写代码生成器.对DLS进行类型检查/执行静态分析的能力也非常酷.
我有点害怕走远一条路,撞墙,意识到我的所有代码都采用了无法移植到其他任何地方的格式 - 这些工具是否存在风险?特别是MPS看起来有点可怕,因为据我所知,你并没有真正生成基于文本的语法,而是为AST构建专门的编辑器.
Jetbrains的另一个项目,他们的新问题跟踪器Charisma完全是用MPS编写的.这个概念有用/实用,还是太早了?
我想移动到Jetbrains MPS,所以我可以更容易地使用自定义语言编辑我的文件.
我刚刚开始创建文件,并且已经有很多文件.有没有办法在MPS中自动将这些文件转换为我的语言,而不仅仅是复制粘贴的代码部分?
我正在寻找一种方法来生成多种语言(Java、C#、JavaScript)的一些模型类,以保持这些语言之间的一致性。是否有一些工具可以帮助我在一个地方定义模型并在所有三种语言的每次更改后生成它?我正在查看JetBrains MPS,但它似乎对于仅生成一种语言很有用,甚至在文档中写道,仅推荐一种语言生成器(如果有)。
到目前为止我发现的唯一方法是每种语言的 XML 文件和 XSL 转换,但我正在寻找更方便的方法。
他们拥有设计DSL的工具:https://www.jetbrains.com/mps/
是否可以从那里将编辑器嵌入到我的程序中?还是唯一的目的是仅在开发过程中使用它(从DSL编译)?
我正在使用Flask开发一个小型Web应用程序.此应用程序需要一个DSL,它可以表达.pdf文件的内容.
我用JetBrains MPS开发了一个DSL,但现在我不确定如何在我的Web应用程序中使用它.可能吗?或者我应该考虑切换到另一个DSL或直接用Python制作我的DSL.
我想问一下 mps 和 xtext 相对于彼此的优势以及编写语言时的主要功能。我知道在使用 mps 时,您直接编辑 AST,而 xtext 使用解析器。我已经阅读了使用 AST 的一个优势,它允许为您正在制作的语言扩展多种语言,我真的不明白这是什么意思,可以进一步解释一下,为什么有人想要扩展多种语言?
我也读过 AST 删除了不明确的代码,它是如何做到的?
我知道 MPS 和 xtext 都具有下划线和突出显示代码等功能,它们是否还有其他与代码验证相关的功能?
欢迎它们的任何其他主要差异和一般特征吗?
mps ×10
dsl ×5
xtext ×4
eclipse ×2
python ×2
c# ×1
dsl-tools ×1
eclipse-emf ×1
flask ×1
java ×1
javascript ×1
python-2.7 ×1
workbench ×1