function assignop(s, f) {
    var x = infix(s, typeof f === "function" ? f : function(context, left, that) {
      that.left = left;

      checkLeftSideAssign(context, left, that, { allowDestructuring: true });

      that.right = expression(context, 10);

      return that;
    }, 20);

    x.exps = true;
    x.assign = true;

    return x;
  }
Convenience function for defining JSHint symbols for assignment operators.

@param {string} s - the name of the symbol
@param {function} [f] - a function to be invoked that consumes the
                        right-hand side of the operator (see the `infix`
                        function)

@returns {object} - the object describing the JSHint symbol (provided to
                    support cases where further refinement is necessary)