package de.gaalop.visualizer.zerofinding; import de.gaalop.cfg.AssignmentNode; import de.gaalop.dfg.Expression; import de.gaalop.dfg.MultivectorComponent; import de.gaalop.dfg.Variable; import de.gaalop.visitors.ReplaceVisitor; import java.util.HashMap; import java.util.LinkedList; /** * Inserts an Expression A into Expression B, if A is located before B * @author Christian Steinmetz */ public class InsertingExpression { public static void insertExpressions(LinkedList<AssignmentNode> nodes) { InsertingExpression insertingExpression = new InsertingExpression(); for (AssignmentNode node: nodes) insertingExpression.visit(node); } private HashMap<Variable, Expression> mapExpressions = new HashMap<Variable, Expression>(); public void visit(AssignmentNode node) { ReplaceVisitor replaceVisitor = new ReplaceVisitor() { @Override public void visit(Variable node) { if (mapExpressions.containsKey(node)) result = mapExpressions.get(node); } @Override public void visit(MultivectorComponent node) { if (mapExpressions.containsKey(node)) result = mapExpressions.get(node); } }; node.setValue(replaceVisitor.replace(node.getValue())); mapExpressions.put(node.getVariable(), node.getValue()); } }