您是否知道可以解析Java源代码的C ++库(开源或非商业用途),例如从jar文件或定义的类路径?我想提取类,类成员,方法,方法调用以及这些工件之间的关系。
我整天都在谷歌上搜索解决方案。无论是我是盲人,还是无法阅读! :)
答案 0 :(得分:1)
您无法从 jar 文件中获取源代码,因为它实际上是一组(二进制)类文件。假设你的意思是可能用于生成jar文件的源代码,那么这是一个不错的答案。
如果您需要开源解决方案,可以尝试ANTLR,其中Java 1.5 grammar和AFAIK将构建AST。从那里你可以“提取”你想要的项目的树木,或至少提取感兴趣的子树的行号;从那里,你可以提取你想要的代码。
我相信ANTLR可以配置为生成基于C ++的解析器。
要捕获这些之间的关系,您需要全名和类型解析,以便了解标识符实际引用的定义。为此,ANTLR只是一个解析器不会做的伎俩;你需要住Life After Parsing。
替代方案可能是Java编译器;它提供某种API。
答案 1 :(得分:0)