code: func (s *Scanner) scanWhitespace() (tok Token, pos Pos, lit string) {
  	// Create a buffer and read the current character into it.
  	var buf bytes.Buffer
  	ch, pos := s.r.curr()
  	_, _ = buf.WriteRune(ch)
  
  	// Read every subsequent whitespace character into the buffer.
  	// Non-whitespace characters and EOF will cause the loop to exit.
  	for {
  		ch, _ = s.r.read()
  		if ch == eof {
  			break
  		} else if !isWhitespace(ch) {
  			s.r.unread()
  			break
  		} else {
  			_, _ = buf.WriteRune(ch)
  		}
  	}
  
  	return WS, pos, buf.String()
  }
docs: // scanWhitespace consumes the current rune and all contiguous whitespace.