2012-12-04 8 views
5

私はxtextを使って特定の言語のエディタを生成しています。私の新しい言語にエディタを使用すると、コード補完や色付けなどの素敵なxtextのすべての機能があります。私ができるようにしたいのは、エディタでテキストの構造を視覚化することです。構文木/ノードモデル/ ASTをxtextで見る

xtextには内部ASTと解析木があります(私は彼らが `ノードモデル 'と呼んでいることを理解しています)。 - このツリーを視覚化する方法はありますか?

答えて

1

内容の概要を確認してください。私は私のものをカスタマイズしましたが、私はデフォルトのものがモデルの構造を反映していると思います。

2

これはあなたを助けるかもしれない: https://github.com/OLibutzki/xtext.tools

それはノードモデル用とセマンティックモデル(AST)のアウトラインを提供しています。

+0

@Joe、この回答を受け入れることを提案できますか? – thSoft

1

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) 
関連する問題