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