0

为简单起见,假设我有多个 Xtext DSL,它们都描述了某种查询。其中之一是我的“基础”DSL。我现在想将我的一个 DSL 转换为我的“基础”DSL 并检索模型的字符串表示。

我通过创建了一个 EFactory

MyDslFactory factory = new MyDslFactoryImpl();

然后我手动遍历源 DSL 的 XtextResource(我从 EmbeddedEditor 获得)并使用目标 DSL 工厂来构建我的模型(EObject 树)。现在我想获得该模型的文本表示,但这是我卡住的地方。我知道如何获取 XtextResource 的字符串表示,所以我想这是要走的路,但我不知道如何从 EObject-tree 创建 XtextResource。

在 org.eclipse.xtext.junit.AbstractXtextTests 有一个方法

 doGetResource(InputStream in, URI uri) 

但现在我找不到从我的模型中获取 InputStream 的方法。

有没有办法从对象树创建 XtextResource 或者有没有更简单的方法来做我想做的事情?

4

1 回答 1

2

如果您只想要文本序列化,您应该使用注入获取 org.eclipse.xtext.serializer.ISerializer 的实例。

确保您在 Formatter 中定义了一些格式化规则,否则输出的可读性有点“受限”;-)

于 2012-02-09T19:52:36.883 回答