我正在使用xtext爲特定語言生成編輯器。當爲我的新語言使用編輯器時,它具有所有可愛的xtext功能,如代碼補全和着色等。我希望能夠做的是在我的編輯器中可視化文本的結構。在xtext中查看分析樹/節點模型/ AST
我知道xtext有一個內部的AST和一個分析樹(我知道他們稱之爲「節點模型」) - 有什麼方法可視化這棵樹嗎?
我正在使用xtext爲特定語言生成編輯器。當爲我的新語言使用編輯器時,它具有所有可愛的xtext功能,如代碼補全和着色等。我希望能夠做的是在我的編輯器中可視化文本的結構。在xtext中查看分析樹/節點模型/ AST
我知道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