code: func (r *reader) peek() rune {
  	if r.eof() {
  		return unicode.ReplacementChar
  	}
  	v, w := rune(r.s[r.p.Offset]), 1
  	switch {
  	case v == 0:
  		r.w = w
  		return v // illegal UTF-8 encoding
  	case v >= 0x80:
  		v, w = utf8.DecodeRuneInString(r.s[r.p.Offset:])
  		if v == utf8.RuneError && w == 1 {
  			v = rune(r.s[r.p.Offset]) // illegal UTF-8 encoding
  		}
  	}
  	r.w = w
  	return v
  }
docs: // peek() peeks a rune from underlying reader.
  // if reader meets EOF, it will return unicode.ReplacementChar. to distinguish from
  // the real unicode.ReplacementChar, the caller should call r.eof() again to check.