public void Visit(AddExpression expr) { if (expr.Left.Value.HasValue && expr.Right.Value.HasValue) { expr.Value = expr.Left.Value.Value + expr.Right.Value.Value; } }
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(); expr.Accept(printer); Console.WriteLine(); var evaluator = new Evaluator(); expr.Accept(evaluator); Console.WriteLine(expr.Value.Value); }
public void Visit(AddExpression expr) { Console.Write(" + "); }