如何实现idl-to-java编译器

时间:2011-08-12 09:16:00

标签: java compiler-construction corba idl

我需要实现一个idl-to-java编译器。事实上,它不是idl-to-java。界面定义语言得到扩展。所以我需要实现一个可以生成java源文件的编译器。我对科尔巴一无所知,我觉得很难开始。你觉得我有可能在半年内完成这项工作吗?如果是的话,我该怎么办。 ps:请原谅我的英语。

3 个答案:

答案 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