1
0
Fork 0
mirror of https://github.com/pnx/tree-sitter-dotenv synced 2026-08-27 16:28:12 +02:00

feat: make export keyword anonymous.

"export" was a named node despite always having fixed spelling, with
no variation to expose to queries. Anonymous string literals are
already fully queryable ("export" @keyword), so the named production
added a redundant node in the tree for no benefit.

Keeps the alias("export", $.identifier) in the key field, since that
usage is a genuine reclassification (export as an identifier, not the
keyword) and still needs to be named.

Updated corpus tests to use :cst format where "export" and "="
presence needs to be asserted explicitly.
This commit is contained in:
Henrik Hautakoski 2026-07-16 10:47:32 +02:00
parent 65e3328e01
commit 0cc23a517e
6 changed files with 236 additions and 250 deletions

23
src/grammar.json generated
View file

@ -38,8 +38,8 @@
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "export"
"type": "STRING",
"value": "export"
},
"named": true,
"value": "identifier"
@ -80,8 +80,8 @@
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "export"
"type": "STRING",
"value": "export"
},
{
"type": "FIELD",
@ -96,8 +96,8 @@
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "export"
"type": "STRING",
"value": "export"
},
"named": true,
"value": "identifier"
@ -138,17 +138,6 @@
"type": "PATTERN",
"value": "\\#[^\\n]*"
},
"export": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "STRING",
"value": "export"
}
}
},
"identifier": {
"type": "PATTERN",
"value": "[A-Za-z_][A-Za-z0-9_]*"

12
src/node-types.json generated
View file

@ -39,16 +39,6 @@
}
]
}
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "export",
"named": true
}
]
}
},
{
@ -173,7 +163,7 @@
},
{
"type": "export",
"named": true
"named": false
},
{
"type": "float",

368
src/parser.c generated
View file

@ -21,9 +21,9 @@
enum ts_symbol_identifiers {
sym_identifier = 1,
anon_sym_EQ = 2,
sym_comment = 3,
sym_export = 4,
anon_sym_export = 2,
anon_sym_EQ = 3,
sym_comment = 4,
anon_sym_DOLLAR = 5,
anon_sym_LBRACE = 6,
anon_sym_RBRACE = 7,
@ -53,9 +53,9 @@ enum ts_symbol_identifiers {
static const char * const ts_symbol_names[] = {
[ts_builtin_sym_end] = "end",
[sym_identifier] = "identifier",
[anon_sym_export] = "export",
[anon_sym_EQ] = "=",
[sym_comment] = "comment",
[sym_export] = "export",
[anon_sym_DOLLAR] = "$",
[anon_sym_LBRACE] = "{",
[anon_sym_RBRACE] = "}",
@ -85,9 +85,9 @@ static const char * const ts_symbol_names[] = {
static const TSSymbol ts_symbol_map[] = {
[ts_builtin_sym_end] = ts_builtin_sym_end,
[sym_identifier] = sym_identifier,
[anon_sym_export] = anon_sym_export,
[anon_sym_EQ] = anon_sym_EQ,
[sym_comment] = sym_comment,
[sym_export] = sym_export,
[anon_sym_DOLLAR] = anon_sym_DOLLAR,
[anon_sym_LBRACE] = anon_sym_LBRACE,
[anon_sym_RBRACE] = anon_sym_RBRACE,
@ -123,6 +123,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
.visible = true,
.named = true,
},
[anon_sym_export] = {
.visible = true,
.named = false,
},
[anon_sym_EQ] = {
.visible = true,
.named = false,
@ -131,10 +135,6 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
.visible = true,
.named = true,
},
[sym_export] = {
.visible = true,
.named = true,
},
[anon_sym_DOLLAR] = {
.visible = true,
.named = false,
@ -247,10 +247,10 @@ static const char * const ts_field_names[] = {
static const TSMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = {
[1] = {.index = 0, .length = 1},
[2] = {.index = 0, .length = 1},
[3] = {.index = 1, .length = 2},
[4] = {.index = 3, .length = 1},
[5] = {.index = 3, .length = 1},
[6] = {.index = 1, .length = 2},
[3] = {.index = 1, .length = 1},
[4] = {.index = 2, .length = 2},
[5] = {.index = 1, .length = 1},
[6] = {.index = 2, .length = 2},
[7] = {.index = 4, .length = 2},
[8] = {.index = 4, .length = 2},
};
@ -259,10 +259,10 @@ static const TSFieldMapEntry ts_field_map_entries[] = {
[0] =
{field_key, 0},
[1] =
{field_key, 1},
[2] =
{field_key, 0},
{field_value, 2},
[3] =
{field_key, 1},
[4] =
{field_key, 1},
{field_value, 3},
@ -274,10 +274,10 @@ static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE
[0] = sym_identifier,
},
[3] = {
[0] = sym_identifier,
[1] = sym_identifier,
},
[4] = {
[1] = sym_identifier,
[0] = sym_identifier,
},
[7] = {
[1] = sym_identifier,
@ -312,9 +312,9 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = {
[20] = 20,
[21] = 21,
[22] = 22,
[23] = 23,
[24] = 22,
[25] = 20,
[23] = 22,
[24] = 24,
[25] = 25,
[26] = 26,
[27] = 27,
[28] = 28,
@ -332,10 +332,10 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = {
[40] = 40,
[41] = 21,
[42] = 42,
[43] = 43,
[43] = 20,
[44] = 44,
[45] = 35,
[46] = 42,
[45] = 36,
[46] = 44,
};
static bool ts_lex(TSLexer *lexer, TSStateId state) {
@ -754,7 +754,7 @@ static bool ts_lex_keywords(TSLexer *lexer, TSStateId state) {
if (lookahead == 't') ADVANCE(6);
END_STATE();
case 6:
ACCEPT_TOKEN(sym_export);
ACCEPT_TOKEN(anon_sym_export);
END_STATE();
default:
return false;
@ -785,28 +785,28 @@ static const TSLexerMode ts_lex_modes[STATE_COUNT] = {
[20] = {.lex_state = 2},
[21] = {.lex_state = 2},
[22] = {.lex_state = 8},
[23] = {.lex_state = 3},
[24] = {.lex_state = 8},
[23] = {.lex_state = 8},
[24] = {.lex_state = 3},
[25] = {.lex_state = 0, .external_lex_state = 1},
[26] = {.lex_state = 0},
[27] = {.lex_state = 0, .external_lex_state = 1},
[28] = {.lex_state = 0, .external_lex_state = 1},
[28] = {.lex_state = 0},
[29] = {.lex_state = 0, .external_lex_state = 1},
[30] = {.lex_state = 0, .external_lex_state = 1},
[31] = {.lex_state = 0, .external_lex_state = 1},
[32] = {.lex_state = 0},
[32] = {.lex_state = 0, .external_lex_state = 1},
[33] = {.lex_state = 0, .external_lex_state = 1},
[34] = {.lex_state = 0},
[35] = {.lex_state = 0},
[36] = {.lex_state = 0, .external_lex_state = 1},
[36] = {.lex_state = 0},
[37] = {.lex_state = 0, .external_lex_state = 1},
[38] = {.lex_state = 0, .external_lex_state = 1},
[38] = {.lex_state = 0},
[39] = {.lex_state = 0, .external_lex_state = 1},
[40] = {.lex_state = 0},
[40] = {.lex_state = 0, .external_lex_state = 1},
[41] = {.lex_state = 0, .external_lex_state = 1},
[42] = {.lex_state = 8},
[42] = {.lex_state = 0, .external_lex_state = 1},
[43] = {.lex_state = 0, .external_lex_state = 1},
[44] = {.lex_state = 0},
[44] = {.lex_state = 8},
[45] = {.lex_state = 0},
[46] = {.lex_state = 8},
};
@ -815,9 +815,9 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
[STATE(0)] = {
[ts_builtin_sym_end] = ACTIONS(1),
[sym_identifier] = ACTIONS(1),
[anon_sym_export] = ACTIONS(1),
[anon_sym_EQ] = ACTIONS(1),
[sym_comment] = ACTIONS(1),
[sym_export] = ACTIONS(1),
[anon_sym_DOLLAR] = ACTIONS(1),
[anon_sym_LBRACE] = ACTIONS(1),
[anon_sym_RBRACE] = ACTIONS(1),
@ -831,21 +831,21 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
},
[STATE(1)] = {
[sym_document] = STATE(26),
[sym_assignment] = STATE(6),
[aux_sym_document_repeat1] = STATE(6),
[sym_assignment] = STATE(7),
[aux_sym_document_repeat1] = STATE(7),
[ts_builtin_sym_end] = ACTIONS(3),
[sym_identifier] = ACTIONS(5),
[sym_comment] = ACTIONS(7),
[sym_export] = ACTIONS(9),
[anon_sym_export] = ACTIONS(7),
[sym_comment] = ACTIONS(9),
},
[STATE(2)] = {
[sym_variable] = STATE(33),
[sym__value] = STATE(33),
[sym_string] = STATE(33),
[sym__literal_string] = STATE(30),
[sym__string] = STATE(30),
[sym__literal_string] = STATE(32),
[sym__string] = STATE(32),
[sym_number] = STATE(33),
[sym_integer] = STATE(28),
[sym_integer] = STATE(30),
[anon_sym_DOLLAR] = ACTIONS(11),
[anon_sym_SQUOTE] = ACTIONS(13),
[anon_sym_DQUOTE] = ACTIONS(15),
@ -860,10 +860,10 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
[sym_variable] = STATE(39),
[sym__value] = STATE(39),
[sym_string] = STATE(39),
[sym__literal_string] = STATE(30),
[sym__string] = STATE(30),
[sym__literal_string] = STATE(32),
[sym__string] = STATE(32),
[sym_number] = STATE(39),
[sym_integer] = STATE(28),
[sym_integer] = STATE(30),
[anon_sym_DOLLAR] = ACTIONS(11),
[anon_sym_SQUOTE] = ACTIONS(13),
[anon_sym_DQUOTE] = ACTIONS(15),
@ -875,13 +875,13 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
[sym__end_of_assignment] = ACTIONS(27),
},
[STATE(4)] = {
[sym_variable] = STATE(29),
[sym__value] = STATE(29),
[sym_string] = STATE(29),
[sym__literal_string] = STATE(30),
[sym__string] = STATE(30),
[sym_number] = STATE(29),
[sym_integer] = STATE(28),
[sym_variable] = STATE(42),
[sym__value] = STATE(42),
[sym_string] = STATE(42),
[sym__literal_string] = STATE(32),
[sym__string] = STATE(32),
[sym_number] = STATE(42),
[sym_integer] = STATE(30),
[anon_sym_DOLLAR] = ACTIONS(11),
[anon_sym_SQUOTE] = ACTIONS(13),
[anon_sym_DQUOTE] = ACTIONS(15),
@ -896,10 +896,10 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
[sym_variable] = STATE(31),
[sym__value] = STATE(31),
[sym_string] = STATE(31),
[sym__literal_string] = STATE(30),
[sym__string] = STATE(30),
[sym__literal_string] = STATE(32),
[sym__string] = STATE(32),
[sym_number] = STATE(31),
[sym_integer] = STATE(28),
[sym_integer] = STATE(30),
[anon_sym_DOLLAR] = ACTIONS(11),
[anon_sym_SQUOTE] = ACTIONS(13),
[anon_sym_DQUOTE] = ACTIONS(15),
@ -914,27 +914,27 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
static const uint16_t ts_small_parse_table[] = {
[0] = 5,
ACTIONS(5), 1,
sym_identifier,
ACTIONS(9), 1,
sym_export,
ACTIONS(37), 1,
ts_builtin_sym_end,
ACTIONS(39), 1,
sym_identifier,
ACTIONS(42), 1,
anon_sym_export,
ACTIONS(45), 1,
sym_comment,
STATE(7), 2,
STATE(6), 2,
sym_assignment,
aux_sym_document_repeat1,
[17] = 5,
ACTIONS(41), 1,
ts_builtin_sym_end,
ACTIONS(43), 1,
ACTIONS(5), 1,
sym_identifier,
ACTIONS(46), 1,
ACTIONS(7), 1,
anon_sym_export,
ACTIONS(48), 1,
ts_builtin_sym_end,
ACTIONS(50), 1,
sym_comment,
ACTIONS(49), 1,
sym_export,
STATE(7), 2,
STATE(6), 2,
sym_assignment,
aux_sym_document_repeat1,
[34] = 4,
@ -968,68 +968,68 @@ static const uint16_t ts_small_parse_table[] = {
sym_variable,
aux_sym__string_repeat1,
[76] = 2,
ACTIONS(72), 1,
sym_identifier,
ACTIONS(70), 3,
ACTIONS(70), 2,
ts_builtin_sym_end,
sym_comment,
sym_export,
ACTIONS(72), 2,
anon_sym_export,
sym_identifier,
[85] = 2,
ACTIONS(76), 1,
sym_identifier,
ACTIONS(74), 3,
ACTIONS(74), 2,
ts_builtin_sym_end,
sym_comment,
sym_export,
ACTIONS(76), 2,
anon_sym_export,
sym_identifier,
[94] = 2,
ACTIONS(80), 1,
sym_identifier,
ACTIONS(78), 3,
ACTIONS(78), 2,
ts_builtin_sym_end,
sym_comment,
sym_export,
ACTIONS(80), 2,
anon_sym_export,
sym_identifier,
[103] = 2,
ACTIONS(84), 1,
sym_identifier,
ACTIONS(82), 3,
ACTIONS(82), 2,
ts_builtin_sym_end,
sym_comment,
sym_export,
ACTIONS(84), 2,
anon_sym_export,
sym_identifier,
[112] = 2,
ACTIONS(88), 1,
sym_identifier,
ACTIONS(86), 3,
ACTIONS(86), 2,
ts_builtin_sym_end,
sym_comment,
sym_export,
ACTIONS(88), 2,
anon_sym_export,
sym_identifier,
[121] = 2,
ACTIONS(92), 1,
sym_identifier,
ACTIONS(90), 3,
ACTIONS(90), 2,
ts_builtin_sym_end,
sym_comment,
sym_export,
ACTIONS(92), 2,
anon_sym_export,
sym_identifier,
[130] = 2,
ACTIONS(96), 1,
sym_identifier,
ACTIONS(94), 3,
ACTIONS(94), 2,
ts_builtin_sym_end,
sym_comment,
sym_export,
ACTIONS(96), 2,
anon_sym_export,
sym_identifier,
[139] = 2,
ACTIONS(100), 1,
sym_identifier,
ACTIONS(98), 3,
ACTIONS(98), 2,
ts_builtin_sym_end,
sym_comment,
sym_export,
ACTIONS(100), 2,
anon_sym_export,
sym_identifier,
[148] = 3,
ACTIONS(102), 1,
sym_identifier,
ACTIONS(104), 1,
anon_sym_EQ,
anon_sym_export,
ACTIONS(106), 1,
sym_export,
anon_sym_EQ,
[158] = 2,
ACTIONS(110), 1,
aux_sym__string_token1,
@ -1049,74 +1049,74 @@ static const uint16_t ts_small_parse_table[] = {
anon_sym_LBRACE,
[181] = 2,
ACTIONS(120), 1,
anon_sym_SQUOTE,
sym_identifier,
ACTIONS(122), 1,
aux_sym__literal_string_token1,
anon_sym_LBRACE,
[188] = 2,
ACTIONS(124), 1,
sym_identifier,
anon_sym_SQUOTE,
ACTIONS(126), 1,
anon_sym_LBRACE,
aux_sym__literal_string_token1,
[195] = 1,
ACTIONS(110), 1,
ACTIONS(128), 1,
sym__end_of_assignment,
[199] = 1,
ACTIONS(128), 1,
ACTIONS(130), 1,
ts_builtin_sym_end,
[203] = 1,
ACTIONS(130), 1,
sym__end_of_assignment,
[207] = 1,
ACTIONS(132), 1,
sym__end_of_assignment,
[211] = 1,
[207] = 1,
ACTIONS(134), 1,
sym__end_of_assignment,
[215] = 1,
anon_sym_SQUOTE,
[211] = 1,
ACTIONS(136), 1,
sym__end_of_assignment,
[219] = 1,
[215] = 1,
ACTIONS(138), 1,
sym__end_of_assignment,
[223] = 1,
[219] = 1,
ACTIONS(140), 1,
anon_sym_EQ,
[227] = 1,
sym__end_of_assignment,
[223] = 1,
ACTIONS(142), 1,
sym__end_of_assignment,
[231] = 1,
[227] = 1,
ACTIONS(144), 1,
sym__end_of_assignment,
[231] = 1,
ACTIONS(146), 1,
anon_sym_EQ,
[235] = 1,
ACTIONS(146), 1,
anon_sym_RBRACE,
[239] = 1,
ACTIONS(148), 1,
sym__end_of_assignment,
[243] = 1,
anon_sym_EQ,
[239] = 1,
ACTIONS(150), 1,
sym__end_of_assignment,
[247] = 1,
anon_sym_RBRACE,
[243] = 1,
ACTIONS(152), 1,
sym__end_of_assignment,
[251] = 1,
[247] = 1,
ACTIONS(154), 1,
anon_sym_EQ,
[251] = 1,
ACTIONS(156), 1,
sym__end_of_assignment,
[255] = 1,
ACTIONS(156), 1,
anon_sym_EQ,
ACTIONS(158), 1,
sym__end_of_assignment,
[259] = 1,
ACTIONS(114), 1,
sym__end_of_assignment,
[263] = 1,
ACTIONS(158), 1,
sym_identifier,
[267] = 1,
ACTIONS(160), 1,
sym__end_of_assignment,
[267] = 1,
ACTIONS(110), 1,
sym__end_of_assignment,
[271] = 1,
ACTIONS(162), 1,
anon_sym_SQUOTE,
sym_identifier,
[275] = 1,
ACTIONS(164), 1,
anon_sym_RBRACE,
@ -1173,34 +1173,34 @@ static const TSParseActionEntry ts_parse_actions[] = {
[0] = {.entry = {.count = 0, .reusable = false}},
[1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(),
[3] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_document, 0, 0, 0),
[5] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40),
[7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6),
[9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19),
[11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22),
[13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23),
[5] = {.entry = {.count = 1, .reusable = false}}, SHIFT(38),
[7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(19),
[9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7),
[11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23),
[13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24),
[15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8),
[17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(38),
[19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(28),
[17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40),
[19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(30),
[21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(33),
[23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15),
[23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14),
[25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(39),
[27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12),
[29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(29),
[31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11),
[29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(42),
[31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17),
[33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(31),
[35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13),
[37] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_document, 1, 0, 0),
[39] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7),
[41] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0),
[43] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(40),
[46] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(7),
[49] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(19),
[52] = {.entry = {.count = 1, .reusable = false}}, SHIFT(24),
[54] = {.entry = {.count = 1, .reusable = false}}, SHIFT(27),
[35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11),
[37] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0),
[39] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(38),
[42] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(19),
[45] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(6),
[48] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_document, 1, 0, 0),
[50] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6),
[52] = {.entry = {.count = 1, .reusable = false}}, SHIFT(22),
[54] = {.entry = {.count = 1, .reusable = false}}, SHIFT(29),
[56] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9),
[58] = {.entry = {.count = 1, .reusable = false}}, SHIFT(37),
[58] = {.entry = {.count = 1, .reusable = false}}, SHIFT(25),
[60] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10),
[62] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__string_repeat1, 2, 0, 0), SHIFT_REPEAT(24),
[62] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__string_repeat1, 2, 0, 0), SHIFT_REPEAT(22),
[65] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__string_repeat1, 2, 0, 0),
[67] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__string_repeat1, 2, 0, 0), SHIFT_REPEAT(10),
[70] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, 0, 1),
@ -1209,46 +1209,46 @@ static const TSParseActionEntry ts_parse_actions[] = {
[76] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 3, 0, 2),
[78] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 4),
[80] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 4),
[82] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 3),
[84] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 3),
[86] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 5),
[88] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 5),
[90] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 6),
[92] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 6),
[94] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 5, 0, 7),
[96] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 5, 0, 7),
[82] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 5),
[84] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 5),
[86] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 6),
[88] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 6),
[90] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 5, 0, 7),
[92] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 5, 0, 7),
[94] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 3),
[96] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 3),
[98] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 5, 0, 8),
[100] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 5, 0, 8),
[102] = {.entry = {.count = 1, .reusable = false}}, SHIFT(34),
[104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4),
[106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32),
[104] = {.entry = {.count = 1, .reusable = false}}, SHIFT(35),
[106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5),
[108] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable, 2, 0, 0),
[110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable, 2, 0, 0),
[112] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable, 4, 0, 0),
[114] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable, 4, 0, 0),
[116] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25),
[118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42),
[120] = {.entry = {.count = 1, .reusable = false}}, SHIFT(43),
[116] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20),
[118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46),
[120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43),
[122] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44),
[124] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20),
[126] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46),
[128] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(),
[130] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__string, 2, 0, 0),
[132] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_number, 1, 0, 0),
[134] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14),
[136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 1, 0, 0),
[138] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17),
[140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5),
[142] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18),
[144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2),
[146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41),
[148] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__literal_string, 3, 0, 0),
[150] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__string, 3, 0, 0),
[152] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_integer, 1, 0, 0),
[154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16),
[156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3),
[158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35),
[160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__literal_string, 2, 0, 0),
[124] = {.entry = {.count = 1, .reusable = false}}, SHIFT(27),
[126] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28),
[128] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__string, 3, 0, 0),
[130] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(),
[132] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__literal_string, 2, 0, 0),
[134] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37),
[136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__string, 2, 0, 0),
[138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_number, 1, 0, 0),
[140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13),
[142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 1, 0, 0),
[144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18),
[146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2),
[148] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4),
[150] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41),
[152] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__literal_string, 3, 0, 0),
[154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3),
[156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15),
[158] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_integer, 1, 0, 0),
[160] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16),
[162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36),
[164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21),
[166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45),