私はxtextを使って特定の言語のエディタを生成しています。私の新しい言語にエディタを使用すると、コード補完や色付けなどの素敵なxtextのすべての機能があります。私ができるようにしたいのは、エディタでテキストの構造を視覚化することです。構文木/ノードモデル/ ASTをxtextで見る
xtextには内部ASTと解析木があります(私は彼らが `ノードモデル 'と呼んでいることを理解しています)。 - このツリーを視覚化する方法はありますか?
私はxtextを使って特定の言語のエディタを生成しています。私の新しい言語にエディタを使用すると、コード補完や色付けなどの素敵なxtextのすべての機能があります。私ができるようにしたいのは、エディタでテキストの構造を視覚化することです。構文木/ノードモデル/ ASTをxtextで見る
xtextには内部ASTと解析木があります(私は彼らが `ノードモデル 'と呼んでいることを理解しています)。 - このツリーを視覚化する方法はありますか?
内容の概要を確認してください。私は私のものをカスタマイズしましたが、私はデフォルトのものがモデルの構造を反映していると思います。
これはあなたを助けるかもしれない: https://github.com/OLibutzki/xtext.tools
それはノードモデル用とセマンティックモデル(AST)のアウトラインを提供しています。
XTENDで簡単な解決策は、(EObject.toString()によってデフォルトで実行イントロスペクションに基づく):コールのようなダンプ(someEObject、 '')から
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
}
出力は以下となります返信:
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)
@Joe、この回答を受け入れることを提案できますか? – thSoft