示例#1
0
 public void Visit(AdditionExpression ae)
 {
     _sb.Append("(");
     ae.Left.Accept(this);
     _sb.Append(" + ");
     ae.Right.Accept(this);
     _sb.Append(")");
 }
示例#2
0
        public void Visit(AdditionExpression exp)
        {
            exp.Left.Accept(this);
            var a = Result;

            exp.Right.Accept(this);
            var b = Result;

            Result = a + b;
        }
示例#3
0
        public void Test_using_the_calculator_visitor()
        {
            var exp = new AdditionExpression(
                new DoubleExpression(1.0),
                new AdditionExpression(
                    new DoubleExpression(2.0),
                    new DoubleExpression(3.0))
                );

            var calc = new ExpressionCalculator();

            calc.Visit(exp);

            Assert.AreEqual(6, calc.Result);
        }
示例#4
0
        public void Test_using_the_print_visitor()
        {
            var exp = new AdditionExpression(
                new DoubleExpression(1.0),
                new AdditionExpression(
                    new DoubleExpression(2.0),
                    new DoubleExpression(3.0))
                );

            var printer = new ExpressionPrinter();

            printer.Visit(exp);

            string result = printer.ToString();

            Assert.False(string.IsNullOrEmpty(result));
        }