在Python中使用plyj解析Java源代码
发布时间:2020-12-20 13:39:47 所属栏目:Python 来源:网络整理
导读:我正在尝试解析 Java源代码以获取方法名称,它们的调用,变量名称等.我正在寻找 Python中的预构建或可扩展模块,偶然发现了plyj( https://github.com/musiKk/plyj). 我想找出一个方法,然后获取方法的代码并根据某些条件对其进行一些字符串处理. 但我无法弄清楚
我正在尝试解析
Java源代码以获取方法名称,它们的调用,变量名称等.我正在寻找
Python中的预构建或可扩展模块,偶然发现了plyj(
https://github.com/musiKk/plyj).
我想找出一个方法,然后获取方法的代码并根据某些条件对其进行一些字符串处理. 但我无法弄清楚它的用法,这个例子太模糊了.任何人都可以指出一个很好的用法示例吗? 另外,如果你能告诉我antlr3(https://github.com/antlr/antlr3)是否更有用(例如),因为我是这些模块的新手并且不知道哪一个. 谢谢! 解决方法
如果你愿意接受一个解决方案,那就得一个有可靠的Java解析器来构建一个AST(我的理解是ANTLR非常适合Java),解析源代码,并构建自定义代码来抓取树数据结构下来找到类声明,并抓取一个较浅的层来获取方法/成员. [我不知道PlyJ是否有经过测试的Java语法,或者是否构建了AST].
对于ANTLR解决方案,至少应该很容易打印出那些名称.印刷这些尸体并不容易; ANTLR没有简单的方法让我知道如何将子树打印成文本.如果可以的话,你可能会发现评论已经消失,在lexing期间被淘汰了.您可以从树节点中提取行号,然后返回到原始文件并打印行号范围以获取方法体. (大多数解析器生成器即使它们构建AST也不支持打印任意子树,所以我认为pylj没有区别). 这不会处理每个文件的多个类,也不能很好地处理嵌套类. 有些工具可以可靠而准确地完成这项工作,但需要付出更多努力. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |