2015-10-19 48 views
0

某些有效的IDL文件構建爲IDL項目並安裝,但其部分或全部內容未顯示在SCA Explorer/Target SDR/IDL存儲庫中。我相信用於構建IDL存儲庫中的樹的IDL分析器與構建期間由omniORB idl2cpp(omniidl)使用的不同,它會拒絕一些有效的IDL。我發現的情況都使用先前定義的const值。例如,可以發生在相同的文件或在包括包含第一行中的文件的文件RedHawk IDE中IDL解析器中的錯誤

const的算法ALG_NONE = 0 const的算法ALG_LPC = ALG_NONE + 3

第二行。

如果第二行不在同一個文件中,但包含第一行的文件被拒絕並且它的內容都不會出現在IDL存儲庫樹中,那麼將接受包含第一行的文件。它看起來拒絕了一個const作爲賦值語句右側的值出現。但這些文件是有效的,並且被omniidl認可爲有效。但是它們不能在RedHawk中使用,因爲它們不能用於組件接口。

我對RedHawk IDE源代碼或Eclipse插件不是很熟悉,所以一直未能找到指定解析器語法的地方。我看到「eclipsecorba」出現在插件列表中,所以我假定RedHawk使用Eclipse CORBA插件(又名ECP),並且它的解析器是用來構建樹的。所以我懷疑解析器錯誤是在該包中,而不是由RedHawk添加的代碼中。

任何人都可以證實這一點,並建議我可以看看ECP代碼爲什麼嗎?我是否應該將此作爲ECP錯誤報告給SourceForge上的ECP組?我不知道它是多麼活躍,因爲它看起來最新版本是從2008年起。

+0

這裏是一個偶數的情況下用鹼的類型: 模塊測試 { \t接口錯誤{ \t \t常量長底邊= 0; \t \t // const long next = base + 1; // reject \t \t const long next = 1; \t \t const long another = 1 + 2; //好吧 \t \t // const long base2 = base; // rejected \t \t}; }; 這裏是一個偶數的情況下用鹼的類型: 模塊測試 { \t接口錯誤{ \t \t常量長底邊= 0; \t \t //這個下面的內容會被IDE解析器拒絕 \t \t // const long next = base + 1; \t \t const long next = 1; \t \t const long another = 1 + 2; \t \t //並且被拒絕 \t \t // const long base2 = base; \t \t}; }; –

+0

對不起。我仍然不能得到線breaks.Here是一個偶數的情況下用鹼的類型: 模塊測試 { \t接口錯誤{ \t \t常量長底邊= 0; \t \t //這個下面的內容會被IDE解析器拒絕 \t \t // const long next = base + 1; \t \t const long next = 1; \t \t const long another = 1 + 2; \t \t //並且被拒絕 \t \t // const long base2 = base; \t \t}; }; –

+0

查看對此主題的回覆:[http://stackoverflow.com/a/34133411/1311595](http://stackoverflow.com/a/34133411/1311595)。 –

回答

2

這似乎是IDL編輯器中的一個錯誤,您擁有的IDL是合法的。建議您向ECP報告,但鑑於該項目長時間不活動,可能不會很快解決。我知道我們的Remedy IT工程師之一爲Eclipse創建了一個更現代的IDL編輯器,但由於缺乏資金,此工作無法公開。