public static Expr Make(Expr left, Expr right) { return(new Addition(left, right)); }
public BinaryExpr(Expr arg1, Expr arg2) { _left = arg1; _right = arg2; }
public Addition(Expr arg1, Expr arg2) : base(arg1, arg2) { }
public ExprBuilder Mult(int arg) { _expr = new Multiplication(_expr, Constant.Make(arg)); return(this); }
public ExprBuilder Plus(int arg) { _expr = new Addition(_expr, Constant.Make(arg)); return(this); }
public ExprBuilder Const(int arg) { _expr = Constant.Make(arg); return(this); }
public static Expr Make(Expr left, Expr right) { return(new Multiplication(left, right)); }
public Multiplication(Expr arg1, Expr arg2) : base(arg1, arg2) { }