java 语义分析_Java代码分析器(五): 语义分析简介

本系列临近尾声,科技树到此点满。

语法分析主要用库解决了,代码变成了一棵树,但是变量类型,方法签名之类的东东都不清楚。

如果做IDE插件,可以享受IDE的语义分析能力。为了让程序独立运行,我自己按需实现了语义分析。

比较复杂,就分享一种最典型的吧。贴代码为主,有问题请告诉我,我再改文章。

解析某个变量的声明类型,会上溯当前方法和类,以及祖先类。为了提速(分析大型代码库),可以手动限制范围。

直接贴代码了,已在Exia项目提供。

public class VariableTypeResolver {

private final String symbol;

private final ASTNode minScope;

private boolean methodLevel = true;

private boolean typeLevel = true;

/**

* The found result

*/

private SimpleName declSN;

private final ASTVisitor visitor = new ASTVisitor() {

@Override

public boolean visit(SimpleName sn) {

if (found()) {

return false;

}

if (sn.getIdentifier().equals(symbol) && sn.getParent() inst


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部