#include "lexer.h" #include #include #include #include namespace NALPAnsi { extern ANTLR_UINT8 *SQLv1ParserTokenNames[]; } namespace NSQLTranslationV1 { namespace { class TLexer: public NSQLTranslation::ILexer { public: bool Tokenize(const TString& query, const TString& queryName, const TTokenCallback& onNextToken, NYql::TIssues& issues, size_t maxErrors) final { NYql::TIssues newIssues; NSQLTranslation::TErrorCollectorOverIssues collector(newIssues, maxErrors, queryName); NProtoAST::TLexerTokensCollector3 tokensCollector(query, (const char**)NALPAnsi::SQLv1ParserTokenNames, queryName); tokensCollector.CollectTokens(collector, onNextToken); issues.AddIssues(newIssues); return !AnyOf(newIssues.begin(), newIssues.end(), [](auto issue) { return issue.GetSeverity() == NYql::ESeverity::TSeverityIds_ESeverityId_S_ERROR; }); } }; class TFactory: public NSQLTranslation::ILexerFactory { public: THolder MakeLexer() const final { return MakeHolder(); } }; } NSQLTranslation::TLexerFactoryPtr MakeAntlr3AnsiLexerFactory() { return MakeIntrusive(); } }