Пример #1
0
        public static void Main(string[] args)
        {
            var expr = new AddExpression
            {
                Left = new ValueExpression {
                    Value = 3
                },
                Right = new MultiplyExpression
                {
                    Left = new ValueExpression {
                        Value = 2
                    },
                    Right = new ValueExpression {
                        Value = 7
                    }
                }
            };
            var printer = new Printer();

            printer.Visit(expr);
            Console.WriteLine();

            var evaluator = new Evaluator();

            evaluator.Visit(expr);
            Console.WriteLine(evaluator.Result);
        }
Пример #2
0
 protected override void Visit(AddExpression expr)
 {
     Console.Write("(");
     Visit(expr.Left);
     Console.Write(" + ");
     Visit(expr.Right);
     Console.Write(")");
 }
Пример #3
0
        protected override void Visit(AddExpression expr)
        {
            Visit(expr.Left);
            Visit(expr.Right);

            var right = Stack.Pop();
            var left  = Stack.Pop();

            Stack.Push(left + right);
        }
Пример #4
0
 protected abstract void Visit(AddExpression expr);