コード例 #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);