XText:如何为多种目标语言创建解析器

时间:2013-06-14 02:30:22

标签: antlr dsl xtext dsl-tools

我在XText中定义了我的DSL,它自动生成了Java版本的语言解析器和代码生成框架,这真的很酷。

问题在于我的DSL旨在被多种语言实现的项目所使用。你可以想象我们可能需要至少用C#,Java和Ruby来解析DSL。

所以问题是:有没有办法在xtext的帮助下为多种语言生成解析器?

1 个答案:

答案 0 :(得分:2)

纯解析内容只是完整Xtext套件的一小部分。集成到Eclipse IDE和Xtend生成器中的是两大块代码。 Xtext构建在EMF Ecore模型之上。这些部件均不提供其他语言版本。

所以从普通C#和Ruby中运行 Xtext是不可能的。

你能做什么:

  • 您可以将解析器和生成器包装到一个独立的jar中,并从任何地方(包括C#和Ruby)将其作为外部进程调用。对于您自己的DSL,这就像javac

  • 您可以在JRuby中运行Ruby代码并从那里调用Xtext的东西。由于所有内容都在同一个JVM中运行,因此您可以比运行外部程序更好地进行控制。

  • 你可以使用Xtext来获得一个用户友好的编辑器,其中包含所有很酷的东西,但是可以为你想要的任何语言实现独立的语法。