2012-11-13 68 views
2

我花了幾天的時間想出一個在Xtext DSL中引用C++類型的解決方案。在這一點上,我非常熟悉用於參考Java/JVM類型的Xtext/Eclipse機制。在Xtext中引用C++類型語法/ DSL

假設要做類似於JVM導入機制的事情,我必須將現有的(可能相當大的)CDT索引保存爲Ecore,並將Ecore導入到我的Xtext語法中。

我正在考慮的另一種選擇是對現有CDT索引進行一些編程性掛鉤。看起來這個選項可能更困難,因爲它可能涉及更多的自定義代碼來實現。

是否有人發現併成功實現了Xtext語法/ DSL中C++類型的引用?任何例子?任何建議更好的解決方案?對於這個問題,我建議的解決方案中的任何一個看起來是否合理/可行

謝謝。

回答

0

要真正能夠在Xtext DSL中引用C++或任何非Xtext元素,必須將可引用元素引入Xtext的索引。

正確的做法是創建一個IAllContainerState,其中包含CDT索引併爲每個C++文件創建一個IResourceDescription。所述CDT索引應包含有關所包含的資源,類型和名稱的信息,這可以被映射到在作用域章描述的概念:https://eclipse.org/Xtext/documentation/303_runtime_concepts.html#scoping

的GenericResourceServiceProvider可用於一個IResourceServiceProvider用於C++資源。

查看org.eclipse.xtext.resource.generic包以及它如何用於索引.ecore模型。