我正在使用xtext为特定的语言生成一个编辑器。当为我的新语言使用编辑器时,它具有所有可爱的xtext特性,如代码完成和着色等。我想要做的是在编辑器中可视化文本的结构。
我知道xtext有一个内部的AST和一个解析树(我知道他们叫它‘节点模型’)--有什么方法可以可视化这个树吗?
发布于 2016-02-01 01:21:17
在xtend中有一个简单的解决方案(基于EObject.toString()默认完成的内省):
def static String dump(EObject mod_, String indent) {
var res = indent + mod_.toString.replaceFirst ('.*[.]impl[.](.*)Impl[^(]*', '$1 ')
for (a :mod_.eCrossReferences)
res += ' ->' + a.toString().replaceFirst ('.*[.]impl[.](.*)Impl[^(]*', '$1 ')
res += "\n"
for (f :mod_.eContents) {
res += f.dump (indent+" ")
}
return res
}转储(someEObject,'')等调用的输出将返回:
ExpressionModel
Variable (name: i)
Plus
IntConst (value: 1)
Plus
IntConst (value: 2)
Plus
IntConst (value: 3)
Variable (name: j)
Plus
VarRef ->Variable (name: i)
Plus
IntConst (value: 4)
Plus
IntConst (value: 5)发布于 2013-12-20 13:08:09
这可能会对你有所帮助:https://github.com/OLibutzki/xtext.tools
它提供了节点模型和语义模型(AST)的概要。
发布于 2012-12-05 00:21:02
您应该检查内容大纲。我已经定制了我的模型,但我认为默认的模型反映了模型的结构。
https://stackoverflow.com/questions/13701199
复制相似问题