2012-12-04 86 views
5

我正在使用xtext爲特定語言生成編輯器。當爲我的新語言使用編輯器時,它具有所有可愛的xtext功能,如代碼補全和着色等。我希望能夠做的是在我的編輯器中可視化文本的結構。在xtext中查看分析樹/節點模型/ AST

我知道xtext有一個內部的AST和一個分析樹(我知道他們稱之爲「節點模型」) - 有什麼方法可視化這棵樹嗎?

回答

1

您應該檢查內容大綱。我已經定製了我的,但我認爲默認的一個反映了模型的結構。

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)