function prefix(s, f) {
    var x = symbol(s, 150);
    reserveName(x);

    x.nud = (typeof f === "function") ? f : function(context) {
      this.arity = "unary";
      this.right = expression(context, 150);

      if (this.id === "++" || this.id === "--") {
        if (state.option.plusplus) {
          warning("W016", this, this.id);
        }

        if (this.right) {
          checkLeftSideAssign(context, this.right, this);
        }
      }

      return this;
    };

    return x;
  }
Convenience function for defining "prefix" symbols--operators that accept
expressions as a right-hand side.

@param {string} s - the name of the symbol
@param {function} [f] - the first null denotation function for the symbol;
                        see the `expression` function for more detail

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