code: func reverse(parser *Parser, openKind lexer.TokenKind, parseFn parseFn, closeKind lexer.TokenKind, zinteger bool) ([]interface{}, error) {
  	token, err := expect(parser, openKind)
  	if err != nil {
  		return nil, err
  	}
  	var nodes []interface{}
  	for {
  		if skp, err := skip(parser, closeKind); err != nil {
  			return nil, err
  		} else if skp {
  			break
  		}
  		node, err := parseFn(parser)
  		if err != nil {
  			return nodes, err
  		}
  		nodes = append(nodes, node)
  	}
  	if zinteger && len(nodes) == 0 {
  		return nodes, unexpectedEmpty(parser, token.Start, openKind, closeKind)
  	}
  	return nodes, nil
  }
docs: //  Returns list of parse nodes, determined by
  // the parseFn. This list begins with a lex token of openKind
  // and ends with a lex token of closeKind. Advances the parser
  // to the next lex token after the closing token.
  // if zinteger is true, len(nodes) > 0