我需要实现一个idl-to-java编译器。事实上,它不是idl-to-java。界面定义语言得到扩展。所以我需要实现一个可以生成java源文件的编译器。我对科尔巴一无所知,我觉得很难开始。你觉得我有可能在半年内完成这项工作吗?如果是的话,我该怎么办。 ps:请原谅我的英语。
答案 0 :(得分:2)
真正的IDL-to-java不仅会喷出将这些东西映射回IDL定义的Java代码(严格遵守OMG标准)。它还生成Java代码,允许您的定义与底层CORBA堆栈一起使用(与为目标硬件架构生成指令的真正编译器不同。)
即IDL编译器
1)获取您的IDL定义并将它们转换为CORBA堆栈,特定于语言的独立定义(在您的情况下,在Java中)。
2)除此之外,它还生成CORBA堆栈/供应商特定代码。
如果您需要的只是#1,那么它不是IDL-to-Java编译器(不是真正意义上的单词)。但是为了简单起见,我们可以称之为。
所以你在这里有两条可能的路线:
1)查看基于Java的现有CORBA堆栈(OpenOrb或JacOrb)或
的IDL编译器的源代码2)查看OMG的规格,告诉您如何从IDL映射到您选择的语言:http://www.omg.org/technology/documents/idl2x_spec_catalog.htm
这是假设您了解编译器理论和实现。否则,如果这是一个学习的实验,太棒了!但如果这是截止日期工作的一部分,这可能是一项不切实际的任务。
无论哪种方式,祝你好运。
答案 1 :(得分:2)
您可以使用idl4emf:
http://code.google.com/p/idl4emf/
该项目由Xtext中的IDL语法实现和Ecore中的IDL元模型实现组成。
该项目还包括IDL文件的代码生成器项目。只需在Eclipse EMF中编写Xpand模板,就可以从IDL文件中实现自己的生成器。
我已成功将此项目用作多个发电机项目的一部分。
答案 2 :(得分:1)
如果你对解析器和解析器生成器一无所知,那将是一项艰巨的工作,但我认为如果你不从头开始,半年应该是充足的。
我建议您使用Antlr,恰好在其提供的示例中有IDL parser implementation。这可能是Antlr的旧版本,但它绝对是一个很好的起点。一定要抓住Antlr book,你需要它!
对于代码生成部分,您可以使用StringTemplate,这是Antlr的作者Terence Parr编写的模板引擎,正是出于此目的。
如果你真的需要实施整个ORB,你可以查看其他人如何做到这一点,例如: here