예제 #1
0
파일: Program.cs 프로젝트: lucian044/OOP
        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
파일: Printer.cs 프로젝트: lucian044/OOP
 protected override void Visit(AddExpression expr)
 {
     Console.Write("(");
     Visit(expr.Left);
     Console.Write(" + ");
     Visit(expr.Right);
     Console.Write(")");
 }
예제 #3
0
파일: Evaluator.cs 프로젝트: lucian044/OOP
        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
파일: Visitor.cs 프로젝트: lucian044/OOP
 protected abstract void Visit(AddExpression expr);