Когда я посещаю узел MethodInvocation во время обхода AST, я хочу знать, лежит ли он в части IfStatement затем или else или в выражении часть.Часть then может быть полным блоком кода, но я думаю, что мой код обрабатывает только один оператор then.
Вот фрагмент кода для посещения вызова метода
@Override
public boolean visit(MethodInvocation node)
{
StructuralPropertyDescriptor location = node.getLocationInParent();
setNodeRegion(location);
Вот как я хочу установить флаги для каждого региона IfStatement
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;
}
}
}
}