Skip to content
Snippets Groups Projects
Commit 7860e367 authored by Carlos Galindo's avatar Carlos Galindo
Browse files

Improve OutNodeVariableVisitor

parent 98cf7c78
No related branches found
No related tags found
1 merge request!58Object flow and trees
...@@ -8,52 +8,79 @@ import java.util.Set; ...@@ -8,52 +8,79 @@ import java.util.Set;
/** Visitor that obtains a set of variables that may have been redefined in /** Visitor that obtains a set of variables that may have been redefined in
* an expression passed as parameter to a call. */ * an expression passed as parameter to a call. */
public class OutNodeVariableVisitor extends VoidVisitorAdapter<Set<NameExpr>> { public class OutNodeVariableVisitor extends VoidVisitorAdapter<Set<Expression>> {
@Override @Override
public void visit(ArrayAccessExpr n, Set<NameExpr> variables) { public void visit(ArrayAccessExpr n, Set<Expression> variables) {
n.getName().accept(this, variables); n.getName().accept(this, variables);
} }
@Override @Override
public void visit(CastExpr n, Set<NameExpr> variables) { public void visit(CastExpr n, Set<Expression> variables) {
n.getExpression().accept(this, variables); n.getExpression().accept(this, variables);
} }
@Override @Override
public void visit(ConditionalExpr n, Set<NameExpr> variables) { public void visit(ConditionalExpr n, Set<Expression> variables) {
n.getThenExpr().accept(this, variables); n.getThenExpr().accept(this, variables);
n.getElseExpr().accept(this, variables); n.getElseExpr().accept(this, variables);
} }
@Override @Override
public void visit(EnclosedExpr n, Set<NameExpr> variables) { public void visit(EnclosedExpr n, Set<Expression> variables) {
n.getInner().accept(this, variables); n.getInner().accept(this, variables);
} }
@Override @Override
public void visit(ExpressionStmt n, Set<NameExpr> variables) { public void visit(ExpressionStmt n, Set<Expression> variables) {
n.getExpression().accept(this, variables); n.getExpression().accept(this, variables);
} }
@Override @Override
public void visit(FieldAccessExpr n, Set<NameExpr> variables) { public void visit(FieldAccessExpr n, Set<Expression> variables) {
n.getScope().accept(this, variables); n.getScope().accept(this, variables);
} }
@Override @Override
public void visit(NameExpr n, Set<NameExpr> variables) { public void visit(ThisExpr n, Set<Expression> variables) {
variables.add(n); variables.add(n);
} }
@Override @Override
public void visit(UnaryExpr n, Set<NameExpr> variables) { public void visit(NameExpr n, Set<Expression> variables) {
switch (n.getOperator()) { variables.add(n);
case POSTFIX_DECREMENT:
case POSTFIX_INCREMENT:
case PREFIX_DECREMENT:
case PREFIX_INCREMENT:
n.getExpression().accept(this, variables);
}
} }
// Expressions that stop the visit: no object can be outputted, modified inside the call and returned so that
// we may access its value.
@Override
public void visit(UnaryExpr n, Set<Expression> variables) {}
@Override
public void visit(ArrayCreationExpr n, Set<Expression> arg) {}
@Override
public void visit(ArrayInitializerExpr n, Set<Expression> arg) {}
@Override
public void visit(BinaryExpr n, Set<Expression> arg) {}
@Override
public void visit(ClassExpr n, Set<Expression> arg) {}
@Override
public void visit(InstanceOfExpr n, Set<Expression> arg) {}
@Override
public void visit(MethodCallExpr n, Set<Expression> arg) {}
@Override
public void visit(ObjectCreationExpr n, Set<Expression> arg) {}
@Override
public void visit(LambdaExpr n, Set<Expression> arg) {}
@Override
public void visit(MethodReferenceExpr n, Set<Expression> arg) {}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment