在Python中使用plyj解析Java源代码

2024-05-18 14:51:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解析Java源代码以获得方法名、它们的调用、变量名等,我在Python中寻找一个预构建或可扩展的模块,偶然发现了plyj(https://github.com/musiKk/plyj)。 我想找出一个方法,然后得到该方法的代码,并根据某些条件对其进行字符串处理。 但是我不知道它的用法,这个例子太模糊了。有人能给我举个好的用法例子吗?在

另外,如果您能告诉我antlr3(https://github.com/antlr/antlr3)是否更可用(以示例为例),因为我是这些模块的新手,不知道该使用哪个模块。 我没有性能问题,我只想根据功能和易用性对它们进行比较。在

谢谢!在


Tags: 模块方法字符串代码httpsgithubcom用法
1条回答
网友
1楼 · 发布于 2024-05-18 14:51:12

如果你愿意接受一个hueristic的解决方案,那么就选择一个有可靠的Java解析器来构建AST(我的理解是ANTLR非常适合Java),解析源代码,并构建定制代码来爬网树数据结构以找到类delclaration,再爬过一层以获得方法/成员。[我不知道PlyJ是否有经过测试的Java语法,还是构建了ast]。在

对于ANTLR解决方案,至少,打印出这些名称的名称应该非常容易。打印主体并不是那么容易;根据我的知识,ANTLR没有简单的方法将子树作为文本打印出来。如果可以的话,你可能会发现这些评论已经消失了,在词法分析过程中被删除了。您可以从树节点中提取行号,然后返回原始文件并打印出行号范围以获取方法体。(即使构建了AST,大多数解析器生成器也不支持打印任意子树,所以我假设pylj也不例外)。在

这不能很好地处理每个文件的多个类或嵌套类。在

有一些工具可以可靠而准确地做到这一点,但需要付出更多的努力。在

相关问题 更多 >

    热门问题