#include "lexer.h" #include #include #include #include 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::TLexerTokensCollector4 tokensCollector(query, 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 MakeAntlr4LexerFactory() { return MakeIntrusive(); } }