code: func (s *Scanner) scanString() (tok Token, pos Pos, lit string) {
  	s.r.unread()
  	_, pos = s.r.curr()
  
  	var err error
  	lit, err = ScanString(s.r)
  	if err == errBadString {
  		return BADSTRING, pos, lit
  	} else if err == errBadEscape {
  		_, pos = s.r.curr()
  		return BADESCAPE, pos, lit
  	}
  	return STRING, pos, lit
  }
docs: // scanString consumes a contiguous string of non-quote characters.
  // Quote characters can be consumed if they're first escaped with a backslash.