public void ClassTest()
        {
            var e = new AdditionExpression(
                new DoubleExpression(1),
                new AdditionExpression(
                    new DoubleExpression(2),
                    new DoubleExpression(3)
                    )
                );
            //var sb = new StringBuilder();
            var ep = new ExpressionPrinter();

            ep.Visit(e);
            Assert.AreEqual("(1+(2+3))", ep.ToString());

            var calc = new ExpressionCalculator();

            calc.Visit(e);
            Assert.AreEqual(6, calc.Result);
        }
        static void main()
        {
            var e = new AdditionExpression(
                new DoubleExpression(1),
                new AdditionExpression(
                    new DoubleExpression(2),
                    new DoubleExpression(3)
                    )
                );
            //var sb = new StringBuilder();
            var ep = new ExpressionPrinter();

            ep.Visit(e);
            WriteLine(ep);

            var calc = new ExpressionCalculator();

            calc.Visit(e);
            WriteLine($"{ep} = {calc.Result}");
        }