private static void MoveNumberTerm(Expression from, Expression to) { List <Tuple <IOperator, ITerm> > OperatorTermIndexList = GetOperatorTermIndexPairs(from); if (OperatorTermIndexList.Any()) { Tuple <IOperator, ITerm> next = OperatorTermIndexList.First(); OperatorExpressionPair extracted = from.Extract(next.Item1, next.Item2); to.Insert(extracted); } }
private static void MoveVariableTerm(Expression from, Expression to) { IVariable variable = from.Variables.First(); SubExpression variableGroup = from.GetVariableProductSubExpression(variable); OperatorExpressionPair extracted = from.Extract(new Operator('+'), variableGroup); if (extracted != null) { to.Insert(extracted); } }
public void Insert(OperatorExpressionPair pair) { if (pair == null) { throw new ArgumentNullException(); } if (pair.Orientation == InsertOrientation.Left) { Insert(0, pair.Operator); InsertRange(0, pair.Expr); } else { Add(pair.Operator); AddRange(pair.Expr); } }
public static void ApplyToBothSides(this Equation source, OperatorExpressionPair pair) { source.LeftHandSide.Insert(pair); source.RightHandSide.Insert(pair); }