code: function parseBreakStatement() {
          var token, label = null;
  
          expectKeyword('break');
  
          // Optimize the most common form: 'break;'.
          if (source[index] === ';') {
              lex();
              
              if (!(inIteration || inSwitch)) {
                  throwError({}, Messages.IllegalBreak);
              }
  
              return {
                  type: Syntax.BreakStatement,
                  label: null
              };
          }
  
          if (peekLineTerminator()) {
              if (!(inIteration || inSwitch)) {
                  throwError({}, Messages.IllegalBreak);
              }
  
              return {
                  type: Syntax.BreakStatement,
                  label: null
              };
          }
  
          token = lookahead();
          if (token.type === Token.Identifier) {
              label = parseVariableIdentifier();
  
              if (!Object.prototype.hasOwnProperty.call(labelSet, label.name)) {
                  throwError({}, Messages.UnknownLabel, label.name);
              }
          }
  
          consumeSemicolon();
  
          if (label === null && !(inIteration || inSwitch)) {
              throwError({}, Messages.IllegalBreak);
          }
  
          return {
              type: Syntax.BreakStatement,
              label: label
          };
      }
docs: 12.8 The break statement