我目前正在开发一种通用的基于代理的编程语言(它的语法会受到 Java 的启发,我们也在这种语言中使用对象)。
自项目开始以来,我们对使用ANTLR或Xtext的事实持怀疑态度。那时我们发现 Xtext 正在实现 ANTLR 功能的一个子集。所以我们决定为我们的语言使用 ANLTR,从而失去了为我们的语言免费拥有一个成熟的 Eclipse 编辑器的可能性(Xtext 提供了如此好的特性)。
然而,据我所知,今年夏天 Xtext 项目向前迈出了一大步。引用链接:
Xtext 的限制是什么?
Sven:您可以使用 Xtext 实现几乎任何类型的编程语言或 DSL。有一个例外,那就是如果您需要使用所谓的“语义谓词”,这是一件相当复杂的事情,我认为不值得在这里解释。很少有语言真正需要这个概念。然而,突出的例子是 C/C++。我们希望在下一个版本中研究该主题。
这在Xtext 文档中也得到了加强:
什么是 Xtext?无论您是想创建一种小型的文本领域特定语言 (DSL),还是想实现一种成熟的通用编程语言。使用 Xtext,您可以快速创建自己的语言。此外,如果您已经拥有一种现有的语言,但它缺乏良好的工具支持,那么您可以使用 Xtext 创建一个复杂的基于 Eclipse 的开发环境,在极短的时间内提供现代 Java IDE 中已知的编辑体验。我们称 Xtext 为语言开发框架。
如果 Xtext 摆脱了过去的限制,为什么仍然无法为最著名的编程语言(Java、C# 等)找到复杂的 Xtext 语法?
在 ANTLR 网站上,您可以找到大量此类语法示例,而对于 Xtext 而言,我能找到的唯一示例是文档中报告的示例。那么,也许 Xtext 仍然不成熟,无法用于实现通用编程语言?我对此有点担心......我不会开始在 Xtext 中重写语法,然后认识到它不适合那个。