function parseIdent(liberal) {
    var node = startNode();
    if (liberal && options.forbidReserved === "everywhere") {
      liberal = false;
    }
    if (tokType === _name) {
      if (!liberal &&
          (options.forbidReserved && isReservedWord5(tokVal) ||
           strict && isStrictReservedWord(tokVal)) &&
          input.slice(tokStart, tokEnd).indexOf("\\") === -1) {
        raise(tokStart, "The keyword '" + tokVal + "' is reserved");
      }
      node.name = tokVal;
    } else if (liberal && tokType.keyword) {
      node.name = tokType.keyword;
    } else {
      unexpected();
    }
    tokRegexpAllowed = false;
    next();
    return finishNode(node, "Identifier");
  }
Parse the next token as an identifier. If `liberal` is true (used
when parsing properties), it will also convert keywords into
identifiers.

@param {boolean=} liberal
@returns {!node_t}