3
3
#include < yql/essentials/sql/v1/lexer/antlr4_ansi/lexer.h>
4
4
#include < yql/essentials/sql/v1/proto_parser/antlr4/proto_parser.h>
5
5
#include < yql/essentials/sql/v1/proto_parser/antlr4_ansi/proto_parser.h>
6
+ #include < yql/essentials/public/langver/yql_langver.h>
7
+ #include < yql/essentials/core/langver/yql_core_langver.h>
6
8
7
9
#include < library/cpp/getopt/last_getopt.h>
8
10
#include < google/protobuf/arena.h>
@@ -15,15 +17,28 @@ int RunFormat(int argc, char* argv[]) {
15
17
TString outFileName;
16
18
TString inFileName;
17
19
TString queryString;
20
+ NYql::TLangVersion langver = NYql::GetMaxReleasedLangVersion ();
18
21
19
22
opts.AddLongOption (' o' , " output" , " save output to file" ).RequiredArgument (" file" ).StoreResult (&outFileName);
20
23
opts.AddLongOption (' i' , " input" , " input file" ).RequiredArgument (" input" ).StoreResult (&inFileName);
21
24
opts.AddLongOption (' p' , " print-query" , " print given query before parsing" ).NoArgument ();
22
25
opts.AddLongOption (' f' , " obfuscate" , " obfuscate query" ).NoArgument ();
23
26
opts.AddLongOption (" ansi-lexer" , " use ansi lexer" ).NoArgument ();
27
+ opts.AddLongOption (" langver" , " Set current language version" ).Optional ().RequiredArgument (" VER" )
28
+ .Handler1T <TString>([&](const TString& str) {
29
+ if (!NYql::ParseLangVersion (str, langver)) {
30
+ throw yexception () << " Failed to parse language version: " << str;
31
+ }
32
+ });
33
+
34
+ opts.SetFreeArgsNum (0 );
24
35
opts.AddHelpOption ();
25
36
26
37
NLastGetopt::TOptsParseResult res (&opts, argc, argv);
38
+ TMaybe<NYql::TIssue> verIssue;
39
+ if (!NYql::CheckLangVersion (langver, NYql::GetMaxReleasedLangVersion (), verIssue)) {
40
+ throw yexception () << verIssue->ToString ();
41
+ }
27
42
28
43
THolder<TFixedBufferFileOutput> outFile;
29
44
if (!outFileName.empty ()) {
@@ -45,6 +60,7 @@ int RunFormat(int argc, char* argv[]) {
45
60
}
46
61
google::protobuf::Arena arena;
47
62
NSQLTranslation::TTranslationSettings settings;
63
+ settings.LangVer = langver;
48
64
settings.Arena = &arena;
49
65
settings.AnsiLexer = res.Has (" ansi-lexer" );
50
66
NSQLTranslationV1::TLexers lexers;
@@ -72,7 +88,7 @@ int main(int argc, char* argv[]) {
72
88
try {
73
89
return RunFormat (argc, argv);
74
90
} catch (const yexception& e) {
75
- Cerr << " Caught exception:" << e.what () << Endl;
91
+ Cerr << " Caught exception: " << e.what () << Endl;
76
92
return 1 ;
77
93
} catch (...) {
78
94
Cerr << CurrentExceptionMessage () << Endl;
0 commit comments