/// <summary> /// Adds to expression. /// </summary> /// <param name="factory"> /// The factory. /// </param> /// <param name="expression"> /// To. /// </param> /// <param name="sign"> /// The sign. /// </param> /// <returns> /// </returns> private static ICSharpExpression AddToExpression(CSharpElementFactory factory, ICSharpExpression expression, char sign) { var sign2 = sign == '-' ? '+' : '-'; var text = expression.GetText(); if (text.StartsWith("(") && text.EndsWith(")")) { text = text.Substring(1, text.Length - 2); } var match = Regex.Match(text, "\\" + sign2 + "\\s*1\\s*$"); if (match.Success) { text = text.Substring(0, text.Length - match.Value.Length).Trim(); if (text.StartsWith("(") && text.EndsWith(")")) { text = text.Substring(1, text.Length - 2); } } else { if (expression is IBinaryExpression) { text = "(" + text + ") " + sign + " 1"; } else { text += sign + " 1"; } } text = text.Trim(); var result = factory.CreateExpression(text); if (result.IsConstantValue()) { result = factory.CreateExpressionByValue(result.ConstantValue); } return result; }