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