docs: function parseScriptBody() {
          var statement, body = [], token, directive, firstRestricted;
  
          while (startIndex < length) {
              token = lookahead;
              if (token.type !== Token.StringLiteral) {
                  break;
              }
  
              statement = parseStatementListItem();
              body.push(statement);
              if (statement.expression.type !== Syntax.Literal) {
                  // this is not directive
                  break;
              }
              directive = source.slice(token.start + 1, token.end - 1);
              if (directive === 'use strict') {
                  strict = true;
                  if (firstRestricted) {
                      tolerateUnexpectedToken(firstRestricted, Messages.StrictOctalLiteral);
                  }
              } else {
                  if (!firstRestricted && token.octal) {
                      firstRestricted = token;
                  }
              }
          }
  
          while (startIndex < length) {
              statement = parseStatementListItem();
              /* istanbul ignore if */
              if (typeof statement === 'undefined') {
                  break;
              }
              body.push(statement);
          }
          return body;
      }