diff options
author | vitya-smirnov <[email protected]> | 2025-07-15 18:32:56 +0300 |
---|---|---|
committer | vitya-smirnov <[email protected]> | 2025-07-15 18:59:24 +0300 |
commit | 9fa5e2a8b51a9c6072fc06bb8cd3ba0994e1cf7e (patch) | |
tree | 41ba4e41729cf88f32cb6ad492b25120b662a2ea /yql/essentials/sql | |
parent | 892100046de6ef219e524c90cdd95bc4e81a128a (diff) |
YQL-19616: Generate Vim SQL syntax highlighting
Introduced a Vim syntax highlighting for YQL.
This is a replacement for an existing almost
manually written conguration. It uses regexes
generated from the original ANTLR4 grammar.
Now only Default lexer mode is supported.
commit_hash:85fa094593bd9d80373754a492b46ede1a50148d
Diffstat (limited to 'yql/essentials/sql')
-rw-r--r-- | yql/essentials/sql/v1/highlight/sql_highlight.cpp | 4 | ||||
-rw-r--r-- | yql/essentials/sql/v1/highlight/ut/suite.json | 4 | ||||
-rw-r--r-- | yql/essentials/sql/v1/lexer/regex/generic.cpp | 7 |
3 files changed, 10 insertions, 5 deletions
diff --git a/yql/essentials/sql/v1/highlight/sql_highlight.cpp b/yql/essentials/sql/v1/highlight/sql_highlight.cpp index e35bb5fb736..ff5b06a77ca 100644 --- a/yql/essentials/sql/v1/highlight/sql_highlight.cpp +++ b/yql/essentials/sql/v1/highlight/sql_highlight.cpp @@ -227,16 +227,16 @@ namespace NSQLHighlight { Syntax s = MakeSyntax(grammar); THighlighting h; + h.Units.emplace_back(MakeUnit<EUnitKind::Comment>(s)); h.Units.emplace_back(MakeUnit<EUnitKind::Keyword>(s)); h.Units.emplace_back(MakeUnit<EUnitKind::Punctuation>(s)); h.Units.emplace_back(MakeUnit<EUnitKind::QuotedIdentifier>(s)); h.Units.emplace_back(MakeUnit<EUnitKind::BindParamterIdentifier>(s)); - h.Units.emplace_back(MakeUnit<EUnitKind::TypeIdentifier>(s)); h.Units.emplace_back(MakeUnit<EUnitKind::FunctionIdentifier>(s)); + h.Units.emplace_back(MakeUnit<EUnitKind::TypeIdentifier>(s)); h.Units.emplace_back(MakeUnit<EUnitKind::Identifier>(s)); h.Units.emplace_back(MakeUnit<EUnitKind::Literal>(s)); h.Units.emplace_back(MakeUnit<EUnitKind::StringLiteral>(s)); - h.Units.emplace_back(MakeUnit<EUnitKind::Comment>(s)); h.Units.emplace_back(MakeUnit<EUnitKind::Whitespace>(s)); return h; diff --git a/yql/essentials/sql/v1/highlight/ut/suite.json b/yql/essentials/sql/v1/highlight/ut/suite.json index 04e961a6f91..26fb2f3f4f4 100644 --- a/yql/essentials/sql/v1/highlight/ut/suite.json +++ b/yql/essentials/sql/v1/highlight/ut/suite.json @@ -47,11 +47,11 @@ ["SELECT id, alias from users", "KKKKKK#_#II#P#_#IIIII#_#KKKK#_#IIIII"], ["INSERT INTO users (id, alias) VALUES (12, \"tester\")", "KKKKKK#_#KKKK#_#IIIII#_#P#II#P#_#IIIII#P#_#KKKKKK#_#P#LL#P#_#SSSSSSSS#P"], ["SELECT 123467, \"HeLLo, {name}!\", (1 + (5 * 1 / 0)), MIN(identifier) FROM `local/test/space/table` JOIN test;", "KKKKKK#_#LLLLLL#P#_#SSSSSSSSSSSSSSSS#P#_#P#L#_#P#_#P#L#_#P#_#L#_#P#_#L#P#P#P#_#FFF#P#IIIIIIIIII#P#_#KKKK#_#QQQQQQQQQQQQQQQQQQQQQQQQ#_#KKKK#_#IIII#P"], - ["SELECT Bool(phone) FROM customer", "KKKKKK#_#TTTT#P#IIIII#P#_#KKKK#_#IIIIIIII"] + ["SELECT Bool(phone) FROM customer", "KKKKKK#_#FFFF#P#IIIII#P#_#KKKK#_#IIIIIIII"] ], "TypeIdentifier": [ ["Bool", "TTTT"], - ["Bool(value)", "TTTT#P#IIIII#P"] + ["Bool(value)", "FFFF#P#IIIII#P"] ], "Identifier": [ ["test", "IIII"] diff --git a/yql/essentials/sql/v1/lexer/regex/generic.cpp b/yql/essentials/sql/v1/lexer/regex/generic.cpp index 83ad5b4155d..926c50dde2c 100644 --- a/yql/essentials/sql/v1/lexer/regex/generic.cpp +++ b/yql/essentials/sql/v1/lexer/regex/generic.cpp @@ -130,7 +130,12 @@ namespace NSQLTranslationV1 { TStringBuilder body; for (const auto& pattern : patterns) { - body << "(" << pattern.Body << ")|"; + TString regex = pattern.Body; + if (pattern.Body.Contains('|')) { + regex.prepend('('); + regex.append(')'); + } + body << regex << "|"; } Y_ENSURE(body.back() == '|'); body.pop_back(); |