translator.h 1.3 KB

123456789101112131415161718192021222324252627282930
  1. #pragma once
  2. #include "translation_settings.h"
  3. #include <yql/essentials/parser/lexer_common/lexer.h>
  4. #include <yql/essentials/parser/lexer_common/hints.h>
  5. #include <yql/essentials/public/issue/yql_warning.h>
  6. #include <yql/essentials/ast/yql_ast.h>
  7. namespace NSQLTranslation {
  8. class ITranslator : public TThrRefBase {
  9. public:
  10. virtual ~ITranslator() = default;
  11. virtual ILexer::TPtr MakeLexer(const TTranslationSettings& settings) = 0;
  12. virtual NYql::TAstParseResult TextToAst(const TString& query, const TTranslationSettings& settings,
  13. NYql::TWarningRules* warningRules, NYql::TStmtParseInfo* stmtParseInfo) = 0;
  14. virtual google::protobuf::Message* TextToMessage(const TString& query, const TString& queryName,
  15. NYql::TIssues& issues, size_t maxErrors, const TTranslationSettings& settings) = 0;
  16. virtual NYql::TAstParseResult TextAndMessageToAst(const TString& query, const google::protobuf::Message& protoAst,
  17. const TSQLHints& hints, const TTranslationSettings& settings) = 0;
  18. virtual TVector<NYql::TAstParseResult> TextToManyAst(const TString& query, const TTranslationSettings& settings,
  19. NYql::TWarningRules* warningRules, TVector<NYql::TStmtParseInfo>* stmtParseInfo) = 0;
  20. };
  21. using TTranslatorPtr = TIntrusivePtr<ITranslator>;
  22. TTranslatorPtr MakeDummyTranslator(const TString& name);
  23. } // namespace NSQLTranslation