code: func (parser *Parser) Parse(sql, charset, collation string) ([]ast.StmtNode, error) {
  	if charset == "" {
  		charset = mysql.DefaultCharset
  	}
  	if collation == "" {
  		collation = mysql.DefaultCollationName
  	}
  	parser.charset = charset
  	parser.collation = collation
  	parser.src = sql
  	parser.result = parser.result[:0]
  
  	var l yyLexer
  	parser.lexer.reset(sql)
  	l = &parser.lexer
  	yyParse(l, parser)
  
  	if len(l.Errors()) != 0 {
  		return nil, errors.Trace(l.Errors()[0])
  	}
  	for _, stmt := range parser.result {
  		ast.SetFlag(stmt)
  	}
  	return parser.result, nil
  }
docs: // Parse parses a query string to raw ast.StmtNode.
  // If charset or collation is "", default charset and collation will be used.