code: func (l *lexer) next() rune {
  	if int(l.pos.byteNo) >= len(l.input) {
  		l.prev = l.pos
  		return lexEOF
  	}
  	r, w := utf8.DecodeRuneInString(l.input[l.pos.byteNo:])
  	l.prev = l.pos
  	l.pos.byteNo += w
  	if r == '\n' {
  		l.pos.lineStart = l.pos.byteNo
  		l.pos.lineNo++
  		l.freshLine = true
  	} else if l.freshLine {
  		if !isWhitespace(r) {
  			l.freshLine = false
  		}
  	}
  	return r
  }
docs: // next returns the next rune in the input.