pgLab/pglablib/sqlparser/Parser.cpp

25 lines
605 B
C++

#include "Parser.h"
#include "antlr4-runtime.h"
Parser::Parser(const std::string &input_string)
: Parser(std::make_unique<antlr4::ANTLRInputStream>(input_string))
{}
Parser::Parser(std::unique_ptr<antlr4::CharStream> stream)
: InputStream(std::move(stream))
, CaseFilter(InputStream.get(), true)
, Lexer(&CaseFilter)
, TokenStream(&Lexer)
, AParser(&TokenStream)
{
AParser.removeErrorListeners();
AParser.addErrorListener(&Errors);
}
std::unique_ptr<sqlast::StatementList> Parser::Parse()
{
auto context = AParser.main();
return std::move(context->program);
}