code: function(no_in) {
            handle_regexp();
            var start = S.token;
  
            if (start.type == "name" && start.value == "yield") {
                if (is_in_generator()) {
                    next();
                    return _yield_expression();
                } else if (S.input.has_directive("use strict")) {
                    token_error(S.token, "Unexpected yield identifier inside strict mode");
                }
            }
  
            var left = maybe_conditional(no_in);
            var val = S.token.value;
  
            if (is("operator") && ASSIGNMENT(val)) {
                if (is_assignable(left) || (left = to_destructuring(left)) instanceof AST_Destructuring) {
                    next();
                    return new AST_Assign({
                        start    : start,
                        left     : left,
                        operator : val,
                        right    : maybe_assign(no_in),
                        end      : prev()
                    });
                }
                croak("Invalid assignment");
            }
            return left;
        }
docs: In ES6, AssignmentExpression can also be an ArrowFunction