如何将 Xtext 连接到现有的编译器?
How can one connect Xtext to an existing compiler?
Xtext doGenerate
方法采用 org.eclipse.emf.ecore.resource.Resource
作为要编译文件的表示。这本质上是一个抽象语法树。在我们的应用程序中,我们已经有了一个编译器,可以将 java.io.Reader
转换为它自己的 AST 结构,然后进行其余的编译。
所以问题是将 Xtext 编辑器连接到现有编译器的最佳方式是什么?
我们目前的想法是,如果我们可以将 ecore
Resource
转换为 Reader
,那么我们就可以从那里生成。但这可以做到吗?应该做吗?或者有更好的方法吗?
是的,这听起来是个合理的方法。您可能希望将资源转换为 XtextResource
,询问它的 IParseResult
并使用根节点获取基础文本。通过 StringReader
将其传递给现有基础设施应该没问题。
请注意,Xtext 生成器在 Eclipse 文件系统之上使用自定义抽象。如果您的编译器想要写入工作区/Eclipse 项目,您可能需要适应这个 API。否则,您将面临 Eclipse 资源模型的问题。
Xtext doGenerate
方法采用 org.eclipse.emf.ecore.resource.Resource
作为要编译文件的表示。这本质上是一个抽象语法树。在我们的应用程序中,我们已经有了一个编译器,可以将 java.io.Reader
转换为它自己的 AST 结构,然后进行其余的编译。
所以问题是将 Xtext 编辑器连接到现有编译器的最佳方式是什么?
我们目前的想法是,如果我们可以将 ecore
Resource
转换为 Reader
,那么我们就可以从那里生成。但这可以做到吗?应该做吗?或者有更好的方法吗?
是的,这听起来是个合理的方法。您可能希望将资源转换为 XtextResource
,询问它的 IParseResult
并使用根节点获取基础文本。通过 StringReader
将其传递给现有基础设施应该没问题。
请注意,Xtext 生成器在 Eclipse 文件系统之上使用自定义抽象。如果您的编译器想要写入工作区/Eclipse 项目,您可能需要适应这个 API。否则,您将面临 Eclipse 资源模型的问题。