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