I'm sorry but ..
ANTLRInputStream * p_input = new ANTLRInputStream(s);
SqlBaseLexer * p_lexer = new SqlBaseLexer(p_input);
CommonTokenStream * p_tokens = new CommonTokenStream(p_lexer);
p_tokens->fill();
for(Token *token : p_tokens->getTokens()){
std::cout << token->toString() << std::endl;
}
SqlBaseParser* p_parser = new SqlBaseParser(p_tokens);
p_parser->setBuildParseTree(true);
auto tree = p_parser->singleStatement();
puts("s0");
puts(parseTree2Str(tree).c_str());
delete p_lexer;
puts("s2");
puts(parseTree2Str(tree).c_str());
delete p_parser;
puts("s4");
puts(parseTree2Str(tree).c_str());
delete p_tokens;
puts("s3");
puts(parseTree2Str(tree).c_str());
delete p_input;
puts("s1");
puts(parseTree2Str(tree).c_str());
return tree;