Add multi-valued select expression

This commit is contained in:
Bruno BELANYI 2024-04-23 15:43:10 +00:00
parent 0816633d9a
commit d01bcf0f6d
5 changed files with 1926 additions and 1178 deletions

View file

@ -131,7 +131,12 @@ module.exports = grammar({
")",
),
select_value: ($) => seq(
select_value: ($) => choice(
$._select_value,
seq("(", commaSeparatedOptTrailing($._select_value), ")"),
),
_select_value: ($) => seq(
field("name", $.identifier),
"(",
field("arguments", optional(commaSeparatedNoTrailing($._string_literal))),
@ -145,15 +150,22 @@ module.exports = grammar({
),
select_case: ($) => seq(
field("pattern", choice(
$._string_literal,
$.boolean_literal,
alias("default", $.default),
)),
field("pattern", $.select_pattern),
":",
field("value", $._case_value)
),
select_pattern: ($) => choice(
$._select_pattern,
seq("(", commaSeparatedOptTrailing($._select_pattern), ")"),
),
_select_pattern: ($) => choice(
$._string_literal,
$.boolean_literal,
alias("default", $.default),
),
_case_value: ($) => choice(
alias("unset", $.unset),
$._expr,