summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/highlight/sql_highlight.cpp
diff options
context:
space:
mode:
authorvitya-smirnov <[email protected]>2025-10-09 11:47:11 +0300
committervitya-smirnov <[email protected]>2025-10-09 12:29:52 +0300
commit724570b69c83f07a4402c1e5de524d3a9724374f (patch)
tree6dbfccadcabc3c1e2b7565e39aa3107d5eaaebe8 /yql/essentials/sql/v1/highlight/sql_highlight.cpp
parent03e69055c041c7bd87765d093463ab1941dc30db (diff)
YQL-20496: Improve YQL highlighting
commit_hash:edf72fd8386c41f858f677152612bd58680506a6
Diffstat (limited to 'yql/essentials/sql/v1/highlight/sql_highlight.cpp')
-rw-r--r--yql/essentials/sql/v1/highlight/sql_highlight.cpp34
1 files changed, 32 insertions, 2 deletions
diff --git a/yql/essentials/sql/v1/highlight/sql_highlight.cpp b/yql/essentials/sql/v1/highlight/sql_highlight.cpp
index 72dd095ec3f..3f17934cef4 100644
--- a/yql/essentials/sql/v1/highlight/sql_highlight.cpp
+++ b/yql/essentials/sql/v1/highlight/sql_highlight.cpp
@@ -86,7 +86,7 @@ TUnit MakeUnit<EUnitKind::QuotedIdentifier>(Syntax& s) {
.Kind = EUnitKind::QuotedIdentifier,
.Patterns = {
{s.Get("ID_QUOTED")},
- },
+ {s.Concat({"COMMAT", "ID_PLAIN"})}},
.IsPlain = false,
};
}
@@ -103,6 +103,30 @@ TUnit MakeUnit<EUnitKind::BindParameterIdentifier>(Syntax& s) {
}
template <>
+TUnit MakeUnit<EUnitKind::OptionIdentifier>(Syntax& s) {
+ return {
+ .Kind = EUnitKind::OptionIdentifier,
+ .Patterns = {
+ {
+ .Body = TStringBuilder()
+ << s.Get("ID_PLAIN") << "(\\." << s.Get("ID_PLAIN") << ")?",
+ .Before = TStringBuilder() << "PRAGMA" << s.Get("WS"),
+ .IsCaseInsensitive = true,
+ },
+ {
+ .Body = s.Get("ID_PLAIN"),
+ .Before = TStringBuilder() << "WITH" << s.Get("WS"),
+ .IsCaseInsensitive = true,
+ },
+ {
+ .Body = s.Get("ID_PLAIN"),
+ .After = " ?" + s.Get("EQUALS"),
+ .IsCaseInsensitive = true,
+ }},
+ };
+}
+
+template <>
TUnit MakeUnit<EUnitKind::TypeIdentifier>(Syntax& s) {
TVector<NSQLTranslationV1::TRegexPattern> types;
NJson::TJsonValue json = NJson::ReadJsonFastTree(NResource::Find("types.json"));
@@ -148,6 +172,8 @@ TUnit MakeUnit<EUnitKind::Literal>(Syntax& s) {
{s.Get("REAL")},
{s.Get("INTEGER_VALUE")},
{s.Get("DIGITS")},
+ {.Body = "TRUE", .IsCaseInsensitive = true},
+ {.Body = "FALSE", .IsCaseInsensitive = true},
},
};
}
@@ -218,13 +244,14 @@ THighlighting MakeHighlighting(const NSQLReflect::TLexerGrammar& grammar) {
THighlighting h;
h.Units.emplace_back(MakeUnit<EUnitKind::Comment>(s));
h.Units.emplace_back(MakeUnit<EUnitKind::Punctuation>(s));
+ h.Units.emplace_back(MakeUnit<EUnitKind::OptionIdentifier>(s));
h.Units.emplace_back(MakeUnit<EUnitKind::FunctionIdentifier>(s));
h.Units.emplace_back(MakeUnit<EUnitKind::TypeIdentifier>(s));
+ h.Units.emplace_back(MakeUnit<EUnitKind::Literal>(s));
h.Units.emplace_back(MakeUnit<EUnitKind::Keyword>(s));
h.Units.emplace_back(MakeUnit<EUnitKind::QuotedIdentifier>(s));
h.Units.emplace_back(MakeUnit<EUnitKind::BindParameterIdentifier>(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::Whitespace>(s));
@@ -248,6 +275,9 @@ void Out<NSQLHighlight::EUnitKind>(IOutputStream& out, NSQLHighlight::EUnitKind
case NSQLHighlight::EUnitKind::BindParameterIdentifier:
out << "bind-parameter-identifier";
break;
+ case NSQLHighlight::EUnitKind::OptionIdentifier:
+ out << "option-identifier";
+ break;
case NSQLHighlight::EUnitKind::TypeIdentifier:
out << "type-identifier";
break;