如何实现idltojava编译器
我需要实现一个idl到java编译器。事实上,它不是idl到java。扩展了接口定义语言。所以我需要实现一个编译器,它可以生成java源文件。我对corba一无所知,我觉得很难开始。你认为我有可能在半年内完成这项工作吗?如果是这样,我该怎么办。请原谅我的英语
你可以在下面搜索框中键入要查询的问题!
我需要实现一个idl到java编译器。事实上,它不是idl到java。扩展了接口定义语言。所以我需要实现一个编译器,它可以生成java源文件。我对corba一无所知,我觉得很难开始。你认为我有可能在半年内完成这项工作吗?如果是这样,我该怎么办。请原谅我的英语
# 1 楼答案
真正的IDL-to-java不仅会将java代码映射回IDL定义(严格遵守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
这都是假设您了解编译器理论和实现。否则,如果这是一个学习实验,那就太好了!但如果这是有期限的工作的一部分,这可能是一项不现实的任务
不管怎样,祝你好运
# 2 楼答案
如果你对解析器和解析器生成器一无所知,这将是一项艰巨的工作,但我认为如果你不从头开始,半年应该足够了
我建议您使用Antlr,它的贡献示例中碰巧有一个IDL parser implementation。这可能适用于较旧版本的Antlr,但这绝对是一个很好的起点。一定要抓住Antlr book,你会需要它的
对于代码生成部分,您可以使用StringTemplate,这是Antlr的作者Terence Parr编写的模板引擎,正是出于此目的
如果你真的要实现一个完整的ORB,那么不妨看看其他人是如何实现的,例如here
# 3 楼答案
您可以使用idl4emf:
http://code.google.com/p/idl4emf/
该项目由Xtext中的IDL语法实现和Ecore中的IDL元模型实现组成
此项目还包括来自IDL文件的代码生成器项目。只需在EclipseMF中编写Xpand模板,就可以从IDL文件实现自己的生成器
我已经成功地将此项目用作几个发电机项目的一部分