public override void Visit(AdditionExpression7 ae)
 {
     sb.Append("(");
     ae.LHS.Accept(this);
     sb.Append("+");
     ae.RHS.Accept(this);
     sb.Append(")");
 }
        public void Run()
        {
            var simple = new AdditionExpression7(new Value7(2), new Value7(3));
            var ep     = new ExpressionPrinter7();

            ep.Visit(simple);
            Console.WriteLine(ep.ToString());

            var expr = new MultiplicationExpression7(
                new AdditionExpression7(new Value7(2), new Value7(3)),
                new Value7(4)
                );
            var ep7 = new ExpressionPrinter7();

            ep7.Visit(expr);
            Console.WriteLine(ep7.ToString());
        }
 public abstract void Visit(AdditionExpression7 ae);