2013-04-12 69 views
1

xText中的一個名爲「Component」的規則通常會在src-gen文件夾中生成一個類「Component」。 我想向這些類添加額外的方法,而不會在每次對DSL進行微小更改時被覆蓋。將自己的代碼注入這些類的正確方法是什麼?有沒有辦法讓所有類擴展我自己的根類而不是默認的EObject?將代碼注入生成的xText類

在此先感謝。

回答

2

你基本上有兩種選擇:

  • 可以使用IXtext2EcorePostProcessor修改EMF的模型,從的Xtext你的語法推斷。實際的代碼生成是由EMF完成的,所以你必須通過這個瓶頸來擺弄你的代碼。細節在blog of Christian Dietrich中描述。這種方法只適用於小的修改。

  • 您可以使用「生成間隙模式」(又稱「實現間隙模式」),它允許您從生成的模型類派生的寫入類。在這裏你可以添加任何你想要的。細節描述在blog of Heiko Behrens。這種方法更適合於通過繼承進行大規模修改。

你當然可以混合使用這兩種方法...

+0

看起來它需要一定的時間來實現,但是,乍一看,這看起來正是我一直在尋找。非常感謝:-) – Lichtblitz

+0

我試圖用第二種方法,但很快就注意到他使用xtend2 Generator類,而xtext有自己的硬編碼插座的生成器類。這種方法適用於xtext生成器嗎?如果沒有,我如何使用xtend2生成器保存GeneratorFragments? – Lichtblitz