如何在Eclipse JDT解析中判断MethodInvocation节点的IfStatement所属区域
我来梳理下这个AST遍历场景下的问题和现有实现:
核心需求
在遍历AST访问MethodInvocation节点时,需要精准判断该节点处于IfStatement的表达式部分、then分支还是else分支。目前存在一个局限:虽然then分支允许是完整的代码块,但当前代码仅能处理then分支为单条语句的情况。
现有代码实现
访问MethodInvocation节点的逻辑
@Override public boolean visit(MethodInvocation node) { StructuralPropertyDescriptor location = node.getLocationInParent(); setNodeRegion(location); }
标记代码块区域的辅助方法
private void setNodeRegion(StructuralPropertyDescriptor location) { if(location == IfStatement.EXPRESSION_PROPERTY || location == IfStatement.THEN_STATEMENT_PROPERTY) { ParseContextAction.ifBlockRegion = true; } else { if(location == IfStatement.ELSE_STATEMENT_PROPERTY) { ParseContextAction.elseBlockRegion = true; } else { if(location == CatchClause.BODY_PROPERTY) { ParseContextAction.catchBlockRegion = true; } else { ParseContextAction.basicBlockRegion = true; } } } }
内容的提问来源于stack exchange,提问作者Shamsa
相关产品推荐
相关产品推荐

