Example #1
0
        public static void Invoke()
        {
            var additionExpression = new AdditionExpression(new DoubleExpression(10), new AdditionExpression(new DoubleExpression(11), new DoubleExpression(12)));
            var printerExpression  = new StringBuilder();

            additionExpression.Print_Internal(printerExpression);
            Console.WriteLine("Internal Print : " + printerExpression);
            printerExpression.Clear();
            ClassicExpressionPrinter.Print_ConditionalMethod(additionExpression, printerExpression);
            Console.WriteLine("ConditionalMethod : " + printerExpression);

            var expressionPrinter = new ExpressionPrinter();

            expressionPrinter.Visit(additionExpression);
            expressionPrinter.Clear();
            expressionPrinter.Print(additionExpression);
            Console.WriteLine("Classic Visitor : " + expressionPrinter);


            var expressionCalculator = new ExpressionCalculator();

            expressionCalculator.Visit(additionExpression);
            Console.WriteLine("Classic Visitor : " + expressionPrinter + "=" + expressionCalculator);

            var expressionPrinter1 = new GenericExpressionPrinter();

            expressionPrinter1.Visit(additionExpression);
            Console.WriteLine("Generic Visitor : " + expressionPrinter1);


            var expressionCalculator1 = new GenericExpressionCalculator();

            expressionCalculator1.Visit(additionExpression);
            Console.WriteLine("Generic Visitor : " + expressionPrinter1 + "=" + expressionCalculator1);
        }
Example #2
0
 public void Visit(AdditionExpression visitable)
 {
     sb.Append("(");
     visitable.Left.Accept((IVisitor)this);
     sb.Append(" + ");
     visitable.Right.Accept((IVisitor)this);
     sb.Append(")");
 }
Example #3
0
 /// <summary>
 /// since dynamic is used if any of Expression is passed which is not part of Print(T) then runtime crash will occur
 /// and it has performance impact
 /// </summary>
 /// <param name="additionExpression"></param>
 public void Print(AdditionExpression additionExpression)
 {
     sb.Append("(");
     Print((dynamic)additionExpression.Left);
     sb.Append(" + ");
     Print((dynamic)additionExpression.Right);
     sb.Append(")");
 }
Example #4
0
 public void Visit(AdditionExpression additionExpression)
 {
     sb.Append("(");
     additionExpression.Left.Accept((IExpressionVisitor)this);
     sb.Append(" + ");
     additionExpression.Right.Accept((IExpressionVisitor)this);
     sb.Append(")");
 }
Example #5
0
        public void Visit(AdditionExpression visitable)
        {
            visitable.Left.Accept((IVisitor)this);
            var leftResult = Result;

            visitable.Right.Accept((IVisitor)this);
            var rightResult = Result;

            Result = leftResult + rightResult;
        }
Example #6
0
        public void Visit(AdditionExpression additionExpression)
        {
            additionExpression.Left.Accept((IExpressionVisitor)this);
            var leftResult = Result;

            additionExpression.Right.Accept((IExpressionVisitor)this);
            var rightResult = Result;

            Result = leftResult + rightResult;
        }