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

问题描述 投票:0回答:3

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

java corba idl
3个回答
2
投票

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

我建议您使用Antlr,它在其贡献的示例中恰好有一个IDL解析器实现。这可能适用于旧版本的 Antlr,但这绝对是一个很好的起点。请务必获取Antlr 书,您将需要它!

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

如果您确实必须实现整个 ORB,您不妨看看其他人是如何做到的,例如这里


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

这一切都假设您了解编译器理论和实现。否则,如果这是一个学习实验,那就太好了!但如果这是有截止日期的工作的一部分,这可能是一项不切实际的任务。

无论怎样,祝你好运。


2
投票

您可以使用idl4emf:

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

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

该项目还包括来自 IDL 文件的代码生成器项目。您只需在 Eclipse EMF 中编写 Xpand 模板即可从 IDL 文件实现您自己的生成器。

我已成功使用该项目作为多个生成器项目的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.