有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何实现idltojava编译器

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


共 (3) 个答案

  1. # 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. # 2 楼答案

    如果你对解析器和解析器生成器一无所知,这将是一项艰巨的工作,但我认为如果你不从头开始,半年应该足够了

    我建议您使用Antlr,它的贡献示例中碰巧有一个IDL parser implementation。这可能适用于较旧版本的Antlr,但这绝对是一个很好的起点。一定要抓住Antlr book,你会需要它的

    对于代码生成部分,您可以使用StringTemplate,这是Antlr的作者Terence Parr编写的模板引擎,正是出于此目的

    如果你真的要实现一个完整的ORB,那么不妨看看其他人是如何实现的,例如here

  3. # 3 楼答案

    您可以使用idl4emf:

    http://code.google.com/p/idl4emf/

    该项目由Xtext中的IDL语法实现和Ecore中的IDL元模型实现组成

    此项目还包括来自IDL文件的代码生成器项目。只需在EclipseMF中编写Xpand模板,就可以从IDL文件实现自己的生成器

    我已经成功地将此项目用作几个发电机项目的一部分