为了简单起见,假设我有多个Xtext DSL,它们都描述某种类型的查询。其中之一就是我的“基础”DSL。现在我想把我的一个DSL转换成我的“基本”DSL,并检索模型的字符串表示。
我通过创建了一个EFactory
MyDslFactory factory = new MyDslFactoryImpl();
然后,我手动遍历源DSL的XtextResource (我从EmbeddedEditor获得),并使用目标DSL工厂来构建我的模型(EObject树)。现在,我希望获得该模型的文本表示,但这就是我遇到的问题。我知道如何获得XtextResource的字符串表示,所以我猜这是可行的方法,但我不知道如何从EObject树创建XtextResource。
在org.eclipse.xtext.junit.AbstractXtextTests中有一个方法
doGetResource(InputStream in, URI uri)
但现在我找不到从我的模型中获取InputStream的方法。
有没有办法从对象树创建XtextResource,或者有没有更简单的方法来做我想做的事情?
发布于 2012-02-10 03:52:37
如果您只需要文本序列化,则应该使用注入获取org.eclipse.xtext.serializer.ISerializer的实例。
确保您已经在格式化程序中定义了一些格式化规则,否则输出的可读性有点“有限”;-)
https://stackoverflow.com/questions/9216075
复制相似问题