gpt4 book ai didi

JavaParser - 获取类型 AST

转载 作者:太空宇宙 更新时间:2023-11-04 13:53:41 35 4
gpt4 key购买 nike

我想从 JavaParser 或其他 Java 代码解析器获取类型化 AST。这意味着我将能够获取特定变量的类型或方法的参数+返回类型。我在 google 上搜索了很多有关 JavaParser 的此功能的信息,但没有找到任何内容,我认为这是因为 JavaParser 制作了非类型化 AST。所以,请告诉我如何得到这个。但请不要说解析所有代码并制作自己的一组类型,我尝试过,这非常困难,我认为这比制作自己的 AST 解析器更难。

最佳答案

我是一名 JavaParser 贡献者,我刚刚在 JavaParser 之上的 Clojure 中完成了这项工作。我在一篇文章 How to build a symbol solver for Java, in Clojure 中解释了如何实现这一点

JavaParser 或任何其他解析器只是构建代码的抽象语法树 (AST),然后您必须解析符号以了解哪些引用与哪些声明相关联。

假设您的代码中有类似以下内容的内容:

a = 1;

现在,要了解 a 的类型,您应该找到它的声明位置。它可以是对参数、局部变量、当前类中声明的字段或继承的字段的引用。如果它是继承的字段,您应该找到父类的代码(或字节码)并在那里查找 a 的声明。解析器不会这样做,解析器只是获取一个字符串(或一个文件)并构建一个 AST。

构建符号解析器并不是火箭科学,但它需要一些工作。我在上面链接的帖子中描述的解决方案可以在 GitHub 上找到,如果您愿意,我很乐意帮助您使用它(即使它是用 Clojure 编写的,您也可以很容易地从 Java 调用它)

关于JavaParser - 获取类型 AST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30045482/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com