【发布时间】:2015-10-19 18:16:15
【问题描述】:
一些有效的 IDL 文件,构建为 IDL 项目并安装,但其部分或全部内容未出现在 SCA Explorer/Target SDR/IDL 存储库中。我相信用于在 IDL 存储库中构建树的 IDL 解析器与构建过程中使用的omniORB idl2cpp (omniidl) 不同,它会拒绝一些有效的 IDL。我发现的所有案例都使用先前定义的 const 值。例如,
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 年的。
【问题讨论】:
-
这是一个基本类型的偶数情况:module Test { interface Bug { const long base = 0; // const long next = base + 1; // 拒绝 const long next = 1; const long another = 1 + 2; //ok // const long base2 = base; //被拒绝 }; };这是基本类型的偶数情况: module Test { interface Bug { const long base = 0; // 下面的代码构建但被 IDE 解析器拒绝 // const long next = base + 1; const long next = 1; const long another = 1 + 2; // 这被拒绝了 // const long base2 = base; }; };
-
对不起。我仍然无法换行。这是基本类型的偶数情况:module Test { interface Bug { const long base = 0; // 下面的代码构建但被 IDE 解析器拒绝 // const long next = base + 1; const long next = 1; const long another = 1 + 2; // 这被拒绝 // const long base2 = base; }; };
标签: eclipse-plugin corba idl redhawksdr