正如Eclipse文檔所建議的,我有一個編譯每個源文件的org.eclipse.core.resources.IncrementalProjectBuilder
,另外我還有一個可以編輯每個源文件的org.eclipse.ui.editors.text.TextEditor
。每個源文件都被編譯到它自己的編譯單元中,但它可以引用其他(已編譯的)源文件的類型。使用Eclipse構建DSL時,增量編譯的最佳方法是什麼?
兩項任務,也是它重要的是:
- 編譯(確保我們實際上正在使用的類型存在)
- 自動完成(查找的類型,所以我們可以看到什麼樣的屬性/方法是存在的)
爲了做到這一點,我想存儲在內存中的所有編譯類型的表示(下面稱爲我的「類型存儲」)。
我的問題是雙重的:
任務一個以上由編輯的建設者和任務二進行。爲了讓他們都可以訪問這個類型的商店,我應該在他們都可以訪問的地方創建一個靜態存儲,或者Eclipse是否提供了一個更好的方法來處理這個問題?請注意,這是eclipse,而不是我,在需要時實例化構建器和編輯器。
打開eclipse時,我不想重建整個項目,所以我可以重新填充我的類型存儲。到目前爲止,我的最佳解決方案是將此數據保存在某處,然後從中重新填充我的商店(可能在項目打開時)。這是其他增量編譯器通常這樣做的嗎?我相信Java的方法是使用一個特殊的解析器,從類文件中有效地提取這些數據。
任何見解將非常感激。這是我的第一個DSL。
感謝您的詳細解釋。我認爲你或多或少證實了我應該如何實現的懷疑,但瞭解Java插件如何解決問題很有用。 – 2011-04-25 08:00:52