package grafos; import com.github.javaparser.ast.body.MethodDeclaration; import com.github.javaparser.ast.stmt.ExpressionStmt; import com.github.javaparser.ast.stmt.Statement; import com.github.javaparser.ast.visitor.VoidVisitorAdapter; public class Visitador extends VoidVisitorAdapter { //********************************************************/ //********************** Atributos ***********************/ //********************************************************/ private Statement prevNode; //********************************************************/ //*********************** Metodos ************************/ //********************************************************/ // Visitador de métodos // Este visitador añade el nodo final al CFG @Override public void visit(MethodDeclaration methodDeclaration, CFG graph) { prevNode = graph.beginNode(); // Visitamos el método super.visit(methodDeclaration, graph); // Añadimos el nodo final al CFG Statement end = graph.endNode(); if (prevNode != end) graph.connect(prevNode, end); } // Visitador de expresiones // Cada expresión encontrada genera un nodo en el CFG @Override public void visit(ExpressionStmt es, CFG graph) { graph.addNode(es); graph.connect(prevNode, es); prevNode = es; // Seguimos visitando... super.visit(es, graph); } }