首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaParser -获取类型化的AST

JavaParser -获取类型化的AST
EN

Stack Overflow用户
提问于 2015-05-05 14:14:41
回答 1查看 1.3K关注 0票数 1

我想要从JavaParser或其他Java代码解析器中获取类型化的AST。这意味着我将能够获得特定变量的类型或方法的parameters+returning类型。我在谷歌上搜索了很多关于JavaParser的这个特性,但没有找到任何东西,我想这是因为JavaParser生成了非类型化的。所以,请告诉我如何才能得到它。但请不要说解析所有的代码并创建我自己的类型集,我试过了,这非常困难,我认为这比创建我自己的AST解析器更难。

EN

回答 1

Stack Overflow用户

发布于 2015-05-21 04:44:07

我是一名JavaParser贡献者,我刚刚在JavaParser上用Clojure做到了这一点。我在一篇How to build a symbol solver for Java, in Clojure文章中解释了如何实现这一点

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

假设您的代码中包含如下内容:

代码语言:javascript
复制
a = 1;

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30045482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档