code: func (p *parser) next() (*Token, Error) {
  	// do we have any previously read tokens?
  	_length := len(p._undo)
  	if _length > 0 {
  		_token := p._undo[_length-1]
  		p._undo = p._undo[:_length-1]
  		return _token, nil
  	}
  
  	// otherwise, attempt to retrieve the next token from the lexer
  	return p._lexer.Next()
  }
docs: // next returns the next token from the Lexer, or an error if there is a
  // problem reading from the input stream.