Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
 }