来自java源码的工件提取器

时间:2012-07-02 21:09:08

标签: java c++ parsing

您是否知道可以解析Java源代码的C ++库(开源或非商业用途),例如从jar文件或定义的类路径?我想提取类,类成员,方法,方法调用以及这些工件之间的关系。

我整天都在谷歌上搜索解决方案。无论是我是盲人,还是无法阅读! :)

2 个答案:

答案 0 :(得分:1)

您无法从 jar 文件中获取源代码,因为它实际上是一组(二进制)类文件。假设你的意思是可能用于生成jar文件的源代码,那么这是一个不错的答案。

如果您需要开源解决方案,可以尝试ANTLR,其中Java 1.5 grammar和AFAIK将构建AST。从那里你可以“提取”你想要的项目的树木,或至少提取感兴趣的子树的行号;从那里,你可以提取你想要的代码。

我相信ANTLR可以配置为生成基于C ++的解析器。

要捕获这些之间的关系,您需要全名和类型解析,以便了解标识符实际引用的定义。为此,ANTLR只是一个解析器不会做的伎俩;你需要住Life After Parsing

替代方案可能是Java编译器;它提供某种API。

答案 1 :(得分:0)

有许多可用于Java的反编译器。这些都不一定基于C ++,但它们可以将Java类和库转换回源代码。

示例:JD Core,DJ Java Decompiler。 more