lexer.h 982 B

123456789101112131415161718192021222324252627282930
  1. #pragma once
  2. #include <yql/essentials/parser/lexer_common/lexer.h>
  3. namespace NSQLTranslationV1 {
  4. struct TLexers {
  5. NSQLTranslation::TLexerFactoryPtr Antlr3;
  6. NSQLTranslation::TLexerFactoryPtr Antlr3Ansi;
  7. NSQLTranslation::TLexerFactoryPtr Antlr4;
  8. NSQLTranslation::TLexerFactoryPtr Antlr4Ansi;
  9. };
  10. //FIXME remove
  11. TLexers MakeAllLexers();
  12. //FIXME remove
  13. NSQLTranslation::ILexer::TPtr MakeLexer(bool ansi, bool antlr4);
  14. NSQLTranslation::ILexer::TPtr MakeLexer(const TLexers& lexers, bool ansi, bool antlr4);
  15. // "Probably" because YQL keyword can be an identifier
  16. // depending on a query context. For example
  17. // in SELECT * FROM group - group is an identifier, but
  18. // in SELECT * FROM ... GROUP BY ... - group is a keyword.
  19. bool IsProbablyKeyword(const NSQLTranslation::TParsedToken& token);
  20. bool SplitQueryToStatements(const TString& query, NSQLTranslation::ILexer::TPtr& lexer,
  21. TVector<TString>& statements, NYql::TIssues& issues, const TString& file = "");
  22. }