protected IProgramPart Expr <T>(dynamic ctx, Func <T, T, T> xformer) { var left = Visit(ctx.left) as IExpression <T>; if (ctx.right == null) { return(left); } var right = Visit(ctx.right) as IExpression <T>; return(TwoTermExpression <T> .Create <T>(left, right, xformer)); }
protected IProgramPart Expr(dynamic ctx, string oper, Func <dynamic, dynamic, dynamic> xformer) { var left = Visit(ctx.left) as IExpression; if (ctx.right == null) { return(left); } var right = Visit(ctx.right) as IExpression; return(TwoTermExpression.Create(left, right, xformer, oper)); }