package de.gaalop.algebra; import de.gaalop.cfg.ControlFlowGraph; import de.gaalop.cfg.EmptyControlFlowVisitor; import de.gaalop.cfg.ExpressionStatement; import de.gaalop.cfg.SequentialNode; import java.util.LinkedList; /** * Removes the DefVars statement from a Control Flow Graph * @author Christian Steinmetz */ public class RemoveDefVars extends EmptyControlFlowVisitor { private LinkedList<SequentialNode> toRemove = new LinkedList<SequentialNode>(); private RemoveDefVars() { } /** * Removes the DefVars statement from a given Control Flow Graph * @param graph The Control Flow Graph */ public static void removeDefVars(ControlFlowGraph graph) { RemoveDefVars visitor = new RemoveDefVars(); graph.accept(visitor); for (SequentialNode node: visitor.toRemove) graph.removeNode(node); } @Override public void visit(ExpressionStatement node) { toRemove.add(node); super.visit(node); } }