code: func (l *lexer) next() rune {
  	if int(l.pos) >= len(l.input) {
  		l.width = 0
  		return eof
  	}
  	r, w := utf8.DecodeRuneInString(l.input[l.pos:])
  	l.width = Pos(w)
  	l.pos += l.width
  	return r
  }
docs: // next returns the next rune in the input.