From 5e50fbbf45ad5d349a2f9539fc8e22216cbdcb8b Mon Sep 17 00:00:00 2001 From: Trevor Gross Date: Thu, 14 Mar 2024 02:10:36 -0500 Subject: [PATCH] Add `!shebang` to injection queries to improve match precedence --- grammar.js | 3 +- queries-flavored/helix/injections.scm | 8 +- queries-flavored/lapce/injections.scm | 10 +- queries-flavored/nvim-next/injections.scm | 10 +- queries-flavored/zed/injections.scm | 10 +- queries-src/injections.scm | 10 +- queries/just/injections.scm | 10 +- src/grammar.json | 8 +- src/node-types.json | 17 ++- src/parser.c | 128 +++++++++++----------- 10 files changed, 127 insertions(+), 87 deletions(-) diff --git a/grammar.js b/grammar.js index 6d68a99..450eb92 100644 --- a/grammar.js +++ b/grammar.js @@ -280,7 +280,7 @@ module.exports = grammar({ recipe_body: ($) => seq( $._indent, - optional(seq($.shebang, $._newline)), + optional(seq(field("shebang", $.shebang), $._newline)), repeat(choice(seq($.recipe_line, $._newline), $._newline)), $._dedent, ), @@ -293,6 +293,7 @@ module.exports = grammar({ recipe_line_prefix: (_) => choice("@-", "-@", "@", "-"), + // Any shebang. Needs a named field to apply injection queries correctly. shebang: ($) => seq("#!", choice($._shebang_with_lang, $._opaque_shebang)), // Shebang with a nested `language` token that we can extract diff --git a/queries-flavored/helix/injections.scm b/queries-flavored/helix/injections.scm index b19b61b..0a107fb 100644 --- a/queries-flavored/helix/injections.scm +++ b/queries-flavored/helix/injections.scm @@ -18,6 +18,7 @@ ; Default everything to be bash (recipe_body + !shebang (#set! injection.language "bash") (#set! injection.include-children)) @injection.content @@ -50,7 +51,9 @@ (#set! injection.language "powershell")) [ (recipe - (recipe_body (#set! injection.include-children)) @injection.content) + (recipe_body + !shebang + (#set! injection.include-children)) @injection.content) (assignment (expression @@ -65,7 +68,8 @@ [ (recipe (recipe_body - (#set! injection.include-children)) @injection.content) + !shebang + (#set! injection.include-children)) @injection.content) (assignment (expression diff --git a/queries-flavored/lapce/injections.scm b/queries-flavored/lapce/injections.scm index 73084bc..77995b1 100644 --- a/queries-flavored/lapce/injections.scm +++ b/queries-flavored/lapce/injections.scm @@ -18,6 +18,7 @@ ; Default everything to be bash (recipe_body + !shebang (#set! injection.language "bash") (#set! injection.include-children)) @injection.content @@ -50,7 +51,9 @@ (#set! injection.language "powershell")) [ (recipe - (recipe_body (#set! injection.include-children)) @injection.content) + (recipe_body + !shebang + (#set! injection.include-children)) @injection.content) (assignment (expression @@ -65,7 +68,8 @@ [ (recipe (recipe_body - (#set! injection.include-children)) @injection.content) + !shebang + (#set! injection.include-children)) @injection.content) (assignment (expression @@ -79,7 +83,7 @@ ; Set highlighting for recipes that specify a language, using the exact name by default (recipe_body ; (shebang ; - (language) @injection.language) ; + (language) @injection.language) (#not-any-of? @injection.language "python3" "nodejs" "node") (#set! injection.include-children)) @injection.content diff --git a/queries-flavored/nvim-next/injections.scm b/queries-flavored/nvim-next/injections.scm index 79315fb..60ab8b8 100644 --- a/queries-flavored/nvim-next/injections.scm +++ b/queries-flavored/nvim-next/injections.scm @@ -16,6 +16,7 @@ ; Default everything to be bash (recipe_body + !shebang (#set! injection.language "bash") (#set! injection.include-children)) @injection.content @@ -48,7 +49,9 @@ (#set! injection.language "powershell")) [ (recipe - (recipe_body (#set! injection.include-children)) @injection.content) + (recipe_body + !shebang + (#set! injection.include-children)) @injection.content) (assignment (expression @@ -63,7 +66,8 @@ [ (recipe (recipe_body - (#set! injection.include-children)) @injection.content) + !shebang + (#set! injection.include-children)) @injection.content) (assignment (expression @@ -77,7 +81,7 @@ ; Set highlighting for recipes that specify a language, using the exact name by default (recipe_body ; (shebang ; - (language) @injection.language) ; + (language) @injection.language) (#not-any-of? @injection.language "python3" "nodejs" "node") (#set! injection.include-children)) @injection.content diff --git a/queries-flavored/zed/injections.scm b/queries-flavored/zed/injections.scm index 73084bc..77995b1 100644 --- a/queries-flavored/zed/injections.scm +++ b/queries-flavored/zed/injections.scm @@ -18,6 +18,7 @@ ; Default everything to be bash (recipe_body + !shebang (#set! injection.language "bash") (#set! injection.include-children)) @injection.content @@ -50,7 +51,9 @@ (#set! injection.language "powershell")) [ (recipe - (recipe_body (#set! injection.include-children)) @injection.content) + (recipe_body + !shebang + (#set! injection.include-children)) @injection.content) (assignment (expression @@ -65,7 +68,8 @@ [ (recipe (recipe_body - (#set! injection.include-children)) @injection.content) + !shebang + (#set! injection.include-children)) @injection.content) (assignment (expression @@ -79,7 +83,7 @@ ; Set highlighting for recipes that specify a language, using the exact name by default (recipe_body ; (shebang ; - (language) @injection.language) ; + (language) @injection.language) (#not-any-of? @injection.language "python3" "nodejs" "node") (#set! injection.include-children)) @injection.content diff --git a/queries-src/injections.scm b/queries-src/injections.scm index d78946e..238e3bd 100644 --- a/queries-src/injections.scm +++ b/queries-src/injections.scm @@ -16,6 +16,7 @@ ; Default everything to be bash (recipe_body + !shebang (#set! injection.language "bash") (#set! injection.include-children)) @injection.content @@ -48,7 +49,9 @@ (#set! injection.language "powershell")) [ (recipe - (recipe_body (#set! injection.include-children)) @injection.content) + (recipe_body + !shebang + (#set! injection.include-children)) @injection.content) (assignment (expression @@ -63,7 +66,8 @@ [ (recipe (recipe_body - (#set! injection.include-children)) @injection.content) + !shebang + (#set! injection.include-children)) @injection.content) (assignment (expression @@ -77,7 +81,7 @@ ; Set highlighting for recipes that specify a language, using the exact name by default ; SKIP-HELIX (recipe_body ; ; SKIP-HELIX (shebang ; ; SKIP-HELIX - (language) @injection.language) ; ; SKIP-HELIX + (language) @injection.language) ; SKIP-HELIX (#not-any-of? @injection.language "python3" "nodejs" "node") ; SKIP-HELIX (#set! injection.include-children)) @injection.content ; SKIP-HELIX ; SKIP-HELIX diff --git a/queries/just/injections.scm b/queries/just/injections.scm index 79315fb..60ab8b8 100644 --- a/queries/just/injections.scm +++ b/queries/just/injections.scm @@ -16,6 +16,7 @@ ; Default everything to be bash (recipe_body + !shebang (#set! injection.language "bash") (#set! injection.include-children)) @injection.content @@ -48,7 +49,9 @@ (#set! injection.language "powershell")) [ (recipe - (recipe_body (#set! injection.include-children)) @injection.content) + (recipe_body + !shebang + (#set! injection.include-children)) @injection.content) (assignment (expression @@ -63,7 +66,8 @@ [ (recipe (recipe_body - (#set! injection.include-children)) @injection.content) + !shebang + (#set! injection.include-children)) @injection.content) (assignment (expression @@ -77,7 +81,7 @@ ; Set highlighting for recipes that specify a language, using the exact name by default (recipe_body ; (shebang ; - (language) @injection.language) ; + (language) @injection.language) (#not-any-of? @injection.language "python3" "nodejs" "node") (#set! injection.include-children)) @injection.content diff --git a/src/grammar.json b/src/grammar.json index 599aed3..c2a9ffb 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -1176,8 +1176,12 @@ "type": "SEQ", "members": [ { - "type": "SYMBOL", - "name": "shebang" + "type": "FIELD", + "name": "shebang", + "content": { + "type": "SYMBOL", + "name": "shebang" + } }, { "type": "SYMBOL", diff --git a/src/node-types.json b/src/node-types.json index 78b8d7c..91037a6 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -474,7 +474,18 @@ { "type": "recipe_body", "named": true, - "fields": {}, + "fields": { + "shebang": { + "multiple": false, + "required": false, + "types": [ + { + "type": "shebang", + "named": true + } + ] + } + }, "children": { "multiple": true, "required": false, @@ -482,10 +493,6 @@ { "type": "recipe_line", "named": true - }, - { - "type": "shebang", - "named": true } ] } diff --git a/src/parser.c b/src/parser.c index d8d3242..37be837 100644 --- a/src/parser.c +++ b/src/parser.c @@ -12,9 +12,9 @@ #define ALIAS_COUNT 2 #define TOKEN_COUNT 59 #define EXTERNAL_TOKEN_COUNT 5 -#define FIELD_COUNT 12 +#define FIELD_COUNT 13 #define MAX_ALIAS_SEQUENCE_LENGTH 9 -#define PRODUCTION_ID_COUNT 37 +#define PRODUCTION_ID_COUNT 38 enum ts_symbol_identifiers { sym_identifier = 1, @@ -970,6 +970,7 @@ enum ts_field_identifiers { field_left = 10, field_name = 11, field_right = 12, + field_shebang = 13, }; static const char *const ts_field_names[] = { @@ -986,6 +987,7 @@ static const char *const ts_field_names[] = { [field_left] = "left", [field_name] = "name", [field_right] = "right", + [field_shebang] = "shebang", }; static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { @@ -998,13 +1000,14 @@ static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { [16] = {.index = 20, .length = 4}, [18] = {.index = 24, .length = 1}, [19] = {.index = 25, .length = 3}, [20] = {.index = 28, .length = 3}, [21] = {.index = 31, .length = 2}, [22] = {.index = 33, .length = 1}, - [23] = {.index = 34, .length = 3}, [24] = {.index = 37, .length = 2}, - [25] = {.index = 39, .length = 5}, [26] = {.index = 44, .length = 1}, - [27] = {.index = 45, .length = 1}, [28] = {.index = 46, .length = 4}, - [29] = {.index = 50, .length = 2}, [30] = {.index = 52, .length = 4}, - [31] = {.index = 56, .length = 5}, [32] = {.index = 61, .length = 6}, - [33] = {.index = 67, .length = 7}, [34] = {.index = 74, .length = 6}, - [35] = {.index = 80, .length = 8}, [36] = {.index = 88, .length = 1}, + [23] = {.index = 34, .length = 1}, [24] = {.index = 35, .length = 3}, + [25] = {.index = 38, .length = 2}, [26] = {.index = 40, .length = 5}, + [27] = {.index = 45, .length = 1}, [28] = {.index = 46, .length = 1}, + [29] = {.index = 47, .length = 4}, [30] = {.index = 51, .length = 2}, + [31] = {.index = 53, .length = 4}, [32] = {.index = 57, .length = 5}, + [33] = {.index = 62, .length = 6}, [34] = {.index = 68, .length = 7}, + [35] = {.index = 75, .length = 6}, [36] = {.index = 81, .length = 8}, + [37] = {.index = 89, .length = 1}, }; static const TSFieldMapEntry ts_field_map_entries[] = { @@ -1041,54 +1044,55 @@ static const TSFieldMapEntry ts_field_map_entries[] = { {field_consequence, 2}, [31] = {field_arguments, 2}, {field_name, 0}, - [33] = {field_element, 1}, - [34] = {field_element, 4}, + [33] = {field_shebang, 1}, + [34] = {field_element, 1}, + [35] = {field_element, 4}, {field_right, 3}, {field_right, 5}, - [37] = {field_element, 0, .inherited = true}, + [38] = {field_element, 0, .inherited = true}, {field_element, 1, .inherited = true}, - [39] = {field_array, 3}, + [40] = {field_array, 3}, {field_array, 5}, {field_element, 4}, {field_left, 1}, {field_right, 2}, - [44] = {field_body, 1}, - [45] = {field_body, 1, .inherited = true}, - [46] = {field_alternative, 3, .inherited = true}, + [45] = {field_body, 1}, + [46] = {field_body, 1, .inherited = true}, + [47] = {field_alternative, 3, .inherited = true}, {field_alternative, 4}, {field_body, 2, .inherited = true}, {field_consequence, 2}, - [50] = {field_alternative, 0, .inherited = true}, + [51] = {field_alternative, 0, .inherited = true}, {field_alternative, 1, .inherited = true}, - [52] = {field_element, 4}, + [53] = {field_element, 4}, {field_element, 5}, {field_right, 3}, {field_right, 6}, - [56] = {field_content, 5}, + [57] = {field_content, 5}, {field_element, 4}, {field_element, 5, .inherited = true}, {field_right, 3}, {field_right, 6}, - [61] = {field_array, 3}, + [62] = {field_array, 3}, {field_array, 6}, {field_element, 4}, {field_element, 5}, {field_left, 1}, {field_right, 2}, - [67] = {field_array, 3}, + [68] = {field_array, 3}, {field_array, 6}, {field_content, 5}, {field_element, 4}, {field_element, 5, .inherited = true}, {field_left, 1}, {field_right, 2}, - [74] = {field_content, 5}, + [75] = {field_content, 5}, {field_element, 4}, {field_element, 5, .inherited = true}, {field_element, 6}, {field_right, 3}, {field_right, 7}, - [80] = {field_array, 3}, + [81] = {field_array, 3}, {field_array, 7}, {field_content, 5}, {field_element, 4}, @@ -1096,7 +1100,7 @@ static const TSFieldMapEntry ts_field_map_entries[] = { {field_element, 6}, {field_left, 1}, {field_right, 2}, - [88] = {field_body, 3, .inherited = true}, + [89] = {field_body, 3, .inherited = true}, }; static const TSSymbol @@ -9815,11 +9819,11 @@ static const TSParseActionEntry ts_parse_actions[] = { [51] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 4, .production_id = 21), [53] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(aux_sym_if_expression_repeat1, 2, .production_id = 29), + REDUCE(aux_sym_if_expression_repeat1, 2, .production_id = 30), [55] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(aux_sym_if_expression_repeat1, 2, .production_id = 29), + REDUCE(aux_sym_if_expression_repeat1, 2, .production_id = 30), [57] = {.entry = {.count = 2, .reusable = false}}, - REDUCE(aux_sym_if_expression_repeat1, 2, .production_id = 29), + REDUCE(aux_sym_if_expression_repeat1, 2, .production_id = 30), SHIFT_REPEAT(345), [60] = {.entry = {.count = 1, .reusable = false}}, SHIFT(77), @@ -10005,21 +10009,21 @@ static const TSParseActionEntry ts_parse_actions[] = { [241] = {.entry = {.count = 1, .reusable = true}}, SHIFT(258), [243] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(sym__braced_expr, 3, .production_id = 26), + REDUCE(sym__braced_expr, 3, .production_id = 27), [245] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(sym__braced_expr, 3, .production_id = 26), + REDUCE(sym__braced_expr, 3, .production_id = 27), [247] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(sym_else_if_clause, 4, .production_id = 36), + REDUCE(sym_else_if_clause, 4, .production_id = 37), [249] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(sym_else_if_clause, 4, .production_id = 36), + REDUCE(sym_else_if_clause, 4, .production_id = 37), [251] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_expression, 4, .production_id = 19), [253] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_expression, 4, .production_id = 19), [255] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(sym_else_clause, 2, .production_id = 27), + REDUCE(sym_else_clause, 2, .production_id = 28), [257] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(sym_else_clause, 2, .production_id = 27), + REDUCE(sym_else_clause, 2, .production_id = 28), [259] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expression_inner, 3, .production_id = 13), [261] = {.entry = {.count = 1, .reusable = true}}, @@ -10029,9 +10033,9 @@ static const TSParseActionEntry ts_parse_actions[] = { [265] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression_inner, 1), [267] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(sym_if_expression, 5, .production_id = 28), + REDUCE(sym_if_expression, 5, .production_id = 29), [269] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(sym_if_expression, 5, .production_id = 28), + REDUCE(sym_if_expression, 5, .production_id = 29), [271] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), [273] = {.entry = {.count = 1, .reusable = false}}, @@ -10116,13 +10120,13 @@ static const TSParseActionEntry ts_parse_actions[] = { [352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(296), [354] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(sym_recipe_body, 5), + REDUCE(sym_recipe_body, 5, .production_id = 22), [356] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(sym_recipe_body, 5), + REDUCE(sym_recipe_body, 5, .production_id = 22), [358] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(sym_setting, 7, .production_id = 23), + REDUCE(sym_setting, 7, .production_id = 24), [360] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(sym_setting, 7, .production_id = 23), + REDUCE(sym_setting, 7, .production_id = 24), [362] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_setting, 6, .production_id = 16), [364] = {.entry = {.count = 1, .reusable = false}}, @@ -10178,37 +10182,37 @@ static const TSParseActionEntry ts_parse_actions[] = { [414] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_setting, 3, .production_id = 4), [416] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(sym_setting, 9, .production_id = 35), + REDUCE(sym_setting, 9, .production_id = 36), [418] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(sym_setting, 9, .production_id = 35), + REDUCE(sym_setting, 9, .production_id = 36), [420] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, .production_id = 8), [422] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, .production_id = 8), [424] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(sym_setting, 9, .production_id = 34), + REDUCE(sym_setting, 9, .production_id = 35), [426] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(sym_setting, 9, .production_id = 34), + REDUCE(sym_setting, 9, .production_id = 35), [428] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(sym_setting, 8, .production_id = 33), + REDUCE(sym_setting, 8, .production_id = 34), [430] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(sym_setting, 8, .production_id = 33), + REDUCE(sym_setting, 8, .production_id = 34), [432] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(sym_setting, 8, .production_id = 32), + REDUCE(sym_setting, 8, .production_id = 33), [434] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(sym_setting, 8, .production_id = 32), + REDUCE(sym_setting, 8, .production_id = 33), [436] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(sym_setting, 8, .production_id = 31), + REDUCE(sym_setting, 8, .production_id = 32), [438] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(sym_setting, 8, .production_id = 31), + REDUCE(sym_setting, 8, .production_id = 32), [440] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(sym_setting, 8, .production_id = 30), + REDUCE(sym_setting, 8, .production_id = 31), [442] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(sym_setting, 8, .production_id = 30), + REDUCE(sym_setting, 8, .production_id = 31), [444] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(sym_recipe_body, 4), + REDUCE(sym_recipe_body, 4, .production_id = 22), [446] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(sym_recipe_body, 4), + REDUCE(sym_recipe_body, 4, .production_id = 22), [448] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123), [450] = {.entry = {.count = 1, .reusable = true}}, @@ -10220,9 +10224,9 @@ static const TSParseActionEntry ts_parse_actions[] = { [456] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_import, 3), [458] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(sym_setting, 7, .production_id = 25), + REDUCE(sym_setting, 7, .production_id = 26), [460] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(sym_setting, 7, .production_id = 25), + REDUCE(sym_setting, 7, .production_id = 26), [462] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), [464] = {.entry = {.count = 1, .reusable = true}}, @@ -10267,12 +10271,12 @@ static const TSParseActionEntry ts_parse_actions[] = { [503] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_dependencies, 1), [505] = {.entry = {.count = 2, .reusable = true}}, - REDUCE(aux_sym_setting_repeat1, 2, .production_id = 24), + REDUCE(aux_sym_setting_repeat1, 2, .production_id = 25), SHIFT_REPEAT(161), [508] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(aux_sym_setting_repeat1, 2, .production_id = 24), + REDUCE(aux_sym_setting_repeat1, 2, .production_id = 25), [510] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(aux_sym_setting_repeat1, 2, .production_id = 24), + REDUCE(aux_sym_setting_repeat1, 2, .production_id = 25), [512] = {.entry = {.count = 1, .reusable = false}}, SHIFT(156), [514] = {.entry = {.count = 1, .reusable = false}}, @@ -10310,19 +10314,19 @@ static const TSParseActionEntry ts_parse_actions[] = { [546] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), [548] = {.entry = {.count = 2, .reusable = true}}, - REDUCE(aux_sym_if_expression_repeat1, 2, .production_id = 29), + REDUCE(aux_sym_if_expression_repeat1, 2, .production_id = 30), SHIFT_REPEAT(351), [551] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parameter, 1, .production_id = 2), [553] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), [555] = {.entry = {.count = 2, .reusable = true}}, - REDUCE(aux_sym_if_expression_repeat1, 2, .production_id = 29), + REDUCE(aux_sym_if_expression_repeat1, 2, .production_id = 30), SHIFT_REPEAT(298), [558] = {.entry = {.count = 1, .reusable = true}}, - REDUCE(aux_sym_setting_repeat1, 2, .production_id = 22), + REDUCE(aux_sym_setting_repeat1, 2, .production_id = 23), [560] = {.entry = {.count = 1, .reusable = false}}, - REDUCE(aux_sym_setting_repeat1, 2, .production_id = 22), + REDUCE(aux_sym_setting_repeat1, 2, .production_id = 23), [562] = {.entry = {.count = 1, .reusable = false}}, SHIFT(246), [564] = {.entry = {.count = 1, .reusable = true}},