lexer.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "lexer.h"
  2. #include <yql/essentials/public/issue/yql_issue.h>
  3. #include <util/string/builder.h>
  4. namespace NSQLTranslation {
  5. namespace {
  6. class TDummyLexer : public ILexer {
  7. public:
  8. TDummyLexer(const TString& name)
  9. : Name_(name)
  10. {}
  11. bool Tokenize(const TString& query, const TString& queryName, const TTokenCallback& onNextToken, NYql::TIssues& issues, size_t maxErrors) final {
  12. Y_UNUSED(query);
  13. Y_UNUSED(queryName);
  14. Y_UNUSED(onNextToken);
  15. Y_UNUSED(maxErrors);
  16. issues.AddIssue(NYql::TIssue({}, TStringBuilder() << "Lexer " << Name_ << " is not supported"));
  17. return false;
  18. }
  19. private:
  20. const TString Name_;
  21. };
  22. class TDummyFactory: public ILexerFactory {
  23. public:
  24. TDummyFactory(const TString& name)
  25. : Name_(name)
  26. {}
  27. ILexer::TPtr MakeLexer() const final {
  28. return MakeHolder<TDummyLexer>(Name_);
  29. }
  30. private:
  31. const TString Name_;
  32. };
  33. }
  34. TLexerFactoryPtr MakeDummyLexerFactory(const TString& name) {
  35. return MakeIntrusive<TDummyFactory>(name);
  36. }
  37. }