/// <inheritdoc /> public void Visit(MorestachioOperatorExpression expression) { StringBuilder .Append("op(" + expression.Operator.OperatorText + ")") .AppendLine("{") .Up() .AppendInterlacedLine("Left") .AppendInterlacedLine("{") .Up() .AppendInterlaced(); this.Visit(expression.LeftExpression); StringBuilder .Down() .AppendLine() .AppendInterlaced("}"); if (expression.RightExpression != null) { StringBuilder.AppendLine(",") .AppendInterlacedLine("Right") .AppendInterlacedLine("{") .Up() .AppendInterlaced(); this.Visit(expression.RightExpression); StringBuilder.Down().AppendLine().AppendInterlaced("}"); } StringBuilder.Down().AppendLine().AppendInterlaced("}"); }
/// <inheritdoc /> public void Visit(MorestachioOperatorExpression expression) { if (expression.Operator.IsBinaryOperator) { this.Visit(expression.LeftExpression); StringBuilder.Append(" "); StringBuilder.Append(expression.Operator.OperatorText); if (expression.RightExpression != null) { StringBuilder.Append(" "); this.Visit(expression.RightExpression); } } else { if (expression.Operator.Placement == OperatorPlacement.Left) { StringBuilder.Append(expression.Operator.OperatorText); this.Visit(expression.LeftExpression); } else { this.Visit(expression.LeftExpression); StringBuilder.Append(" "); StringBuilder.Append(expression.Operator.OperatorText); } } }
/// <inheritdoc /> public void Visit(MorestachioOperatorExpression expression) { //if (!(expression.LeftExpression is MorestachioOperatorExpression) //&& !(expression.LeftExpression is MorestachioExpressionListBase expList // && expList.Expressions.Count == 1 // && (expList.Expressions.FirstOrDefault() is MorestachioOperatorExpression))) //{ // this.Visit(expression.LeftExpression); //} this.Visit(expression.LeftExpression); StringBuilder.Append(" "); StringBuilder.Append(expression.Operator.OperatorText); if (expression.RightExpression != null) { StringBuilder.Append(" "); this.Visit(expression.RightExpression); } }
internal static IMorestachioExpression ParseExpressionFromKind(this XmlReader reader) { IMorestachioExpression exp = null; switch (reader.Name) { case "Expression": exp = new MorestachioExpression(); break; case "ExpressionMultiPart": exp = new MorestachioMultiPartExpressionList(); break; case "ExpressionArgList": exp = new MorestachioArgumentExpressionList(); break; case "ExpressionString": exp = new MorestachioExpressionString(); break; case "ExpressionNumber": exp = new MorestachioExpressionNumber(); break; case "ExpressionOperator": exp = new MorestachioOperatorExpression(); break; case "ExpressionBracket": exp = new MorestachioBracketExpression(); break; default: throw new ArgumentOutOfRangeException(nameof(ExpressionKindNodeName)); } exp.ReadXml(reader); return(exp); }