code: func (l *lexer) whitespace() ([]rune, Error) {
  	// read until we hit the first non-whitespace rune
  	_ws := make([]rune, 0, 1)
  
  	// loop until there's nothing more to do
  	for {
  		_next, _err := l.read()
  		if _err != nil {
  			return _ws, _err
  		}
  
  		// what is this next rune?
  		switch _next {
  		// space or tab is consumed
  		case _SPACE:
  			fallthrough
  		case _TAB:
  			break
  
  		// non-whitespace rune
  		default:
  			// return the rune to the buffer and we're done
  			l.unread(_next)
  			return _ws, nil
  		}
  
  		// add this rune to the whitespace
  		_ws = append(_ws, _next)
  	}
  }
docs: // whitespace returns all whitespace (i.e. ' ' and '\t') runes in a sequence,
  // or an error if there is a problem reading the next runes.