From 93cd1637075f1df5f3caa4ad4bb1435d801286fb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 1 Jun 2022 20:11:52 +0200 Subject: [PATCH] Add assignment expressions --- grammar.js | 12 + src/grammar.json | 33 + src/node-types.json | 126 ++ src/parser.c | 2149 ++++++++++++++++++----------------- test/corpus/expressions.txt | 19 + 5 files changed, 1316 insertions(+), 1023 deletions(-) diff --git a/grammar.js b/grammar.js index ed903c6..3d18354 100644 --- a/grammar.js +++ b/grammar.js @@ -7,6 +7,7 @@ function sepBy(sep, rule) { } const PREC = { + assign: 6, multiplicative: 5, additive: 4, comparative: 3, @@ -44,6 +45,8 @@ module.exports = grammar({ $.unary_expression, $.binary_expression, $.sequence_expression, + + $.assignment_expression, ), nil_literal: (_) => "nil", @@ -155,6 +158,15 @@ module.exports = grammar({ ), "}", ), + + assignment_expression: ($) => prec.right( + PREC.assign, + seq( + field("left", $._lvalue), + ":=", + field("right", $._expr), + ), + ), } }); diff --git a/src/grammar.json b/src/grammar.json index c8cd4e8..c2a4450 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -53,6 +53,10 @@ { "type": "SYMBOL", "name": "sequence_expression" + }, + { + "type": "SYMBOL", + "name": "assignment_expression" } ] }, @@ -752,6 +756,35 @@ "value": "}" } ] + }, + "assignment_expression": { + "type": "PREC_RIGHT", + "value": 6, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "_lvalue" + } + }, + { + "type": "STRING", + "value": ":=" + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + } + ] + } } }, "extras": [ diff --git a/src/node-types.json b/src/node-types.json index 2f747ba..da45bde 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -15,6 +15,10 @@ "type": "array_value", "named": true }, + { + "type": "assignment_expression", + "named": true + }, { "type": "binary_expression", "named": true @@ -69,6 +73,10 @@ "type": "array_value", "named": true }, + { + "type": "assignment_expression", + "named": true + }, { "type": "binary_expression", "named": true @@ -157,6 +165,92 @@ "type": "array_value", "named": true }, + { + "type": "assignment_expression", + "named": true + }, + { + "type": "binary_expression", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "integer_literal", + "named": true + }, + { + "type": "nil_literal", + "named": true + }, + { + "type": "record_expression", + "named": true + }, + { + "type": "record_value", + "named": true + }, + { + "type": "sequence_expression", + "named": true + }, + { + "type": "string_literal", + "named": true + }, + { + "type": "unary_expression", + "named": true + } + ] + } + } + }, + { + "type": "assignment_expression", + "named": true, + "fields": { + "left": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_value", + "named": true + }, + { + "type": "identifier", + "named": true + }, + { + "type": "record_value", + "named": true + } + ] + }, + "right": { + "multiple": false, + "required": true, + "types": [ + { + "type": "array_expression", + "named": true + }, + { + "type": "array_value", + "named": true + }, + { + "type": "assignment_expression", + "named": true + }, { "type": "binary_expression", "named": true @@ -217,6 +311,10 @@ "type": "array_value", "named": true }, + { + "type": "assignment_expression", + "named": true + }, { "type": "binary_expression", "named": true @@ -281,6 +379,10 @@ "type": "array_value", "named": true }, + { + "type": "assignment_expression", + "named": true + }, { "type": "binary_expression", "named": true @@ -345,6 +447,10 @@ "type": "array_value", "named": true }, + { + "type": "assignment_expression", + "named": true + }, { "type": "binary_expression", "named": true @@ -425,6 +531,10 @@ "type": "array_value", "named": true }, + { + "type": "assignment_expression", + "named": true + }, { "type": "binary_expression", "named": true @@ -529,6 +639,10 @@ "type": "array_value", "named": true }, + { + "type": "assignment_expression", + "named": true + }, { "type": "binary_expression", "named": true @@ -588,6 +702,10 @@ "type": "array_value", "named": true }, + { + "type": "assignment_expression", + "named": true + }, { "type": "binary_expression", "named": true @@ -662,6 +780,10 @@ "type": "array_value", "named": true }, + { + "type": "assignment_expression", + "named": true + }, { "type": "binary_expression", "named": true @@ -736,6 +858,10 @@ "type": ".", "named": false }, + { + "type": ":=", + "named": false + }, { "type": ";", "named": false diff --git a/src/parser.c b/src/parser.c index 5baab03..d2daaa7 100644 --- a/src/parser.c +++ b/src/parser.c @@ -6,15 +6,15 @@ #endif #define LANGUAGE_VERSION 13 -#define STATE_COUNT 64 +#define STATE_COUNT 66 #define LARGE_STATE_COUNT 2 -#define SYMBOL_COUNT 45 +#define SYMBOL_COUNT 47 #define ALIAS_COUNT 0 -#define TOKEN_COUNT 29 +#define TOKEN_COUNT 30 #define EXTERNAL_TOKEN_COUNT 0 #define FIELD_COUNT 13 #define MAX_ALIAS_SEQUENCE_LENGTH 7 -#define PRODUCTION_ID_COUNT 14 +#define PRODUCTION_ID_COUNT 15 enum { sym_identifier = 1, @@ -45,22 +45,24 @@ enum { anon_sym_of = 26, anon_sym_LBRACE = 27, anon_sym_RBRACE = 28, - sym_source_file = 29, - sym__expr = 30, - sym_string_literal = 31, - sym__lvalue = 32, - sym_record_value = 33, - sym_array_value = 34, - sym_function_call = 35, - sym_unary_expression = 36, - sym_binary_expression = 37, - sym_sequence_expression = 38, - sym_array_expression = 39, - sym_record_expression = 40, - aux_sym_string_literal_repeat1 = 41, - aux_sym_function_call_repeat1 = 42, - aux_sym_sequence_expression_repeat1 = 43, - aux_sym_record_expression_repeat1 = 44, + anon_sym_COLON_EQ = 29, + sym_source_file = 30, + sym__expr = 31, + sym_string_literal = 32, + sym__lvalue = 33, + sym_record_value = 34, + sym_array_value = 35, + sym_function_call = 36, + sym_unary_expression = 37, + sym_binary_expression = 38, + sym_sequence_expression = 39, + sym_array_expression = 40, + sym_record_expression = 41, + sym_assignment_expression = 42, + aux_sym_string_literal_repeat1 = 43, + aux_sym_function_call_repeat1 = 44, + aux_sym_sequence_expression_repeat1 = 45, + aux_sym_record_expression_repeat1 = 46, }; static const char * const ts_symbol_names[] = { @@ -93,6 +95,7 @@ static const char * const ts_symbol_names[] = { [anon_sym_of] = "of", [anon_sym_LBRACE] = "{", [anon_sym_RBRACE] = "}", + [anon_sym_COLON_EQ] = ":=", [sym_source_file] = "source_file", [sym__expr] = "_expr", [sym_string_literal] = "string_literal", @@ -105,6 +108,7 @@ static const char * const ts_symbol_names[] = { [sym_sequence_expression] = "sequence_expression", [sym_array_expression] = "array_expression", [sym_record_expression] = "record_expression", + [sym_assignment_expression] = "assignment_expression", [aux_sym_string_literal_repeat1] = "string_literal_repeat1", [aux_sym_function_call_repeat1] = "function_call_repeat1", [aux_sym_sequence_expression_repeat1] = "sequence_expression_repeat1", @@ -141,6 +145,7 @@ static const TSSymbol ts_symbol_map[] = { [anon_sym_of] = anon_sym_of, [anon_sym_LBRACE] = anon_sym_LBRACE, [anon_sym_RBRACE] = anon_sym_RBRACE, + [anon_sym_COLON_EQ] = anon_sym_COLON_EQ, [sym_source_file] = sym_source_file, [sym__expr] = sym__expr, [sym_string_literal] = sym_string_literal, @@ -153,6 +158,7 @@ static const TSSymbol ts_symbol_map[] = { [sym_sequence_expression] = sym_sequence_expression, [sym_array_expression] = sym_array_expression, [sym_record_expression] = sym_record_expression, + [sym_assignment_expression] = sym_assignment_expression, [aux_sym_string_literal_repeat1] = aux_sym_string_literal_repeat1, [aux_sym_function_call_repeat1] = aux_sym_function_call_repeat1, [aux_sym_sequence_expression_repeat1] = aux_sym_sequence_expression_repeat1, @@ -276,6 +282,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, + [anon_sym_COLON_EQ] = { + .visible = true, + .named = false, + }, [sym_source_file] = { .visible = true, .named = true, @@ -324,6 +334,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [sym_assignment_expression] = { + .visible = true, + .named = true, + }, [aux_sym_string_literal_repeat1] = { .visible = false, .named = false, @@ -383,12 +397,13 @@ static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { [5] = {.index = 7, .length = 2}, [6] = {.index = 9, .length = 2}, [7] = {.index = 11, .length = 2}, - [8] = {.index = 13, .length = 3}, - [9] = {.index = 16, .length = 3}, - [10] = {.index = 19, .length = 3}, - [11] = {.index = 22, .length = 5}, - [12] = {.index = 27, .length = 4}, - [13] = {.index = 31, .length = 2}, + [8] = {.index = 13, .length = 2}, + [9] = {.index = 15, .length = 3}, + [10] = {.index = 18, .length = 3}, + [11] = {.index = 21, .length = 3}, + [12] = {.index = 24, .length = 5}, + [13] = {.index = 29, .length = 4}, + [14] = {.index = 33, .length = 2}, }; static const TSFieldMapEntry ts_field_map_entries[] = { @@ -407,35 +422,38 @@ static const TSFieldMapEntry ts_field_map_entries[] = { {field_field, 2}, {field_record, 0}, [9] = + {field_left, 0}, + {field_right, 2}, + [11] = {field_arguments, 2}, {field_function, 0}, - [11] = + [13] = {field_array, 0}, {field_index, 2}, - [13] = + [15] = {field_arguments, 2}, {field_arguments, 3}, {field_function, 0}, - [16] = + [18] = {field_init, 5}, {field_size, 2}, {field_type, 0}, - [19] = + [21] = {field_field, 2}, {field_init, 4}, {field_type, 0}, - [22] = + [24] = {field_field, 2}, {field_field, 5, .inherited = true}, {field_init, 4}, {field_init, 5, .inherited = true}, {field_type, 0}, - [27] = + [29] = {field_field, 0, .inherited = true}, {field_field, 1, .inherited = true}, {field_init, 0, .inherited = true}, {field_init, 1, .inherited = true}, - [31] = + [33] = {field_field, 1}, {field_init, 3}, }; @@ -456,63 +474,67 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { eof = lexer->eof(lexer); switch (state) { case 0: - if (eof) ADVANCE(9); - if (lookahead == '"') ADVANCE(11); - if (lookahead == '&') ADVANCE(32); - if (lookahead == '(') ADVANCE(19); - if (lookahead == ')') ADVANCE(21); - if (lookahead == '*') ADVANCE(23); - if (lookahead == '+') ADVANCE(25); - if (lookahead == ',') ADVANCE(20); - if (lookahead == '-') ADVANCE(22); - if (lookahead == '.') ADVANCE(16); - if (lookahead == '/') ADVANCE(24); - if (lookahead == ';') ADVANCE(34); - if (lookahead == '<') ADVANCE(30); - if (lookahead == '=') ADVANCE(28); - if (lookahead == '>') ADVANCE(31); - if (lookahead == '[') ADVANCE(17); - if (lookahead == '\\') ADVANCE(5); - if (lookahead == ']') ADVANCE(18); - if (lookahead == '{') ADVANCE(35); - if (lookahead == '|') ADVANCE(33); - if (lookahead == '}') ADVANCE(36); + if (eof) ADVANCE(10); + if (lookahead == '"') ADVANCE(12); + if (lookahead == '&') ADVANCE(33); + if (lookahead == '(') ADVANCE(20); + if (lookahead == ')') ADVANCE(22); + if (lookahead == '*') ADVANCE(24); + if (lookahead == '+') ADVANCE(26); + if (lookahead == ',') ADVANCE(21); + if (lookahead == '-') ADVANCE(23); + if (lookahead == '.') ADVANCE(17); + if (lookahead == '/') ADVANCE(25); + if (lookahead == ':') ADVANCE(2); + if (lookahead == ';') ADVANCE(35); + if (lookahead == '<') ADVANCE(31); + if (lookahead == '=') ADVANCE(29); + if (lookahead == '>') ADVANCE(32); + if (lookahead == '[') ADVANCE(18); + if (lookahead == '\\') ADVANCE(6); + if (lookahead == ']') ADVANCE(19); + if (lookahead == '{') ADVANCE(36); + if (lookahead == '|') ADVANCE(34); + if (lookahead == '}') ADVANCE(37); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') SKIP(8) - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(10); + lookahead == ' ') SKIP(9) + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(11); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(14); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(15); END_STATE(); case 1: - if (lookahead == '"') ADVANCE(11); - if (lookahead == '\\') ADVANCE(5); + if (lookahead == '"') ADVANCE(12); + if (lookahead == '\\') ADVANCE(6); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') ADVANCE(12); - if (lookahead != 0) ADVANCE(13); + lookahead == ' ') ADVANCE(13); + if (lookahead != 0) ADVANCE(14); END_STATE(); case 2: - if (lookahead == '}') ADVANCE(36); + if (lookahead == '=') ADVANCE(38); + END_STATE(); + case 3: + if (lookahead == '}') ADVANCE(37); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') SKIP(2) + lookahead == ' ') SKIP(3) if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(14); - END_STATE(); - case 3: - if (('0' <= lookahead && lookahead <= '7')) ADVANCE(15); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(15); END_STATE(); case 4: - if (('0' <= lookahead && lookahead <= '7')) ADVANCE(3); + if (('0' <= lookahead && lookahead <= '7')) ADVANCE(16); END_STATE(); case 5: + if (('0' <= lookahead && lookahead <= '7')) ADVANCE(4); + END_STATE(); + case 6: if (lookahead == '"' || lookahead == '\\' || lookahead == 'a' || @@ -521,155 +543,159 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 'n' || lookahead == 'r' || lookahead == 't' || - lookahead == 'v') ADVANCE(15); - if (lookahead == 'x') ADVANCE(7); - if (('0' <= lookahead && lookahead <= '3')) ADVANCE(4); - END_STATE(); - case 6: - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(15); + lookahead == 'v') ADVANCE(16); + if (lookahead == 'x') ADVANCE(8); + if (('0' <= lookahead && lookahead <= '3')) ADVANCE(5); END_STATE(); case 7: if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(6); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(16); END_STATE(); case 8: - if (eof) ADVANCE(9); - if (lookahead == '"') ADVANCE(11); - if (lookahead == '&') ADVANCE(32); - if (lookahead == '(') ADVANCE(19); - if (lookahead == ')') ADVANCE(21); - if (lookahead == '*') ADVANCE(23); - if (lookahead == '+') ADVANCE(25); - if (lookahead == ',') ADVANCE(20); - if (lookahead == '-') ADVANCE(22); - if (lookahead == '.') ADVANCE(16); - if (lookahead == '/') ADVANCE(24); - if (lookahead == ';') ADVANCE(34); - if (lookahead == '<') ADVANCE(30); - if (lookahead == '=') ADVANCE(28); - if (lookahead == '>') ADVANCE(31); - if (lookahead == '[') ADVANCE(17); - if (lookahead == ']') ADVANCE(18); - if (lookahead == '{') ADVANCE(35); - if (lookahead == '|') ADVANCE(33); - if (lookahead == '}') ADVANCE(36); - if (lookahead == '\t' || - lookahead == '\n' || - lookahead == '\r' || - lookahead == ' ') SKIP(8) - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(10); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(14); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(7); END_STATE(); case 9: - ACCEPT_TOKEN(ts_builtin_sym_end); - END_STATE(); - case 10: - ACCEPT_TOKEN(sym_integer_literal); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(10); - if (('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(14); - END_STATE(); - case 11: - ACCEPT_TOKEN(anon_sym_DQUOTE); - END_STATE(); - case 12: - ACCEPT_TOKEN(aux_sym_string_literal_token1); + if (eof) ADVANCE(10); + if (lookahead == '"') ADVANCE(12); + if (lookahead == '&') ADVANCE(33); + if (lookahead == '(') ADVANCE(20); + if (lookahead == ')') ADVANCE(22); + if (lookahead == '*') ADVANCE(24); + if (lookahead == '+') ADVANCE(26); + if (lookahead == ',') ADVANCE(21); + if (lookahead == '-') ADVANCE(23); + if (lookahead == '.') ADVANCE(17); + if (lookahead == '/') ADVANCE(25); + if (lookahead == ':') ADVANCE(2); + if (lookahead == ';') ADVANCE(35); + if (lookahead == '<') ADVANCE(31); + if (lookahead == '=') ADVANCE(29); + if (lookahead == '>') ADVANCE(32); + if (lookahead == '[') ADVANCE(18); + if (lookahead == ']') ADVANCE(19); + if (lookahead == '{') ADVANCE(36); + if (lookahead == '|') ADVANCE(34); + if (lookahead == '}') ADVANCE(37); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') ADVANCE(12); - if (lookahead != 0 && - lookahead != '"' && - lookahead != '\\') ADVANCE(13); + lookahead == ' ') SKIP(9) + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(11); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(15); + END_STATE(); + case 10: + ACCEPT_TOKEN(ts_builtin_sym_end); + END_STATE(); + case 11: + ACCEPT_TOKEN(sym_integer_literal); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(11); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(15); + END_STATE(); + case 12: + ACCEPT_TOKEN(anon_sym_DQUOTE); END_STATE(); case 13: ACCEPT_TOKEN(aux_sym_string_literal_token1); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(13); if (lookahead != 0 && lookahead != '"' && - lookahead != '\\') ADVANCE(13); + lookahead != '\\') ADVANCE(14); END_STATE(); case 14: + ACCEPT_TOKEN(aux_sym_string_literal_token1); + if (lookahead != 0 && + lookahead != '"' && + lookahead != '\\') ADVANCE(14); + END_STATE(); + case 15: ACCEPT_TOKEN(sym_identifier); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(14); - END_STATE(); - case 15: - ACCEPT_TOKEN(sym_escape_sequence); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(15); END_STATE(); case 16: - ACCEPT_TOKEN(anon_sym_DOT); + ACCEPT_TOKEN(sym_escape_sequence); END_STATE(); case 17: - ACCEPT_TOKEN(anon_sym_LBRACK); + ACCEPT_TOKEN(anon_sym_DOT); END_STATE(); case 18: - ACCEPT_TOKEN(anon_sym_RBRACK); + ACCEPT_TOKEN(anon_sym_LBRACK); END_STATE(); case 19: - ACCEPT_TOKEN(anon_sym_LPAREN); + ACCEPT_TOKEN(anon_sym_RBRACK); END_STATE(); case 20: - ACCEPT_TOKEN(anon_sym_COMMA); + ACCEPT_TOKEN(anon_sym_LPAREN); END_STATE(); case 21: - ACCEPT_TOKEN(anon_sym_RPAREN); + ACCEPT_TOKEN(anon_sym_COMMA); END_STATE(); case 22: - ACCEPT_TOKEN(anon_sym_DASH); + ACCEPT_TOKEN(anon_sym_RPAREN); END_STATE(); case 23: - ACCEPT_TOKEN(anon_sym_STAR); + ACCEPT_TOKEN(anon_sym_DASH); END_STATE(); case 24: - ACCEPT_TOKEN(anon_sym_SLASH); + ACCEPT_TOKEN(anon_sym_STAR); END_STATE(); case 25: - ACCEPT_TOKEN(anon_sym_PLUS); + ACCEPT_TOKEN(anon_sym_SLASH); END_STATE(); case 26: - ACCEPT_TOKEN(anon_sym_GT_EQ); + ACCEPT_TOKEN(anon_sym_PLUS); END_STATE(); case 27: - ACCEPT_TOKEN(anon_sym_LT_EQ); + ACCEPT_TOKEN(anon_sym_GT_EQ); END_STATE(); case 28: - ACCEPT_TOKEN(anon_sym_EQ); + ACCEPT_TOKEN(anon_sym_LT_EQ); END_STATE(); case 29: - ACCEPT_TOKEN(anon_sym_LT_GT); + ACCEPT_TOKEN(anon_sym_EQ); END_STATE(); case 30: - ACCEPT_TOKEN(anon_sym_LT); - if (lookahead == '=') ADVANCE(27); - if (lookahead == '>') ADVANCE(29); + ACCEPT_TOKEN(anon_sym_LT_GT); END_STATE(); case 31: - ACCEPT_TOKEN(anon_sym_GT); - if (lookahead == '=') ADVANCE(26); + ACCEPT_TOKEN(anon_sym_LT); + if (lookahead == '=') ADVANCE(28); + if (lookahead == '>') ADVANCE(30); END_STATE(); case 32: - ACCEPT_TOKEN(anon_sym_AMP); + ACCEPT_TOKEN(anon_sym_GT); + if (lookahead == '=') ADVANCE(27); END_STATE(); case 33: - ACCEPT_TOKEN(anon_sym_PIPE); + ACCEPT_TOKEN(anon_sym_AMP); END_STATE(); case 34: - ACCEPT_TOKEN(anon_sym_SEMI); + ACCEPT_TOKEN(anon_sym_PIPE); END_STATE(); case 35: - ACCEPT_TOKEN(anon_sym_LBRACE); + ACCEPT_TOKEN(anon_sym_SEMI); END_STATE(); case 36: + ACCEPT_TOKEN(anon_sym_LBRACE); + END_STATE(); + case 37: ACCEPT_TOKEN(anon_sym_RBRACE); END_STATE(); + case 38: + ACCEPT_TOKEN(anon_sym_COLON_EQ); + END_STATE(); default: return false; } @@ -756,22 +782,24 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [45] = {.lex_state = 0}, [46] = {.lex_state = 0}, [47] = {.lex_state = 0}, - [48] = {.lex_state = 1}, - [49] = {.lex_state = 1}, + [48] = {.lex_state = 0}, + [49] = {.lex_state = 0}, [50] = {.lex_state = 1}, - [51] = {.lex_state = 0}, - [52] = {.lex_state = 0}, + [51] = {.lex_state = 1}, + [52] = {.lex_state = 1}, [53] = {.lex_state = 0}, [54] = {.lex_state = 0}, [55] = {.lex_state = 0}, [56] = {.lex_state = 0}, - [57] = {.lex_state = 2}, + [57] = {.lex_state = 0}, [58] = {.lex_state = 0}, - [59] = {.lex_state = 2}, - [60] = {.lex_state = 2}, - [61] = {.lex_state = 0}, - [62] = {.lex_state = 0}, - [63] = {.lex_state = 2}, + [59] = {.lex_state = 3}, + [60] = {.lex_state = 0}, + [61] = {.lex_state = 3}, + [62] = {.lex_state = 3}, + [63] = {.lex_state = 3}, + [64] = {.lex_state = 0}, + [65] = {.lex_state = 0}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { @@ -804,20 +832,22 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_of] = ACTIONS(1), [anon_sym_LBRACE] = ACTIONS(1), [anon_sym_RBRACE] = ACTIONS(1), + [anon_sym_COLON_EQ] = ACTIONS(1), }, [1] = { - [sym_source_file] = STATE(61), - [sym__expr] = STATE(47), - [sym_string_literal] = STATE(47), + [sym_source_file] = STATE(60), + [sym__expr] = STATE(48), + [sym_string_literal] = STATE(48), [sym__lvalue] = STATE(3), [sym_record_value] = STATE(3), [sym_array_value] = STATE(3), - [sym_function_call] = STATE(47), - [sym_unary_expression] = STATE(47), - [sym_binary_expression] = STATE(47), - [sym_sequence_expression] = STATE(47), - [sym_array_expression] = STATE(47), - [sym_record_expression] = STATE(47), + [sym_function_call] = STATE(48), + [sym_unary_expression] = STATE(48), + [sym_binary_expression] = STATE(48), + [sym_sequence_expression] = STATE(48), + [sym_array_expression] = STATE(48), + [sym_record_expression] = STATE(48), + [sym_assignment_expression] = STATE(48), [sym_identifier] = ACTIONS(3), [sym_nil_literal] = ACTIONS(5), [sym_integer_literal] = ACTIONS(5), @@ -838,7 +868,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(20), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(13), 17, + ACTIONS(13), 18, ts_builtin_sym_end, anon_sym_DOT, anon_sym_RBRACK, @@ -856,11 +886,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_SEMI, anon_sym_RBRACE, - [33] = 4, + anon_sym_COLON_EQ, + [34] = 5, ACTIONS(26), 1, anon_sym_DOT, ACTIONS(28), 1, anon_sym_LBRACK, + ACTIONS(32), 1, + anon_sym_COLON_EQ, ACTIONS(30), 2, anon_sym_LT, anon_sym_GT, @@ -881,11 +914,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_SEMI, anon_sym_RBRACE, - [62] = 2, - ACTIONS(34), 2, + [66] = 2, + ACTIONS(36), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(32), 18, + ACTIONS(34), 19, ts_builtin_sym_end, anon_sym_DOT, anon_sym_LBRACK, @@ -904,11 +937,12 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_SEMI, anon_sym_RBRACE, - [87] = 2, - ACTIONS(38), 2, + anon_sym_COLON_EQ, + [92] = 2, + ACTIONS(40), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(36), 18, + ACTIONS(38), 19, ts_builtin_sym_end, anon_sym_DOT, anon_sym_LBRACK, @@ -927,7 +961,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_SEMI, anon_sym_RBRACE, - [112] = 8, + anon_sym_COLON_EQ, + [118] = 8, ACTIONS(3), 1, sym_identifier, ACTIONS(7), 1, @@ -936,16 +971,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(11), 1, anon_sym_DASH, - ACTIONS(42), 1, + ACTIONS(44), 1, anon_sym_RPAREN, - ACTIONS(40), 2, + ACTIONS(42), 2, sym_nil_literal, sym_integer_literal, STATE(3), 3, sym__lvalue, sym_record_value, sym_array_value, - STATE(40), 8, + STATE(42), 9, sym__expr, sym_string_literal, sym_function_call, @@ -954,37 +989,40 @@ static const uint16_t ts_small_parse_table[] = { sym_sequence_expression, sym_array_expression, sym_record_expression, - [147] = 7, - ACTIONS(54), 1, - anon_sym_AMP, - ACTIONS(56), 1, - anon_sym_PIPE, - ACTIONS(46), 2, + sym_assignment_expression, + [154] = 8, + ACTIONS(3), 1, + sym_identifier, + ACTIONS(7), 1, + anon_sym_DQUOTE, + ACTIONS(9), 1, + anon_sym_LPAREN, + ACTIONS(11), 1, anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(48), 2, - anon_sym_STAR, - anon_sym_SLASH, + ACTIONS(48), 1, + anon_sym_RPAREN, + ACTIONS(46), 2, + sym_nil_literal, + sym_integer_literal, + STATE(3), 3, + sym__lvalue, + sym_record_value, + sym_array_value, + STATE(41), 9, + sym__expr, + sym_string_literal, + sym_function_call, + sym_unary_expression, + sym_binary_expression, + sym_sequence_expression, + sym_array_expression, + sym_record_expression, + sym_assignment_expression, + [190] = 2, ACTIONS(52), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(50), 4, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - ACTIONS(44), 6, - ts_builtin_sym_end, - anon_sym_RBRACK, - anon_sym_COMMA, - anon_sym_RPAREN, - anon_sym_SEMI, - anon_sym_RBRACE, - [180] = 2, - ACTIONS(60), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(58), 16, + ACTIONS(50), 16, ts_builtin_sym_end, anon_sym_RBRACK, anon_sym_COMMA, @@ -1001,7 +1039,30 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_SEMI, anon_sym_RBRACE, - [203] = 2, + [213] = 4, + ACTIONS(56), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(58), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(60), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(54), 12, + ts_builtin_sym_end, + anon_sym_RBRACK, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + anon_sym_AMP, + anon_sym_PIPE, + anon_sym_SEMI, + anon_sym_RBRACE, + [240] = 2, ACTIONS(64), 2, anon_sym_LT, anon_sym_GT, @@ -1022,28 +1083,59 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_SEMI, anon_sym_RBRACE, - [226] = 2, - ACTIONS(68), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(66), 16, - ts_builtin_sym_end, - anon_sym_RBRACK, - anon_sym_COMMA, - anon_sym_RPAREN, + [263] = 7, + ACTIONS(3), 1, + sym_identifier, + ACTIONS(7), 1, + anon_sym_DQUOTE, + ACTIONS(9), 1, + anon_sym_LPAREN, + ACTIONS(11), 1, anon_sym_DASH, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - anon_sym_AMP, - anon_sym_PIPE, - anon_sym_SEMI, - anon_sym_RBRACE, - [249] = 2, + ACTIONS(66), 2, + sym_nil_literal, + sym_integer_literal, + STATE(3), 3, + sym__lvalue, + sym_record_value, + sym_array_value, + STATE(45), 9, + sym__expr, + sym_string_literal, + sym_function_call, + sym_unary_expression, + sym_binary_expression, + sym_sequence_expression, + sym_array_expression, + sym_record_expression, + sym_assignment_expression, + [296] = 7, + ACTIONS(3), 1, + sym_identifier, + ACTIONS(7), 1, + anon_sym_DQUOTE, + ACTIONS(9), 1, + anon_sym_LPAREN, + ACTIONS(11), 1, + anon_sym_DASH, + ACTIONS(68), 2, + sym_nil_literal, + sym_integer_literal, + STATE(3), 3, + sym__lvalue, + sym_record_value, + sym_array_value, + STATE(49), 9, + sym__expr, + sym_string_literal, + sym_function_call, + sym_unary_expression, + sym_binary_expression, + sym_sequence_expression, + sym_array_expression, + sym_record_expression, + sym_assignment_expression, + [329] = 2, ACTIONS(72), 2, anon_sym_LT, anon_sym_GT, @@ -1064,7 +1156,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_SEMI, anon_sym_RBRACE, - [272] = 2, + [352] = 2, ACTIONS(76), 2, anon_sym_LT, anon_sym_GT, @@ -1085,7 +1177,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_SEMI, anon_sym_RBRACE, - [295] = 2, + [375] = 2, ACTIONS(80), 2, anon_sym_LT, anon_sym_GT, @@ -1106,75 +1198,33 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_SEMI, anon_sym_RBRACE, - [318] = 2, - ACTIONS(84), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(82), 16, - ts_builtin_sym_end, - anon_sym_RBRACK, - anon_sym_COMMA, - anon_sym_RPAREN, + [398] = 7, + ACTIONS(88), 1, + anon_sym_AMP, + ACTIONS(90), 1, + anon_sym_PIPE, + ACTIONS(56), 2, anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(58), 2, anon_sym_STAR, anon_sym_SLASH, - anon_sym_PLUS, + ACTIONS(86), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(84), 4, anon_sym_GT_EQ, anon_sym_LT_EQ, anon_sym_EQ, anon_sym_LT_GT, - anon_sym_AMP, - anon_sym_PIPE, - anon_sym_SEMI, - anon_sym_RBRACE, - [341] = 2, - ACTIONS(88), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(86), 16, - ts_builtin_sym_end, - anon_sym_RBRACK, - anon_sym_COMMA, - anon_sym_RPAREN, - anon_sym_DASH, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - anon_sym_AMP, - anon_sym_PIPE, - anon_sym_SEMI, - anon_sym_RBRACE, - [364] = 7, - ACTIONS(54), 1, - anon_sym_AMP, - ACTIONS(56), 1, - anon_sym_PIPE, - ACTIONS(46), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(48), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(52), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(50), 4, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - ACTIONS(90), 6, + ACTIONS(82), 6, ts_builtin_sym_end, anon_sym_RBRACK, anon_sym_COMMA, anon_sym_RPAREN, anon_sym_SEMI, anon_sym_RBRACE, - [397] = 8, + [431] = 7, ACTIONS(3), 1, sym_identifier, ACTIONS(7), 1, @@ -1183,8 +1233,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(11), 1, anon_sym_DASH, - ACTIONS(94), 1, - anon_sym_RPAREN, ACTIONS(92), 2, sym_nil_literal, sym_integer_literal, @@ -1192,7 +1240,7 @@ static const uint16_t ts_small_parse_table[] = { sym__lvalue, sym_record_value, sym_array_value, - STATE(39), 8, + STATE(35), 9, sym__expr, sym_string_literal, sym_function_call, @@ -1201,164 +1249,190 @@ static const uint16_t ts_small_parse_table[] = { sym_sequence_expression, sym_array_expression, sym_record_expression, - [432] = 6, - ACTIONS(54), 1, - anon_sym_AMP, - ACTIONS(46), 2, + sym_assignment_expression, + [464] = 7, + ACTIONS(3), 1, + sym_identifier, + ACTIONS(7), 1, + anon_sym_DQUOTE, + ACTIONS(9), 1, + anon_sym_LPAREN, + ACTIONS(11), 1, anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(48), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(52), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(50), 4, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - ACTIONS(96), 7, - ts_builtin_sym_end, - anon_sym_RBRACK, - anon_sym_COMMA, - anon_sym_RPAREN, - anon_sym_PIPE, - anon_sym_SEMI, - anon_sym_RBRACE, - [463] = 5, - ACTIONS(46), 2, + ACTIONS(94), 2, + sym_nil_literal, + sym_integer_literal, + STATE(3), 3, + sym__lvalue, + sym_record_value, + sym_array_value, + STATE(36), 9, + sym__expr, + sym_string_literal, + sym_function_call, + sym_unary_expression, + sym_binary_expression, + sym_sequence_expression, + sym_array_expression, + sym_record_expression, + sym_assignment_expression, + [497] = 7, + ACTIONS(3), 1, + sym_identifier, + ACTIONS(7), 1, + anon_sym_DQUOTE, + ACTIONS(9), 1, + anon_sym_LPAREN, + ACTIONS(11), 1, anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(48), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(52), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(50), 4, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - ACTIONS(96), 8, - ts_builtin_sym_end, - anon_sym_RBRACK, - anon_sym_COMMA, - anon_sym_RPAREN, - anon_sym_AMP, - anon_sym_PIPE, - anon_sym_SEMI, - anon_sym_RBRACE, - [492] = 4, - ACTIONS(46), 2, + ACTIONS(96), 2, + sym_nil_literal, + sym_integer_literal, + STATE(3), 3, + sym__lvalue, + sym_record_value, + sym_array_value, + STATE(9), 9, + sym__expr, + sym_string_literal, + sym_function_call, + sym_unary_expression, + sym_binary_expression, + sym_sequence_expression, + sym_array_expression, + sym_record_expression, + sym_assignment_expression, + [530] = 7, + ACTIONS(3), 1, + sym_identifier, + ACTIONS(7), 1, + anon_sym_DQUOTE, + ACTIONS(9), 1, + anon_sym_LPAREN, + ACTIONS(11), 1, anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(48), 2, - anon_sym_STAR, - anon_sym_SLASH, ACTIONS(98), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(96), 12, - ts_builtin_sym_end, - anon_sym_RBRACK, - anon_sym_COMMA, - anon_sym_RPAREN, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - anon_sym_AMP, - anon_sym_PIPE, - anon_sym_SEMI, - anon_sym_RBRACE, - [519] = 2, - ACTIONS(98), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(96), 16, - ts_builtin_sym_end, - anon_sym_RBRACK, - anon_sym_COMMA, - anon_sym_RPAREN, + sym_nil_literal, + sym_integer_literal, + STATE(3), 3, + sym__lvalue, + sym_record_value, + sym_array_value, + STATE(38), 9, + sym__expr, + sym_string_literal, + sym_function_call, + sym_unary_expression, + sym_binary_expression, + sym_sequence_expression, + sym_array_expression, + sym_record_expression, + sym_assignment_expression, + [563] = 7, + ACTIONS(3), 1, + sym_identifier, + ACTIONS(7), 1, + anon_sym_DQUOTE, + ACTIONS(9), 1, + anon_sym_LPAREN, + ACTIONS(11), 1, anon_sym_DASH, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, + ACTIONS(100), 2, + sym_nil_literal, + sym_integer_literal, + STATE(3), 3, + sym__lvalue, + sym_record_value, + sym_array_value, + STATE(39), 9, + sym__expr, + sym_string_literal, + sym_function_call, + sym_unary_expression, + sym_binary_expression, + sym_sequence_expression, + sym_array_expression, + sym_record_expression, + sym_assignment_expression, + [596] = 7, + ACTIONS(88), 1, anon_sym_AMP, + ACTIONS(90), 1, anon_sym_PIPE, - anon_sym_SEMI, - anon_sym_RBRACE, - [542] = 3, - ACTIONS(48), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(98), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(96), 14, - ts_builtin_sym_end, - anon_sym_RBRACK, - anon_sym_COMMA, - anon_sym_RPAREN, + ACTIONS(56), 2, anon_sym_DASH, anon_sym_PLUS, + ACTIONS(58), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(86), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(84), 4, anon_sym_GT_EQ, anon_sym_LT_EQ, anon_sym_EQ, anon_sym_LT_GT, - anon_sym_AMP, - anon_sym_PIPE, - anon_sym_SEMI, - anon_sym_RBRACE, - [567] = 2, - ACTIONS(102), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(100), 16, + ACTIONS(102), 6, ts_builtin_sym_end, anon_sym_RBRACK, anon_sym_COMMA, anon_sym_RPAREN, - anon_sym_DASH, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - anon_sym_AMP, - anon_sym_PIPE, anon_sym_SEMI, anon_sym_RBRACE, - [590] = 2, + [629] = 7, + ACTIONS(3), 1, + sym_identifier, + ACTIONS(7), 1, + anon_sym_DQUOTE, + ACTIONS(9), 1, + anon_sym_LPAREN, + ACTIONS(11), 1, + anon_sym_DASH, + ACTIONS(104), 2, + sym_nil_literal, + sym_integer_literal, + STATE(3), 3, + sym__lvalue, + sym_record_value, + sym_array_value, + STATE(47), 9, + sym__expr, + sym_string_literal, + sym_function_call, + sym_unary_expression, + sym_binary_expression, + sym_sequence_expression, + sym_array_expression, + sym_record_expression, + sym_assignment_expression, + [662] = 7, + ACTIONS(3), 1, + sym_identifier, + ACTIONS(7), 1, + anon_sym_DQUOTE, + ACTIONS(9), 1, + anon_sym_LPAREN, + ACTIONS(11), 1, + anon_sym_DASH, ACTIONS(106), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(104), 16, - ts_builtin_sym_end, - anon_sym_RBRACK, - anon_sym_COMMA, - anon_sym_RPAREN, - anon_sym_DASH, - anon_sym_STAR, - anon_sym_SLASH, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - anon_sym_AMP, - anon_sym_PIPE, - anon_sym_SEMI, - anon_sym_RBRACE, - [613] = 2, + sym_nil_literal, + sym_integer_literal, + STATE(3), 3, + sym__lvalue, + sym_record_value, + sym_array_value, + STATE(40), 9, + sym__expr, + sym_string_literal, + sym_function_call, + sym_unary_expression, + sym_binary_expression, + sym_sequence_expression, + sym_array_expression, + sym_record_expression, + sym_assignment_expression, + [695] = 2, ACTIONS(110), 2, anon_sym_LT, anon_sym_GT, @@ -1379,57 +1453,28 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_SEMI, anon_sym_RBRACE, - [636] = 7, - ACTIONS(3), 1, - sym_identifier, - ACTIONS(7), 1, - anon_sym_DQUOTE, - ACTIONS(9), 1, - anon_sym_LPAREN, - ACTIONS(11), 1, - anon_sym_DASH, - ACTIONS(112), 2, - sym_nil_literal, - sym_integer_literal, - STATE(3), 3, - sym__lvalue, - sym_record_value, - sym_array_value, - STATE(22), 8, - sym__expr, - sym_string_literal, - sym_function_call, - sym_unary_expression, - sym_binary_expression, - sym_sequence_expression, - sym_array_expression, - sym_record_expression, - [668] = 7, - ACTIONS(3), 1, - sym_identifier, - ACTIONS(7), 1, - anon_sym_DQUOTE, - ACTIONS(9), 1, - anon_sym_LPAREN, - ACTIONS(11), 1, - anon_sym_DASH, + [718] = 2, ACTIONS(114), 2, - sym_nil_literal, - sym_integer_literal, - STATE(3), 3, - sym__lvalue, - sym_record_value, - sym_array_value, - STATE(41), 8, - sym__expr, - sym_string_literal, - sym_function_call, - sym_unary_expression, - sym_binary_expression, - sym_sequence_expression, - sym_array_expression, - sym_record_expression, - [700] = 7, + anon_sym_LT, + anon_sym_GT, + ACTIONS(112), 16, + ts_builtin_sym_end, + anon_sym_RBRACK, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + anon_sym_AMP, + anon_sym_PIPE, + anon_sym_SEMI, + anon_sym_RBRACE, + [741] = 7, ACTIONS(3), 1, sym_identifier, ACTIONS(7), 1, @@ -1445,7 +1490,7 @@ static const uint16_t ts_small_parse_table[] = { sym__lvalue, sym_record_value, sym_array_value, - STATE(43), 8, + STATE(22), 9, sym__expr, sym_string_literal, sym_function_call, @@ -1454,57 +1499,29 @@ static const uint16_t ts_small_parse_table[] = { sym_sequence_expression, sym_array_expression, sym_record_expression, - [732] = 7, - ACTIONS(3), 1, - sym_identifier, - ACTIONS(7), 1, - anon_sym_DQUOTE, - ACTIONS(9), 1, - anon_sym_LPAREN, - ACTIONS(11), 1, - anon_sym_DASH, - ACTIONS(118), 2, - sym_nil_literal, - sym_integer_literal, - STATE(3), 3, - sym__lvalue, - sym_record_value, - sym_array_value, - STATE(16), 8, - sym__expr, - sym_string_literal, - sym_function_call, - sym_unary_expression, - sym_binary_expression, - sym_sequence_expression, - sym_array_expression, - sym_record_expression, - [764] = 7, - ACTIONS(3), 1, - sym_identifier, - ACTIONS(7), 1, - anon_sym_DQUOTE, - ACTIONS(9), 1, - anon_sym_LPAREN, - ACTIONS(11), 1, - anon_sym_DASH, + sym_assignment_expression, + [774] = 2, ACTIONS(120), 2, - sym_nil_literal, - sym_integer_literal, - STATE(3), 3, - sym__lvalue, - sym_record_value, - sym_array_value, - STATE(7), 8, - sym__expr, - sym_string_literal, - sym_function_call, - sym_unary_expression, - sym_binary_expression, - sym_sequence_expression, - sym_array_expression, - sym_record_expression, - [796] = 7, + anon_sym_LT, + anon_sym_GT, + ACTIONS(118), 16, + ts_builtin_sym_end, + anon_sym_RBRACK, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + anon_sym_AMP, + anon_sym_PIPE, + anon_sym_SEMI, + anon_sym_RBRACE, + [797] = 7, ACTIONS(3), 1, sym_identifier, ACTIONS(7), 1, @@ -1520,7 +1537,7 @@ static const uint16_t ts_small_parse_table[] = { sym__lvalue, sym_record_value, sym_array_value, - STATE(46), 8, + STATE(16), 9, sym__expr, sym_string_literal, sym_function_call, @@ -1529,107 +1546,50 @@ static const uint16_t ts_small_parse_table[] = { sym_sequence_expression, sym_array_expression, sym_record_expression, - [828] = 7, - ACTIONS(3), 1, - sym_identifier, - ACTIONS(7), 1, - anon_sym_DQUOTE, - ACTIONS(9), 1, - anon_sym_LPAREN, - ACTIONS(11), 1, - anon_sym_DASH, - ACTIONS(124), 2, - sym_nil_literal, - sym_integer_literal, - STATE(3), 3, - sym__lvalue, - sym_record_value, - sym_array_value, - STATE(44), 8, - sym__expr, - sym_string_literal, - sym_function_call, - sym_unary_expression, - sym_binary_expression, - sym_sequence_expression, - sym_array_expression, - sym_record_expression, - [860] = 7, - ACTIONS(3), 1, - sym_identifier, - ACTIONS(7), 1, - anon_sym_DQUOTE, - ACTIONS(9), 1, - anon_sym_LPAREN, - ACTIONS(11), 1, - anon_sym_DASH, + sym_assignment_expression, + [830] = 2, ACTIONS(126), 2, - sym_nil_literal, - sym_integer_literal, - STATE(3), 3, - sym__lvalue, - sym_record_value, - sym_array_value, - STATE(42), 8, - sym__expr, - sym_string_literal, - sym_function_call, - sym_unary_expression, - sym_binary_expression, - sym_sequence_expression, - sym_array_expression, - sym_record_expression, - [892] = 7, - ACTIONS(3), 1, - sym_identifier, - ACTIONS(7), 1, - anon_sym_DQUOTE, - ACTIONS(9), 1, - anon_sym_LPAREN, - ACTIONS(11), 1, - anon_sym_DASH, - ACTIONS(128), 2, - sym_nil_literal, - sym_integer_literal, - STATE(3), 3, - sym__lvalue, - sym_record_value, - sym_array_value, - STATE(45), 8, - sym__expr, - sym_string_literal, - sym_function_call, - sym_unary_expression, - sym_binary_expression, - sym_sequence_expression, - sym_array_expression, - sym_record_expression, - [924] = 7, - ACTIONS(3), 1, - sym_identifier, - ACTIONS(7), 1, - anon_sym_DQUOTE, - ACTIONS(9), 1, - anon_sym_LPAREN, - ACTIONS(11), 1, + anon_sym_LT, + anon_sym_GT, + ACTIONS(124), 16, + ts_builtin_sym_end, + anon_sym_RBRACK, + anon_sym_COMMA, + anon_sym_RPAREN, anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + anon_sym_AMP, + anon_sym_PIPE, + anon_sym_SEMI, + anon_sym_RBRACE, + [853] = 2, ACTIONS(130), 2, - sym_nil_literal, - sym_integer_literal, - STATE(3), 3, - sym__lvalue, - sym_record_value, - sym_array_value, - STATE(21), 8, - sym__expr, - sym_string_literal, - sym_function_call, - sym_unary_expression, - sym_binary_expression, - sym_sequence_expression, - sym_array_expression, - sym_record_expression, - [956] = 7, + anon_sym_LT, + anon_sym_GT, + ACTIONS(128), 16, + ts_builtin_sym_end, + anon_sym_RBRACK, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + anon_sym_AMP, + anon_sym_PIPE, + anon_sym_SEMI, + anon_sym_RBRACE, + [876] = 7, ACTIONS(3), 1, sym_identifier, ACTIONS(7), 1, @@ -1645,7 +1605,7 @@ static const uint16_t ts_small_parse_table[] = { sym__lvalue, sym_record_value, sym_array_value, - STATE(18), 8, + STATE(43), 9, sym__expr, sym_string_literal, sym_function_call, @@ -1654,7 +1614,8 @@ static const uint16_t ts_small_parse_table[] = { sym_sequence_expression, sym_array_expression, sym_record_expression, - [988] = 7, + sym_assignment_expression, + [909] = 7, ACTIONS(3), 1, sym_identifier, ACTIONS(7), 1, @@ -1670,7 +1631,7 @@ static const uint16_t ts_small_parse_table[] = { sym__lvalue, sym_record_value, sym_array_value, - STATE(19), 8, + STATE(46), 9, sym__expr, sym_string_literal, sym_function_call, @@ -1679,7 +1640,72 @@ static const uint16_t ts_small_parse_table[] = { sym_sequence_expression, sym_array_expression, sym_record_expression, - [1020] = 7, + sym_assignment_expression, + [942] = 2, + ACTIONS(138), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(136), 16, + ts_builtin_sym_end, + anon_sym_RBRACK, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + anon_sym_AMP, + anon_sym_PIPE, + anon_sym_SEMI, + anon_sym_RBRACE, + [965] = 3, + ACTIONS(58), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(60), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(54), 14, + ts_builtin_sym_end, + anon_sym_RBRACK, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_DASH, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + anon_sym_AMP, + anon_sym_PIPE, + anon_sym_SEMI, + anon_sym_RBRACE, + [990] = 2, + ACTIONS(60), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(54), 16, + ts_builtin_sym_end, + anon_sym_RBRACK, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + anon_sym_AMP, + anon_sym_PIPE, + anon_sym_SEMI, + anon_sym_RBRACE, + [1013] = 7, ACTIONS(3), 1, sym_identifier, ACTIONS(7), 1, @@ -1688,14 +1714,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(11), 1, anon_sym_DASH, - ACTIONS(136), 2, + ACTIONS(140), 2, sym_nil_literal, sym_integer_literal, STATE(3), 3, sym__lvalue, sym_record_value, sym_array_value, - STATE(20), 8, + STATE(44), 9, sym__expr, sym_string_literal, sym_function_call, @@ -1704,469 +1730,546 @@ static const uint16_t ts_small_parse_table[] = { sym_sequence_expression, sym_array_expression, sym_record_expression, - [1052] = 9, - ACTIONS(54), 1, - anon_sym_AMP, - ACTIONS(56), 1, - anon_sym_PIPE, - ACTIONS(138), 1, - anon_sym_RPAREN, - ACTIONS(140), 1, - anon_sym_SEMI, - STATE(56), 1, - aux_sym_sequence_expression_repeat1, - ACTIONS(46), 2, + sym_assignment_expression, + [1046] = 5, + ACTIONS(56), 2, anon_sym_DASH, anon_sym_PLUS, - ACTIONS(48), 2, + ACTIONS(58), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(52), 2, + ACTIONS(86), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(50), 4, + ACTIONS(84), 4, anon_sym_GT_EQ, anon_sym_LT_EQ, anon_sym_EQ, anon_sym_LT_GT, - [1086] = 9, - ACTIONS(54), 1, - anon_sym_AMP, - ACTIONS(56), 1, - anon_sym_PIPE, - ACTIONS(142), 1, + ACTIONS(54), 8, + ts_builtin_sym_end, + anon_sym_RBRACK, anon_sym_COMMA, - ACTIONS(144), 1, anon_sym_RPAREN, - STATE(55), 1, - aux_sym_function_call_repeat1, - ACTIONS(46), 2, + anon_sym_AMP, + anon_sym_PIPE, + anon_sym_SEMI, + anon_sym_RBRACE, + [1075] = 6, + ACTIONS(88), 1, + anon_sym_AMP, + ACTIONS(56), 2, anon_sym_DASH, anon_sym_PLUS, - ACTIONS(48), 2, + ACTIONS(58), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(52), 2, + ACTIONS(86), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(50), 4, + ACTIONS(84), 4, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + ACTIONS(54), 7, + ts_builtin_sym_end, + anon_sym_RBRACK, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_PIPE, + anon_sym_SEMI, + anon_sym_RBRACE, + [1106] = 2, + ACTIONS(144), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(142), 16, + ts_builtin_sym_end, + anon_sym_RBRACK, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + anon_sym_PLUS, anon_sym_GT_EQ, anon_sym_LT_EQ, anon_sym_EQ, anon_sym_LT_GT, - [1120] = 9, - ACTIONS(54), 1, anon_sym_AMP, - ACTIONS(56), 1, + anon_sym_PIPE, + anon_sym_SEMI, + anon_sym_RBRACE, + [1129] = 9, + ACTIONS(88), 1, + anon_sym_AMP, + ACTIONS(90), 1, anon_sym_PIPE, ACTIONS(146), 1, anon_sym_COMMA, ACTIONS(148), 1, - anon_sym_RBRACE, - STATE(53), 1, - aux_sym_record_expression_repeat1, - ACTIONS(46), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(48), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(52), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(50), 4, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - [1154] = 7, - ACTIONS(54), 1, - anon_sym_AMP, - ACTIONS(56), 1, - anon_sym_PIPE, - ACTIONS(46), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(48), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(52), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(150), 2, - anon_sym_COMMA, anon_sym_RPAREN, - ACTIONS(50), 4, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - [1183] = 7, - ACTIONS(54), 1, - anon_sym_AMP, - ACTIONS(56), 1, - anon_sym_PIPE, - ACTIONS(46), 2, + STATE(55), 1, + aux_sym_function_call_repeat1, + ACTIONS(56), 2, anon_sym_DASH, anon_sym_PLUS, - ACTIONS(48), 2, + ACTIONS(58), 2, anon_sym_STAR, anon_sym_SLASH, - ACTIONS(52), 2, + ACTIONS(86), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(152), 2, - anon_sym_COMMA, - anon_sym_RBRACE, - ACTIONS(50), 4, + ACTIONS(84), 4, anon_sym_GT_EQ, anon_sym_LT_EQ, anon_sym_EQ, anon_sym_LT_GT, - [1212] = 7, - ACTIONS(54), 1, + [1163] = 9, + ACTIONS(88), 1, anon_sym_AMP, - ACTIONS(56), 1, + ACTIONS(90), 1, anon_sym_PIPE, - ACTIONS(46), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(48), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(52), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(154), 2, - anon_sym_RPAREN, - anon_sym_SEMI, - ACTIONS(50), 4, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - [1241] = 7, - ACTIONS(54), 1, - anon_sym_AMP, - ACTIONS(56), 1, - anon_sym_PIPE, - ACTIONS(156), 1, - anon_sym_RBRACK, - ACTIONS(46), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(48), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(52), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(50), 4, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - [1269] = 7, - ACTIONS(54), 1, - anon_sym_AMP, - ACTIONS(56), 1, - anon_sym_PIPE, - ACTIONS(158), 1, - anon_sym_RBRACK, - ACTIONS(46), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(48), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(52), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(50), 4, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - [1297] = 7, - ACTIONS(54), 1, - anon_sym_AMP, - ACTIONS(56), 1, - anon_sym_PIPE, - ACTIONS(160), 1, - ts_builtin_sym_end, - ACTIONS(46), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(48), 2, - anon_sym_STAR, - anon_sym_SLASH, - ACTIONS(52), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(50), 4, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ, - anon_sym_LT_GT, - [1325] = 3, - ACTIONS(162), 1, - anon_sym_DQUOTE, - STATE(48), 1, - aux_sym_string_literal_repeat1, - ACTIONS(164), 2, - aux_sym_string_literal_token1, - sym_escape_sequence, - [1336] = 3, - ACTIONS(167), 1, - anon_sym_DQUOTE, - STATE(50), 1, - aux_sym_string_literal_repeat1, - ACTIONS(169), 2, - aux_sym_string_literal_token1, - sym_escape_sequence, - [1347] = 3, - ACTIONS(171), 1, - anon_sym_DQUOTE, - STATE(48), 1, - aux_sym_string_literal_repeat1, - ACTIONS(173), 2, - aux_sym_string_literal_token1, - sym_escape_sequence, - [1358] = 3, - ACTIONS(154), 1, - anon_sym_RPAREN, - ACTIONS(175), 1, - anon_sym_SEMI, - STATE(51), 1, - aux_sym_sequence_expression_repeat1, - [1368] = 3, ACTIONS(150), 1, anon_sym_RPAREN, - ACTIONS(178), 1, - anon_sym_COMMA, - STATE(52), 1, - aux_sym_function_call_repeat1, - [1378] = 3, - ACTIONS(146), 1, - anon_sym_COMMA, - ACTIONS(181), 1, - anon_sym_RBRACE, + ACTIONS(152), 1, + anon_sym_SEMI, STATE(54), 1, + aux_sym_sequence_expression_repeat1, + ACTIONS(56), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(58), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(86), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(84), 4, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + [1197] = 9, + ACTIONS(88), 1, + anon_sym_AMP, + ACTIONS(90), 1, + anon_sym_PIPE, + ACTIONS(154), 1, + anon_sym_COMMA, + ACTIONS(156), 1, + anon_sym_RBRACE, + STATE(56), 1, aux_sym_record_expression_repeat1, - [1388] = 3, + ACTIONS(56), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(58), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(86), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(84), 4, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + [1231] = 7, + ACTIONS(88), 1, + anon_sym_AMP, + ACTIONS(90), 1, + anon_sym_PIPE, + ACTIONS(56), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(58), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(86), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(158), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + ACTIONS(84), 4, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + [1260] = 7, + ACTIONS(88), 1, + anon_sym_AMP, + ACTIONS(90), 1, + anon_sym_PIPE, + ACTIONS(56), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(58), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(86), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(160), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + ACTIONS(84), 4, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + [1289] = 7, + ACTIONS(88), 1, + anon_sym_AMP, + ACTIONS(90), 1, + anon_sym_PIPE, + ACTIONS(56), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(58), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(86), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(162), 2, + anon_sym_RPAREN, + anon_sym_SEMI, + ACTIONS(84), 4, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + [1318] = 7, + ACTIONS(88), 1, + anon_sym_AMP, + ACTIONS(90), 1, + anon_sym_PIPE, + ACTIONS(164), 1, + anon_sym_RBRACK, + ACTIONS(56), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(58), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(86), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(84), 4, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + [1346] = 7, + ACTIONS(88), 1, + anon_sym_AMP, + ACTIONS(90), 1, + anon_sym_PIPE, + ACTIONS(166), 1, + ts_builtin_sym_end, + ACTIONS(56), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(58), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(86), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(84), 4, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + [1374] = 7, + ACTIONS(88), 1, + anon_sym_AMP, + ACTIONS(90), 1, + anon_sym_PIPE, + ACTIONS(168), 1, + anon_sym_RBRACK, + ACTIONS(56), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(58), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(86), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(84), 4, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ, + anon_sym_LT_GT, + [1402] = 3, + ACTIONS(170), 1, + anon_sym_DQUOTE, + STATE(51), 1, + aux_sym_string_literal_repeat1, + ACTIONS(172), 2, + aux_sym_string_literal_token1, + sym_escape_sequence, + [1413] = 3, + ACTIONS(174), 1, + anon_sym_DQUOTE, + STATE(52), 1, + aux_sym_string_literal_repeat1, + ACTIONS(176), 2, + aux_sym_string_literal_token1, + sym_escape_sequence, + [1424] = 3, + ACTIONS(178), 1, + anon_sym_DQUOTE, + STATE(52), 1, + aux_sym_string_literal_repeat1, + ACTIONS(180), 2, + aux_sym_string_literal_token1, + sym_escape_sequence, + [1435] = 3, + ACTIONS(158), 1, + anon_sym_RPAREN, ACTIONS(183), 1, anon_sym_COMMA, + STATE(53), 1, + aux_sym_function_call_repeat1, + [1445] = 3, + ACTIONS(152), 1, + anon_sym_SEMI, ACTIONS(186), 1, - anon_sym_RBRACE, - STATE(54), 1, - aux_sym_record_expression_repeat1, - [1398] = 3, - ACTIONS(142), 1, + anon_sym_RPAREN, + STATE(58), 1, + aux_sym_sequence_expression_repeat1, + [1455] = 3, + ACTIONS(146), 1, anon_sym_COMMA, ACTIONS(188), 1, anon_sym_RPAREN, - STATE(52), 1, + STATE(53), 1, aux_sym_function_call_repeat1, - [1408] = 3, - ACTIONS(140), 1, - anon_sym_SEMI, + [1465] = 3, + ACTIONS(154), 1, + anon_sym_COMMA, ACTIONS(190), 1, - anon_sym_RPAREN, - STATE(51), 1, - aux_sym_sequence_expression_repeat1, - [1418] = 2, - ACTIONS(192), 1, - sym_identifier, - ACTIONS(194), 1, anon_sym_RBRACE, - [1425] = 1, - ACTIONS(196), 1, - anon_sym_EQ, - [1429] = 1, - ACTIONS(198), 1, - anon_sym_of, - [1433] = 1, + STATE(57), 1, + aux_sym_record_expression_repeat1, + [1475] = 3, + ACTIONS(192), 1, + anon_sym_COMMA, + ACTIONS(195), 1, + anon_sym_RBRACE, + STATE(57), 1, + aux_sym_record_expression_repeat1, + [1485] = 3, + ACTIONS(162), 1, + anon_sym_RPAREN, + ACTIONS(197), 1, + anon_sym_SEMI, + STATE(58), 1, + aux_sym_sequence_expression_repeat1, + [1495] = 2, ACTIONS(200), 1, sym_identifier, - [1437] = 1, ACTIONS(202), 1, - ts_builtin_sym_end, - [1441] = 1, + anon_sym_RBRACE, + [1502] = 1, ACTIONS(204), 1, - anon_sym_EQ, - [1445] = 1, + ts_builtin_sym_end, + [1506] = 1, ACTIONS(206), 1, sym_identifier, + [1510] = 1, + ACTIONS(208), 1, + sym_identifier, + [1514] = 1, + ACTIONS(210), 1, + anon_sym_of, + [1518] = 1, + ACTIONS(212), 1, + anon_sym_EQ, + [1522] = 1, + ACTIONS(214), 1, + anon_sym_EQ, }; static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(2)] = 0, - [SMALL_STATE(3)] = 33, - [SMALL_STATE(4)] = 62, - [SMALL_STATE(5)] = 87, - [SMALL_STATE(6)] = 112, - [SMALL_STATE(7)] = 147, - [SMALL_STATE(8)] = 180, - [SMALL_STATE(9)] = 203, - [SMALL_STATE(10)] = 226, - [SMALL_STATE(11)] = 249, - [SMALL_STATE(12)] = 272, - [SMALL_STATE(13)] = 295, - [SMALL_STATE(14)] = 318, - [SMALL_STATE(15)] = 341, - [SMALL_STATE(16)] = 364, - [SMALL_STATE(17)] = 397, - [SMALL_STATE(18)] = 432, - [SMALL_STATE(19)] = 463, - [SMALL_STATE(20)] = 492, - [SMALL_STATE(21)] = 519, - [SMALL_STATE(22)] = 542, - [SMALL_STATE(23)] = 567, - [SMALL_STATE(24)] = 590, - [SMALL_STATE(25)] = 613, - [SMALL_STATE(26)] = 636, - [SMALL_STATE(27)] = 668, - [SMALL_STATE(28)] = 700, - [SMALL_STATE(29)] = 732, - [SMALL_STATE(30)] = 764, - [SMALL_STATE(31)] = 796, - [SMALL_STATE(32)] = 828, - [SMALL_STATE(33)] = 860, - [SMALL_STATE(34)] = 892, - [SMALL_STATE(35)] = 924, - [SMALL_STATE(36)] = 956, - [SMALL_STATE(37)] = 988, - [SMALL_STATE(38)] = 1020, - [SMALL_STATE(39)] = 1052, - [SMALL_STATE(40)] = 1086, - [SMALL_STATE(41)] = 1120, - [SMALL_STATE(42)] = 1154, - [SMALL_STATE(43)] = 1183, - [SMALL_STATE(44)] = 1212, - [SMALL_STATE(45)] = 1241, - [SMALL_STATE(46)] = 1269, - [SMALL_STATE(47)] = 1297, - [SMALL_STATE(48)] = 1325, - [SMALL_STATE(49)] = 1336, - [SMALL_STATE(50)] = 1347, - [SMALL_STATE(51)] = 1358, - [SMALL_STATE(52)] = 1368, - [SMALL_STATE(53)] = 1378, - [SMALL_STATE(54)] = 1388, - [SMALL_STATE(55)] = 1398, - [SMALL_STATE(56)] = 1408, - [SMALL_STATE(57)] = 1418, - [SMALL_STATE(58)] = 1425, - [SMALL_STATE(59)] = 1429, - [SMALL_STATE(60)] = 1433, - [SMALL_STATE(61)] = 1437, - [SMALL_STATE(62)] = 1441, - [SMALL_STATE(63)] = 1445, + [SMALL_STATE(3)] = 34, + [SMALL_STATE(4)] = 66, + [SMALL_STATE(5)] = 92, + [SMALL_STATE(6)] = 118, + [SMALL_STATE(7)] = 154, + [SMALL_STATE(8)] = 190, + [SMALL_STATE(9)] = 213, + [SMALL_STATE(10)] = 240, + [SMALL_STATE(11)] = 263, + [SMALL_STATE(12)] = 296, + [SMALL_STATE(13)] = 329, + [SMALL_STATE(14)] = 352, + [SMALL_STATE(15)] = 375, + [SMALL_STATE(16)] = 398, + [SMALL_STATE(17)] = 431, + [SMALL_STATE(18)] = 464, + [SMALL_STATE(19)] = 497, + [SMALL_STATE(20)] = 530, + [SMALL_STATE(21)] = 563, + [SMALL_STATE(22)] = 596, + [SMALL_STATE(23)] = 629, + [SMALL_STATE(24)] = 662, + [SMALL_STATE(25)] = 695, + [SMALL_STATE(26)] = 718, + [SMALL_STATE(27)] = 741, + [SMALL_STATE(28)] = 774, + [SMALL_STATE(29)] = 797, + [SMALL_STATE(30)] = 830, + [SMALL_STATE(31)] = 853, + [SMALL_STATE(32)] = 876, + [SMALL_STATE(33)] = 909, + [SMALL_STATE(34)] = 942, + [SMALL_STATE(35)] = 965, + [SMALL_STATE(36)] = 990, + [SMALL_STATE(37)] = 1013, + [SMALL_STATE(38)] = 1046, + [SMALL_STATE(39)] = 1075, + [SMALL_STATE(40)] = 1106, + [SMALL_STATE(41)] = 1129, + [SMALL_STATE(42)] = 1163, + [SMALL_STATE(43)] = 1197, + [SMALL_STATE(44)] = 1231, + [SMALL_STATE(45)] = 1260, + [SMALL_STATE(46)] = 1289, + [SMALL_STATE(47)] = 1318, + [SMALL_STATE(48)] = 1346, + [SMALL_STATE(49)] = 1374, + [SMALL_STATE(50)] = 1402, + [SMALL_STATE(51)] = 1413, + [SMALL_STATE(52)] = 1424, + [SMALL_STATE(53)] = 1435, + [SMALL_STATE(54)] = 1445, + [SMALL_STATE(55)] = 1455, + [SMALL_STATE(56)] = 1465, + [SMALL_STATE(57)] = 1475, + [SMALL_STATE(58)] = 1485, + [SMALL_STATE(59)] = 1495, + [SMALL_STATE(60)] = 1502, + [SMALL_STATE(61)] = 1506, + [SMALL_STATE(62)] = 1510, + [SMALL_STATE(63)] = 1514, + [SMALL_STATE(64)] = 1518, + [SMALL_STATE(65)] = 1522, }; static const TSParseActionEntry ts_parse_actions[] = { [0] = {.entry = {.count = 0, .reusable = false}}, [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), [3] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2), - [5] = {.entry = {.count = 1, .reusable = false}}, SHIFT(47), - [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), - [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [5] = {.entry = {.count = 1, .reusable = false}}, SHIFT(48), + [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), + [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), [13] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__lvalue, 1), - [15] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym__lvalue, 1), SHIFT(31), - [18] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [15] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym__lvalue, 1), SHIFT(12), + [18] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), [20] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__lvalue, 1), - [22] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [22] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), [24] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr, 1), - [26] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), - [28] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [26] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), + [28] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), [30] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expr, 1), - [32] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_value, 3, .production_id = 5), - [34] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record_value, 3, .production_id = 5), - [36] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_value, 4, .production_id = 7), - [38] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array_value, 4, .production_id = 7), - [40] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40), - [42] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), - [44] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_expression, 6, .production_id = 9), - [46] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), - [48] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), - [50] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), - [52] = {.entry = {.count = 1, .reusable = false}}, SHIFT(38), - [54] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), - [56] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), - [58] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 5, .production_id = 8), - [60] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 5, .production_id = 8), + [32] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [34] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_value, 4, .production_id = 8), + [36] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array_value, 4, .production_id = 8), + [38] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_value, 3, .production_id = 5), + [40] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record_value, 3, .production_id = 5), + [42] = {.entry = {.count = 1, .reusable = false}}, SHIFT(42), + [44] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [46] = {.entry = {.count = 1, .reusable = false}}, SHIFT(41), + [48] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [50] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_sequence_expression, 3), + [52] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_sequence_expression, 3), + [54] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_expression, 3, .production_id = 4), + [56] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [58] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [60] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_expression, 3, .production_id = 4), [62] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_literal, 2), [64] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_literal, 2), - [66] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_expression, 7, .production_id = 11), - [68] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record_expression, 7, .production_id = 11), - [70] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_sequence_expression, 4), - [72] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_sequence_expression, 4), - [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_expression, 3, .production_id = 3), - [76] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record_expression, 3, .production_id = 3), - [78] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 4, .production_id = 6), - [80] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 4, .production_id = 6), - [82] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_sequence_expression, 2), - [84] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_sequence_expression, 2), - [86] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_expression, 6, .production_id = 10), - [88] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record_expression, 6, .production_id = 10), - [90] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_expression, 2, .production_id = 1), - [92] = {.entry = {.count = 1, .reusable = false}}, SHIFT(39), - [94] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), - [96] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_expression, 3, .production_id = 4), - [98] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_expression, 3, .production_id = 4), - [100] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_sequence_expression, 3), - [102] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_sequence_expression, 3), - [104] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_literal, 3), - [106] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_literal, 3), - [108] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 3, .production_id = 2), - [110] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 3, .production_id = 2), - [112] = {.entry = {.count = 1, .reusable = false}}, SHIFT(22), - [114] = {.entry = {.count = 1, .reusable = false}}, SHIFT(41), - [116] = {.entry = {.count = 1, .reusable = false}}, SHIFT(43), - [118] = {.entry = {.count = 1, .reusable = false}}, SHIFT(16), - [120] = {.entry = {.count = 1, .reusable = false}}, SHIFT(7), - [122] = {.entry = {.count = 1, .reusable = false}}, SHIFT(46), - [124] = {.entry = {.count = 1, .reusable = false}}, SHIFT(44), - [126] = {.entry = {.count = 1, .reusable = false}}, SHIFT(42), - [128] = {.entry = {.count = 1, .reusable = false}}, SHIFT(45), - [130] = {.entry = {.count = 1, .reusable = false}}, SHIFT(21), - [132] = {.entry = {.count = 1, .reusable = false}}, SHIFT(18), - [134] = {.entry = {.count = 1, .reusable = false}}, SHIFT(19), - [136] = {.entry = {.count = 1, .reusable = false}}, SHIFT(20), - [138] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), - [142] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), - [144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), - [146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), - [148] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [150] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_function_call_repeat1, 2), - [152] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_record_expression_repeat1, 4, .production_id = 13), - [154] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_sequence_expression_repeat1, 2), - [156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), - [158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), - [160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), - [162] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_literal_repeat1, 2), - [164] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_literal_repeat1, 2), SHIFT_REPEAT(48), - [167] = {.entry = {.count = 1, .reusable = false}}, SHIFT(9), - [169] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), - [171] = {.entry = {.count = 1, .reusable = false}}, SHIFT(24), - [173] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), - [175] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_sequence_expression_repeat1, 2), SHIFT_REPEAT(32), - [178] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_function_call_repeat1, 2), SHIFT_REPEAT(33), - [181] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), - [183] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_record_expression_repeat1, 2, .production_id = 12), SHIFT_REPEAT(60), - [186] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_record_expression_repeat1, 2, .production_id = 12), - [188] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), - [190] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), - [192] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), - [194] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), - [196] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [198] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), - [200] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), - [202] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [204] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), - [206] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [66] = {.entry = {.count = 1, .reusable = false}}, SHIFT(45), + [68] = {.entry = {.count = 1, .reusable = false}}, SHIFT(49), + [70] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_expression, 7, .production_id = 12), + [72] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record_expression, 7, .production_id = 12), + [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_sequence_expression, 2), + [76] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_sequence_expression, 2), + [78] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_expression, 6, .production_id = 11), + [80] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record_expression, 6, .production_id = 11), + [82] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_expression, 2, .production_id = 1), + [84] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), + [86] = {.entry = {.count = 1, .reusable = false}}, SHIFT(19), + [88] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), + [90] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [92] = {.entry = {.count = 1, .reusable = false}}, SHIFT(35), + [94] = {.entry = {.count = 1, .reusable = false}}, SHIFT(36), + [96] = {.entry = {.count = 1, .reusable = false}}, SHIFT(9), + [98] = {.entry = {.count = 1, .reusable = false}}, SHIFT(38), + [100] = {.entry = {.count = 1, .reusable = false}}, SHIFT(39), + [102] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_expression, 6, .production_id = 10), + [104] = {.entry = {.count = 1, .reusable = false}}, SHIFT(47), + [106] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40), + [108] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_literal, 3), + [110] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_literal, 3), + [112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 5, .production_id = 9), + [114] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 5, .production_id = 9), + [116] = {.entry = {.count = 1, .reusable = false}}, SHIFT(22), + [118] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 3, .production_id = 2), + [120] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 3, .production_id = 2), + [122] = {.entry = {.count = 1, .reusable = false}}, SHIFT(16), + [124] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_sequence_expression, 4), + [126] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_sequence_expression, 4), + [128] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_expression, 3, .production_id = 3), + [130] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_record_expression, 3, .production_id = 3), + [132] = {.entry = {.count = 1, .reusable = false}}, SHIFT(43), + [134] = {.entry = {.count = 1, .reusable = false}}, SHIFT(46), + [136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 4, .production_id = 7), + [138] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 4, .production_id = 7), + [140] = {.entry = {.count = 1, .reusable = false}}, SHIFT(44), + [142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment_expression, 3, .production_id = 6), + [144] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment_expression, 3, .production_id = 6), + [146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [148] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [150] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), + [156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [158] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_function_call_repeat1, 2), + [160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_record_expression_repeat1, 4, .production_id = 14), + [162] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_sequence_expression_repeat1, 2), + [164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [166] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), + [168] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), + [170] = {.entry = {.count = 1, .reusable = false}}, SHIFT(10), + [172] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [174] = {.entry = {.count = 1, .reusable = false}}, SHIFT(25), + [176] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_literal_repeat1, 2), + [180] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_literal_repeat1, 2), SHIFT_REPEAT(52), + [183] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_function_call_repeat1, 2), SHIFT_REPEAT(37), + [186] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [188] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [190] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [192] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_record_expression_repeat1, 2, .production_id = 13), SHIFT_REPEAT(62), + [195] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_record_expression_repeat1, 2, .production_id = 13), + [197] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_sequence_expression_repeat1, 2), SHIFT_REPEAT(33), + [200] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), + [202] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [204] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [206] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), + [208] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), + [210] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [212] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), + [214] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), }; #ifdef __cplusplus diff --git a/test/corpus/expressions.txt b/test/corpus/expressions.txt index 5a5ee43..99f9856 100644 --- a/test/corpus/expressions.txt +++ b/test/corpus/expressions.txt @@ -138,3 +138,22 @@ f(12,) function: (identifier) arguments: (integer_literal) (ERROR))) + +================================================================================ +Assignments +================================================================================ + +a := array[12] := record.field + +-------------------------------------------------------------------------------- + +(source_file + (assignment_expression + left: (identifier) + right: (assignment_expression + left: (array_value + array: (identifier) + index: (integer_literal)) + right: (record_value + record: (identifier) + field: (identifier)))))