private static IParser <Rt.IExpression> Binary( string name, Runtime.BinaryOperator op, IParser <Rt.IExpression> innerL, IParser <Rt.IExpression> innerR) { return(innerL .AndIgnore(C.Expect(name)) .AndIgnore(Whitespace) .And(innerR) .Map(args => (Rt.IExpression) new Rt.BinaryExpression { Op = op, Left = args.Item1, Right = args.Item2, })); }