code: function parseAssignmentExpression() {
          var token, left, right, node, startToken;
  
          token = lookahead;
          startToken = lookahead;
  
          node = left = parseConditionalExpression();
  
          if (matchAssign()) {
              // LeftHandSideExpression
              if (!isLeftHandSide(left)) {
                  throwErrorTolerant({}, Messages.InvalidLHSInAssignment);
              }
  
              // 11.13.1
              if (strict && left.type === Syntax.Identifier && isRestrictedWord(left.name)) {
                  throwErrorTolerant(token, Messages.StrictLHSAssignment);
              }
  
              token = lex();
              right = parseAssignmentExpression();
              node = delegate.markEnd(delegate.createAssignmentExpression(token.value, left, right), startToken);
          }
  
          return node;
      }
docs: 11.13 Assignment Operators