code: function operators(ops) {
    let keys = Object.keys(ops).sort();
    let ps = keys.map(k =>
      P.string(ops[k])
        .trim(_)
        .result(k)
    );
    return P.alt.apply(null, ps);
  }
docs: Operators should allow whitespace around them, but not require it. This helper combines multiple operators together with names.  Example: operators({Add: "+", Sub: "-"})  Gives back an operator that parses either + or - surrounded by optional whitespace, and gives back the word "Add" or "Sub" instead of the character.