我在XText中定义了我的DSL,它自动生成了Java版本的语言解析器和代码生成框架,这真的很酷。
问题在于我的DSL旨在被多种语言实现的项目所使用。你可以想象我们可能需要至少用C#,Java和Ruby来解析DSL。
所以问题是:有没有办法在xtext的帮助下为多种语言生成解析器?
答案 0 :(得分:2)
纯解析内容只是完整Xtext套件的一小部分。集成到Eclipse IDE和Xtend生成器中的是两大块代码。 Xtext构建在EMF Ecore模型之上。这些部件均不提供其他语言版本。
所以从普通C#和Ruby中运行 Xtext是不可能的。
你能做什么:
您可以将解析器和生成器包装到一个独立的jar中,并从任何地方(包括C#和Ruby)将其作为外部进程调用。对于您自己的DSL,这就像javac
。
您可以在JRuby中运行Ruby代码并从那里调用Xtext的东西。由于所有内容都在同一个JVM中运行,因此您可以比运行外部程序更好地进行控制。
你可以使用Xtext来获得一个用户友好的编辑器,其中包含所有很酷的东西,但是可以为你想要的任何语言实现独立的语法。