From b9d0a6a7d2cd85e2b649cad8f06393ba8d2f7c1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20L=2E=20Charlier?= Date: Wed, 12 Aug 2026 18:11:43 +0200 Subject: [PATCH 1/2] feat: unify record access syntax --- README.md | 8 + grammar.js | 19 +- src/grammar.json | 72 +- src/node-types.json | 65 +- src/parser.c | 1766 +++++++++++++++++-------------- test/corpus/compound_values.txt | 16 +- test/corpus/invalid.txt | 23 +- test/corpus/references.txt | 152 ++- 8 files changed, 1266 insertions(+), 855 deletions(-) diff --git a/README.md b/README.md index 05c52fe..c3e118b 100644 --- a/README.md +++ b/README.md @@ -64,12 +64,20 @@ Expressif distinguishes record fields from elements of ordered values: ```text .name named field of the current record .0 positional field of the current record +^.name named field of the original immutable input record +^.0 positional field of the original immutable input record $0 first element of the current tuple or array $1 second element of the current tuple or array $^0 last element of the current tuple or array $^1 second-to-last element of the current tuple or array ``` +Record access always uses `.` for navigation. A leading `^` changes the root +from the current pipeline value to the original immutable input; it does not +change how fields are selected. Access can be chained for nested records, for +example `.customer.address` or `^.customer.0`. The former bracket forms +`[name]` and `[0]` are replaced by `^.name` and `^.0` respectively. + Element positions are zero-based. `$n` counts from the beginning and `$^n` counts from the end. The parser represents both tuple and array access with the same `positional_element_access` node; downstream binders decide whether the diff --git a/grammar.js b/grammar.js index fe489d8..cf0b462 100644 --- a/grammar.js +++ b/grammar.js @@ -52,8 +52,7 @@ export default grammar({ value: ($) => choice( $.variable, - $.property_reference, - $.index_reference, + $.record_access, $.positional_element_access, $.numeric_literal, $.boolean_literal, @@ -108,9 +107,21 @@ export default grammar({ variable: (_) => /@[A-Za-z][A-Za-z0-9]*/, - property_reference: (_) => /\[[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*\]/, + record_access: ($) => seq( + optional(field("root", $.original_input)), + repeat1(seq(".", field("field", $.record_field_selector))), + ), + + original_input: (_) => "^", + + record_field_selector: ($) => choice( + $.named_record_field, + $.positional_record_field, + ), + + named_record_field: (_) => /[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*/, - index_reference: (_) => /\[(?:0|[1-9][0-9]*)\]/, + positional_record_field: (_) => /(?:0|[1-9][0-9]*)/, positional_element_access: (_) => /\$\^?(?:0|[1-9][0-9]*)/, diff --git a/src/grammar.json b/src/grammar.json index a22de35..099da44 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -182,11 +182,7 @@ }, { "type": "SYMBOL", - "name": "property_reference" - }, - { - "type": "SYMBOL", - "name": "index_reference" + "name": "record_access" }, { "type": "SYMBOL", @@ -422,13 +418,71 @@ "type": "PATTERN", "value": "@[A-Za-z][A-Za-z0-9]*" }, - "property_reference": { + "record_access": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "root", + "content": { + "type": "SYMBOL", + "name": "original_input" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "REPEAT1", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "." + }, + { + "type": "FIELD", + "name": "field", + "content": { + "type": "SYMBOL", + "name": "record_field_selector" + } + } + ] + } + } + ] + }, + "original_input": { + "type": "STRING", + "value": "^" + }, + "record_field_selector": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "named_record_field" + }, + { + "type": "SYMBOL", + "name": "positional_record_field" + } + ] + }, + "named_record_field": { "type": "PATTERN", - "value": "\\[[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*\\]" + "value": "[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*" }, - "index_reference": { + "positional_record_field": { "type": "PATTERN", - "value": "\\[(?:0|[1-9][0-9]*)\\]" + "value": "(?:0|[1-9][0-9]*)" }, "positional_element_access": { "type": "PATTERN", diff --git a/src/node-types.json b/src/node-types.json index abaf8e9..12f1b68 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -53,10 +53,6 @@ "type": "boolean_literal", "named": true }, - { - "type": "index_reference", - "named": true - }, { "type": "numeric_literal", "named": true @@ -66,11 +62,11 @@ "named": true }, { - "type": "property_reference", + "type": "quoted_literal", "named": true }, { - "type": "quoted_literal", + "type": "record_access", "named": true }, { @@ -235,6 +231,32 @@ ] } }, + { + "type": "record_access", + "named": true, + "fields": { + "field": { + "multiple": true, + "required": true, + "types": [ + { + "type": "record_field_selector", + "named": true + } + ] + }, + "root": { + "multiple": false, + "required": false, + "types": [ + { + "type": "original_input", + "named": true + } + ] + } + } + }, { "type": "record_field", "named": true, @@ -284,6 +306,25 @@ ] } }, + { + "type": "record_field_selector", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "named_record_field", + "named": true + }, + { + "type": "positional_record_field", + "named": true + } + ] + } + }, { "type": "record_literal", "named": true, @@ -373,6 +414,10 @@ "type": ",", "named": false }, + { + "type": ".", + "named": false + }, { "type": ":", "named": false @@ -414,19 +459,23 @@ "named": true }, { - "type": "index_reference", + "type": "named_record_field", "named": true }, { "type": "numeric_literal", "named": true }, + { + "type": "original_input", + "named": true + }, { "type": "positional_element_access", "named": true }, { - "type": "property_reference", + "type": "positional_record_field", "named": true }, { diff --git a/src/parser.c b/src/parser.c index f0e9240..bd4c985 100644 --- a/src/parser.c +++ b/src/parser.c @@ -7,16 +7,16 @@ #endif #define LANGUAGE_VERSION 15 -#define STATE_COUNT 69 -#define LARGE_STATE_COUNT 4 -#define SYMBOL_COUNT 51 +#define STATE_COUNT 76 +#define LARGE_STATE_COUNT 3 +#define SYMBOL_COUNT 56 #define ALIAS_COUNT 0 -#define TOKEN_COUNT 27 +#define TOKEN_COUNT 29 #define EXTERNAL_TOKEN_COUNT 0 -#define FIELD_COUNT 2 +#define FIELD_COUNT 4 #define MAX_ALIAS_SEQUENCE_LENGTH 7 #define MAX_RESERVED_WORD_SET_SIZE 0 -#define PRODUCTION_ID_COUNT 3 +#define PRODUCTION_ID_COUNT 7 #define SUPERTYPE_COUNT 4 enum ts_symbol_identifiers { @@ -33,43 +33,48 @@ enum ts_symbol_identifiers { sym_unquoted_record_field_name = 11, sym_numeric_literal = 12, sym_variable = 13, - sym_property_reference = 14, - sym_index_reference = 15, - sym_positional_element_access = 16, - anon_sym_POUNDtrue = 17, - anon_sym_POUNDfalse = 18, - anon_sym_DQUOTE = 19, - sym_double_quoted_content = 20, - sym_escape_sequence = 21, - anon_sym_BQUOTE = 22, - sym_backtick_quoted_content = 23, - sym_date_literal = 24, - sym_date_time_literal = 25, - sym_time_literal = 26, - sym_source_file = 27, - sym_root_expression = 28, - sym_open_expression = 29, - sym_closed_expression = 30, - sym_expression = 31, - sym_function_call = 32, - sym_argument_list = 33, - sym_positional_argument = 34, - sym_value = 35, - sym_array_literal = 36, - sym_tuple_literal = 37, - sym_record_literal = 38, - sym_record_field = 39, - sym_record_field_name = 40, - sym_boolean_literal = 41, - sym_quoted_literal = 42, - sym_double_quoted_literal = 43, - sym_backtick_quoted_literal = 44, - sym_temporal_literal = 45, - aux_sym_open_expression_repeat1 = 46, - aux_sym_argument_list_repeat1 = 47, - aux_sym_array_literal_repeat1 = 48, - aux_sym_record_literal_repeat1 = 49, - aux_sym_double_quoted_literal_repeat1 = 50, + anon_sym_DOT = 14, + sym_original_input = 15, + sym_named_record_field = 16, + sym_positional_record_field = 17, + sym_positional_element_access = 18, + anon_sym_POUNDtrue = 19, + anon_sym_POUNDfalse = 20, + anon_sym_DQUOTE = 21, + sym_double_quoted_content = 22, + sym_escape_sequence = 23, + anon_sym_BQUOTE = 24, + sym_backtick_quoted_content = 25, + sym_date_literal = 26, + sym_date_time_literal = 27, + sym_time_literal = 28, + sym_source_file = 29, + sym_root_expression = 30, + sym_open_expression = 31, + sym_closed_expression = 32, + sym_expression = 33, + sym_function_call = 34, + sym_argument_list = 35, + sym_positional_argument = 36, + sym_value = 37, + sym_array_literal = 38, + sym_tuple_literal = 39, + sym_record_literal = 40, + sym_record_field = 41, + sym_record_field_name = 42, + sym_record_access = 43, + sym_record_field_selector = 44, + sym_boolean_literal = 45, + sym_quoted_literal = 46, + sym_double_quoted_literal = 47, + sym_backtick_quoted_literal = 48, + sym_temporal_literal = 49, + aux_sym_open_expression_repeat1 = 50, + aux_sym_argument_list_repeat1 = 51, + aux_sym_array_literal_repeat1 = 52, + aux_sym_record_literal_repeat1 = 53, + aux_sym_record_access_repeat1 = 54, + aux_sym_double_quoted_literal_repeat1 = 55, }; static const char * const ts_symbol_names[] = { @@ -87,8 +92,10 @@ static const char * const ts_symbol_names[] = { [sym_unquoted_record_field_name] = "unquoted_record_field_name", [sym_numeric_literal] = "numeric_literal", [sym_variable] = "variable", - [sym_property_reference] = "property_reference", - [sym_index_reference] = "index_reference", + [anon_sym_DOT] = ".", + [sym_original_input] = "original_input", + [sym_named_record_field] = "named_record_field", + [sym_positional_record_field] = "positional_record_field", [sym_positional_element_access] = "positional_element_access", [anon_sym_POUNDtrue] = "#true", [anon_sym_POUNDfalse] = "#false", @@ -114,6 +121,8 @@ static const char * const ts_symbol_names[] = { [sym_record_literal] = "record_literal", [sym_record_field] = "record_field", [sym_record_field_name] = "record_field_name", + [sym_record_access] = "record_access", + [sym_record_field_selector] = "record_field_selector", [sym_boolean_literal] = "boolean_literal", [sym_quoted_literal] = "quoted_literal", [sym_double_quoted_literal] = "double_quoted_literal", @@ -123,6 +132,7 @@ static const char * const ts_symbol_names[] = { [aux_sym_argument_list_repeat1] = "argument_list_repeat1", [aux_sym_array_literal_repeat1] = "array_literal_repeat1", [aux_sym_record_literal_repeat1] = "record_literal_repeat1", + [aux_sym_record_access_repeat1] = "record_access_repeat1", [aux_sym_double_quoted_literal_repeat1] = "double_quoted_literal_repeat1", }; @@ -141,8 +151,10 @@ static const TSSymbol ts_symbol_map[] = { [sym_unquoted_record_field_name] = sym_unquoted_record_field_name, [sym_numeric_literal] = sym_numeric_literal, [sym_variable] = sym_variable, - [sym_property_reference] = sym_property_reference, - [sym_index_reference] = sym_index_reference, + [anon_sym_DOT] = anon_sym_DOT, + [sym_original_input] = sym_original_input, + [sym_named_record_field] = sym_named_record_field, + [sym_positional_record_field] = sym_positional_record_field, [sym_positional_element_access] = sym_positional_element_access, [anon_sym_POUNDtrue] = anon_sym_POUNDtrue, [anon_sym_POUNDfalse] = anon_sym_POUNDfalse, @@ -168,6 +180,8 @@ static const TSSymbol ts_symbol_map[] = { [sym_record_literal] = sym_record_literal, [sym_record_field] = sym_record_field, [sym_record_field_name] = sym_record_field_name, + [sym_record_access] = sym_record_access, + [sym_record_field_selector] = sym_record_field_selector, [sym_boolean_literal] = sym_boolean_literal, [sym_quoted_literal] = sym_quoted_literal, [sym_double_quoted_literal] = sym_double_quoted_literal, @@ -177,6 +191,7 @@ static const TSSymbol ts_symbol_map[] = { [aux_sym_argument_list_repeat1] = aux_sym_argument_list_repeat1, [aux_sym_array_literal_repeat1] = aux_sym_array_literal_repeat1, [aux_sym_record_literal_repeat1] = aux_sym_record_literal_repeat1, + [aux_sym_record_access_repeat1] = aux_sym_record_access_repeat1, [aux_sym_double_quoted_literal_repeat1] = aux_sym_double_quoted_literal_repeat1, }; @@ -237,11 +252,19 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, - [sym_property_reference] = { + [anon_sym_DOT] = { + .visible = true, + .named = false, + }, + [sym_original_input] = { + .visible = true, + .named = true, + }, + [sym_named_record_field] = { .visible = true, .named = true, }, - [sym_index_reference] = { + [sym_positional_record_field] = { .visible = true, .named = true, }, @@ -347,6 +370,14 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [sym_record_access] = { + .visible = true, + .named = true, + }, + [sym_record_field_selector] = { + .visible = true, + .named = true, + }, [sym_boolean_literal] = { .visible = true, .named = true, @@ -385,6 +416,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = false, }, + [aux_sym_record_access_repeat1] = { + .visible = false, + .named = false, + }, [aux_sym_double_quoted_literal_repeat1] = { .visible = false, .named = false, @@ -392,25 +427,43 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { }; enum ts_field_identifiers { - field_name = 1, - field_value = 2, + field_field = 1, + field_name = 2, + field_root = 3, + field_value = 4, }; static const char * const ts_field_names[] = { [0] = NULL, + [field_field] = "field", [field_name] = "name", + [field_root] = "root", [field_value] = "value", }; static const TSMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { [1] = {.index = 0, .length = 1}, - [2] = {.index = 1, .length = 2}, + [2] = {.index = 1, .length = 1}, + [3] = {.index = 2, .length = 1}, + [4] = {.index = 3, .length = 2}, + [5] = {.index = 5, .length = 2}, + [6] = {.index = 7, .length = 2}, }; static const TSFieldMapEntry ts_field_map_entries[] = { [0] = {field_name, 0}, [1] = + {field_field, 0, .inherited = true}, + [2] = + {field_field, 1}, + [3] = + {field_field, 1, .inherited = true}, + {field_root, 0}, + [5] = + {field_field, 0, .inherited = true}, + {field_field, 1, .inherited = true}, + [7] = {field_name, 0}, {field_value, 2}, }; @@ -493,6 +546,13 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [66] = 66, [67] = 67, [68] = 68, + [69] = 69, + [70] = 70, + [71] = 71, + [72] = 72, + [73] = 73, + [74] = 74, + [75] = 75, }; static const TSSymbol ts_supertype_symbols[SUPERTYPE_COUNT] = { @@ -506,7 +566,7 @@ static const TSMapSlice ts_supertype_map_slices[] = { [sym_expression] = {.index = 0, .length = 1}, [sym_quoted_literal] = {.index = 1, .length = 2}, [sym_temporal_literal] = {.index = 3, .length = 3}, - [sym_value] = {.index = 6, .length = 11}, + [sym_value] = {.index = 6, .length = 10}, }; static const TSSymbol ts_supertype_map_entries[] = { @@ -522,11 +582,10 @@ static const TSSymbol ts_supertype_map_entries[] = { [6] = sym_array_literal, sym_boolean_literal, - sym_index_reference, sym_numeric_literal, sym_positional_element_access, - sym_property_reference, sym_quoted_literal, + sym_record_access, sym_record_literal, sym_temporal_literal, sym_tuple_literal, @@ -538,62 +597,64 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { eof = lexer->eof(lexer); switch (state) { case 0: - if (eof) ADVANCE(59); + if (eof) ADVANCE(56); ADVANCE_MAP( '"', 87, '#', 5, - '$', 13, - '(', 61, - ')', 62, - ',', 66, - '-', 12, - '0', 77, - ':', 73, - '@', 53, - 'T', 69, - '[', 15, - '\\', 32, + '$', 12, + '(', 58, + ')', 59, + ',', 63, + '-', 11, + '.', 78, + '0', 74, + ':', 70, + '@', 50, + 'T', 66, + '\\', 29, + '^', 79, '`', 91, - '{', 67, - '|', 60, - '}', 68, + '{', 64, + '|', 57, + '}', 65, ); if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || - lookahead == 0xfeff) SKIP(57); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(78); + lookahead == 0xfeff) SKIP(54); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(75); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(64); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(60); END_STATE(); case 1: ADVANCE_MAP( '"', 87, '#', 5, - '$', 13, - '-', 12, - '0', 77, - ':', 72, - '@', 53, - 'T', 71, - '[', 15, + '$', 12, + '-', 11, + '.', 78, + '0', 74, + ':', 69, + '@', 50, + 'T', 68, + '^', 79, '`', 91, - '{', 67, - '}', 68, + '{', 64, + '}', 65, ); if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || lookahead == 0xfeff) SKIP(1); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(78); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(75); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(75); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72); END_STATE(); case 2: if (lookahead == '"') ADVANCE(87); - if (lookahead == '\\') ADVANCE(32); + if (lookahead == '\\') ADVANCE(29); if (lookahead == '\n' || lookahead == '\r') SKIP(4); if (('\t' <= lookahead && lookahead <= '\f') || @@ -612,7 +673,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 0x2060 || lookahead == 0xfeff) SKIP(3); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(75); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72); END_STATE(); case 4: if (lookahead == '"') ADVANCE(87); @@ -623,9 +684,9 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 0xfeff) SKIP(4); END_STATE(); case 5: - if (lookahead == '"') ADVANCE(42); - if (lookahead == 'f') ADVANCE(25); - if (lookahead == 't') ADVANCE(29); + if (lookahead == '"') ADVANCE(39); + if (lookahead == 'f') ADVANCE(22); + if (lookahead == 't') ADVANCE(26); END_STATE(); case 6: if (lookahead == '"') ADVANCE(96); @@ -633,70 +694,61 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { case 7: if (lookahead == '"') ADVANCE(94); if (lookahead == ' ' || - lookahead == 'T') ADVANCE(50); + lookahead == 'T') ADVANCE(47); END_STATE(); case 8: if (lookahead == '"') ADVANCE(95); END_STATE(); case 9: - if (lookahead == '-') ADVANCE(55); - if (lookahead == ']') ADVANCE(81); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(9); + if (lookahead == '-') ADVANCE(46); END_STATE(); case 10: - if (lookahead == '-') ADVANCE(49); + if (lookahead == '-') ADVANCE(42); END_STATE(); case 11: - if (lookahead == '-') ADVANCE(45); + if (lookahead == '0') ADVANCE(74); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(75); END_STATE(); case 12: - if (lookahead == '0') ADVANCE(77); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(78); + if (lookahead == '0') ADVANCE(83); + if (lookahead == '^') ADVANCE(13); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(84); END_STATE(); case 13: if (lookahead == '0') ADVANCE(83); - if (lookahead == '^') ADVANCE(14); if (('1' <= lookahead && lookahead <= '9')) ADVANCE(84); END_STATE(); case 14: - if (lookahead == '0') ADVANCE(83); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(84); + if (lookahead == '0') ADVANCE(81); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ' || + lookahead == 0x200b || + lookahead == 0x2060 || + lookahead == 0xfeff) SKIP(14); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(82); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(80); END_STATE(); case 15: - if (lookahead == '0') ADVANCE(21); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(22); - if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(9); + if (lookahead == ':') ADVANCE(40); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(34); END_STATE(); case 16: - if (lookahead == ':') ADVANCE(43); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(37); + if (lookahead == ':') ADVANCE(41); END_STATE(); case 17: - if (lookahead == ':') ADVANCE(44); + if (lookahead == ':') ADVANCE(43); END_STATE(); case 18: - if (lookahead == ':') ADVANCE(46); + if (lookahead == ':') ADVANCE(49); END_STATE(); case 19: - if (lookahead == ':') ADVANCE(52); + if (lookahead == '=') ADVANCE(71); END_STATE(); case 20: - if (lookahead == '=') ADVANCE(74); - END_STATE(); - case 21: - if (lookahead == ']') ADVANCE(82); - END_STATE(); - case 22: - if (lookahead == ']') ADVANCE(82); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(22); - END_STATE(); - case 23: if (lookahead == '`') ADVANCE(91); if (lookahead == '\n' || - lookahead == '\r') SKIP(24); + lookahead == '\r') SKIP(21); if (('\t' <= lookahead && lookahead <= '\f') || lookahead == ' ' || lookahead == 0x200b || @@ -704,287 +756,305 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 0xfeff) ADVANCE(92); if (lookahead != 0) ADVANCE(93); END_STATE(); - case 24: + case 21: if (lookahead == '`') ADVANCE(91); if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || - lookahead == 0xfeff) SKIP(24); + lookahead == 0xfeff) SKIP(21); END_STATE(); - case 25: - if (lookahead == 'a') ADVANCE(28); + case 22: + if (lookahead == 'a') ADVANCE(25); END_STATE(); - case 26: + case 23: if (lookahead == 'e') ADVANCE(85); END_STATE(); - case 27: + case 24: if (lookahead == 'e') ADVANCE(86); END_STATE(); - case 28: - if (lookahead == 'l') ADVANCE(30); + case 25: + if (lookahead == 'l') ADVANCE(27); END_STATE(); - case 29: - if (lookahead == 'r') ADVANCE(31); + case 26: + if (lookahead == 'r') ADVANCE(28); END_STATE(); - case 30: - if (lookahead == 's') ADVANCE(27); + case 27: + if (lookahead == 's') ADVANCE(24); END_STATE(); - case 31: - if (lookahead == 'u') ADVANCE(26); + case 28: + if (lookahead == 'u') ADVANCE(23); END_STATE(); - case 32: + case 29: if (lookahead == '"' || lookahead == '\\') ADVANCE(90); END_STATE(); - case 33: + case 30: if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || - lookahead == 0xfeff) SKIP(33); + lookahead == 0xfeff) SKIP(30); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(62); + END_STATE(); + case 31: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(76); + END_STATE(); + case 32: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(73); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(65); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(61); + END_STATE(); + case 33: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(15); END_STATE(); case 34: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(79); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(9); END_STATE(); case 35: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(76); - if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(63); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(16); END_STATE(); case 36: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(16); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(6); END_STATE(); case 37: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(10); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(7); END_STATE(); case 38: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(17); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(8); END_STATE(); case 39: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(6); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(33); END_STATE(); case 40: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(7); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); END_STATE(); case 41: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(8); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(36); END_STATE(); case 42: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(36); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(37); END_STATE(); case 43: if (('0' <= lookahead && lookahead <= '9')) ADVANCE(38); END_STATE(); case 44: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(39); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(10); END_STATE(); case 45: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(40); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(18); END_STATE(); case 46: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(41); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(44); END_STATE(); case 47: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(11); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(45); END_STATE(); case 48: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(19); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(17); END_STATE(); case 49: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(47); - END_STATE(); - case 50: if (('0' <= lookahead && lookahead <= '9')) ADVANCE(48); END_STATE(); - case 51: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(18); - END_STATE(); - case 52: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(51); - END_STATE(); - case 53: + case 50: if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(80); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(77); END_STATE(); - case 54: + case 51: if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(65); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(62); END_STATE(); - case 55: + case 52: if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(9); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(80); END_STATE(); - case 56: + case 53: if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(76); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(73); END_STATE(); - case 57: - if (eof) ADVANCE(59); + case 54: + if (eof) ADVANCE(56); ADVANCE_MAP( '"', 87, '#', 5, - '$', 13, - '(', 61, - ')', 62, - ',', 66, - '-', 12, - '0', 77, - ':', 73, - '@', 53, - 'T', 69, - '[', 15, + '$', 12, + '(', 58, + ')', 59, + ',', 63, + '-', 11, + '.', 78, + '0', 74, + ':', 70, + '@', 50, + 'T', 66, + '^', 79, '`', 91, - '{', 67, - '|', 60, - '}', 68, + '{', 64, + '|', 57, + '}', 65, ); if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || - lookahead == 0xfeff) SKIP(57); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(78); + lookahead == 0xfeff) SKIP(54); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(75); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(64); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(60); END_STATE(); - case 58: - if (eof) ADVANCE(59); + case 55: + if (eof) ADVANCE(56); ADVANCE_MAP( '"', 87, '#', 5, - '$', 13, - ')', 62, - ',', 66, - '-', 12, - '0', 77, - ':', 20, - '@', 53, - 'T', 70, - '[', 15, + '$', 12, + ')', 59, + ',', 63, + '-', 11, + '.', 78, + '0', 74, + ':', 19, + '@', 50, + 'T', 67, + '^', 79, '`', 91, - '{', 67, - '|', 60, - '}', 68, + '{', 64, + '|', 57, + '}', 65, ); if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || - lookahead == 0xfeff) SKIP(58); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(78); + lookahead == 0xfeff) SKIP(55); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(75); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(65); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(62); END_STATE(); - case 59: + case 56: ACCEPT_TOKEN(ts_builtin_sym_end); END_STATE(); - case 60: + case 57: ACCEPT_TOKEN(anon_sym_PIPE); END_STATE(); - case 61: + case 58: ACCEPT_TOKEN(anon_sym_LPAREN); END_STATE(); - case 62: + case 59: ACCEPT_TOKEN(anon_sym_RPAREN); END_STATE(); - case 63: + case 60: ACCEPT_TOKEN(sym_function_name); - if (lookahead == '-') ADVANCE(35); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(76); + if (lookahead == '-') ADVANCE(32); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(80); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(63); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(60); END_STATE(); - case 64: + case 61: ACCEPT_TOKEN(sym_function_name); - if (lookahead == '-') ADVANCE(35); + if (lookahead == '-') ADVANCE(32); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(73); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(64); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(61); END_STATE(); - case 65: + case 62: ACCEPT_TOKEN(sym_function_name); - if (lookahead == '-') ADVANCE(54); + if (lookahead == '-') ADVANCE(51); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(65); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(62); END_STATE(); - case 66: + case 63: ACCEPT_TOKEN(anon_sym_COMMA); END_STATE(); - case 67: + case 64: ACCEPT_TOKEN(anon_sym_LBRACE); END_STATE(); - case 68: + case 65: ACCEPT_TOKEN(anon_sym_RBRACE); END_STATE(); - case 69: + case 66: ACCEPT_TOKEN(anon_sym_T); - if (lookahead == '-') ADVANCE(35); + if (lookahead == '-') ADVANCE(32); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(80); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(64); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(60); END_STATE(); - case 70: + case 67: ACCEPT_TOKEN(anon_sym_T); - if (lookahead == '-') ADVANCE(54); + if (lookahead == '-') ADVANCE(51); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(65); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(62); END_STATE(); - case 71: + case 68: ACCEPT_TOKEN(anon_sym_T); - if (lookahead == '-') ADVANCE(56); + if (lookahead == '-') ADVANCE(53); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(75); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72); END_STATE(); - case 72: + case 69: ACCEPT_TOKEN(anon_sym_COLON); END_STATE(); - case 73: + case 70: ACCEPT_TOKEN(anon_sym_COLON); - if (lookahead == '=') ADVANCE(74); + if (lookahead == '=') ADVANCE(71); END_STATE(); - case 74: + case 71: ACCEPT_TOKEN(anon_sym_COLON_EQ); END_STATE(); - case 75: + case 72: ACCEPT_TOKEN(sym_unquoted_record_field_name); - if (lookahead == '-') ADVANCE(56); + if (lookahead == '-') ADVANCE(53); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(75); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72); END_STATE(); - case 76: + case 73: ACCEPT_TOKEN(sym_unquoted_record_field_name); - if (lookahead == '-') ADVANCE(56); + if (lookahead == '-') ADVANCE(53); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(76); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(73); END_STATE(); - case 77: + case 74: ACCEPT_TOKEN(sym_numeric_literal); - if (lookahead == '.') ADVANCE(34); + if (lookahead == '.') ADVANCE(31); END_STATE(); - case 78: + case 75: ACCEPT_TOKEN(sym_numeric_literal); - if (lookahead == '.') ADVANCE(34); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(78); + if (lookahead == '.') ADVANCE(31); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(75); END_STATE(); - case 79: + case 76: ACCEPT_TOKEN(sym_numeric_literal); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(79); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(76); END_STATE(); - case 80: + case 77: ACCEPT_TOKEN(sym_variable); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(77); + END_STATE(); + case 78: + ACCEPT_TOKEN(anon_sym_DOT); + END_STATE(); + case 79: + ACCEPT_TOKEN(sym_original_input); + END_STATE(); + case 80: + ACCEPT_TOKEN(sym_named_record_field); + if (lookahead == '-') ADVANCE(52); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || ('a' <= lookahead && lookahead <= 'z')) ADVANCE(80); END_STATE(); case 81: - ACCEPT_TOKEN(sym_property_reference); + ACCEPT_TOKEN(sym_positional_record_field); END_STATE(); case 82: - ACCEPT_TOKEN(sym_index_reference); + ACCEPT_TOKEN(sym_positional_record_field); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(82); END_STATE(); case 83: ACCEPT_TOKEN(sym_positional_element_access); @@ -1066,23 +1136,23 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { static const TSLexerMode ts_lex_modes[STATE_COUNT] = { [0] = {.lex_state = 0}, - [1] = {.lex_state = 58}, + [1] = {.lex_state = 55}, [2] = {.lex_state = 1}, - [3] = {.lex_state = 0}, - [4] = {.lex_state = 0}, - [5] = {.lex_state = 0}, - [6] = {.lex_state = 0}, - [7] = {.lex_state = 0}, - [8] = {.lex_state = 0}, - [9] = {.lex_state = 3}, - [10] = {.lex_state = 58}, - [11] = {.lex_state = 58}, - [12] = {.lex_state = 58}, - [13] = {.lex_state = 58}, - [14] = {.lex_state = 0}, - [15] = {.lex_state = 0}, + [3] = {.lex_state = 55}, + [4] = {.lex_state = 55}, + [5] = {.lex_state = 55}, + [6] = {.lex_state = 55}, + [7] = {.lex_state = 55}, + [8] = {.lex_state = 55}, + [9] = {.lex_state = 0}, + [10] = {.lex_state = 0}, + [11] = {.lex_state = 3}, + [12] = {.lex_state = 0}, + [13] = {.lex_state = 55}, + [14] = {.lex_state = 55}, + [15] = {.lex_state = 55}, [16] = {.lex_state = 0}, - [17] = {.lex_state = 0}, + [17] = {.lex_state = 55}, [18] = {.lex_state = 0}, [19] = {.lex_state = 0}, [20] = {.lex_state = 0}, @@ -1090,32 +1160,32 @@ static const TSLexerMode ts_lex_modes[STATE_COUNT] = { [22] = {.lex_state = 0}, [23] = {.lex_state = 0}, [24] = {.lex_state = 0}, - [25] = {.lex_state = 2}, - [26] = {.lex_state = 2}, - [27] = {.lex_state = 2}, + [25] = {.lex_state = 0}, + [26] = {.lex_state = 0}, + [27] = {.lex_state = 0}, [28] = {.lex_state = 0}, - [29] = {.lex_state = 33}, - [30] = {.lex_state = 0}, - [31] = {.lex_state = 0}, + [29] = {.lex_state = 0}, + [30] = {.lex_state = 2}, + [31] = {.lex_state = 2}, [32] = {.lex_state = 0}, - [33] = {.lex_state = 0}, + [33] = {.lex_state = 2}, [34] = {.lex_state = 0}, [35] = {.lex_state = 0}, - [36] = {.lex_state = 0}, + [36] = {.lex_state = 30}, [37] = {.lex_state = 0}, [38] = {.lex_state = 0}, [39] = {.lex_state = 0}, [40] = {.lex_state = 0}, - [41] = {.lex_state = 58}, - [42] = {.lex_state = 0}, + [41] = {.lex_state = 0}, + [42] = {.lex_state = 55}, [43] = {.lex_state = 0}, - [44] = {.lex_state = 0}, + [44] = {.lex_state = 14}, [45] = {.lex_state = 0}, [46] = {.lex_state = 0}, [47] = {.lex_state = 0}, - [48] = {.lex_state = 33}, + [48] = {.lex_state = 30}, [49] = {.lex_state = 0}, - [50] = {.lex_state = 23}, + [50] = {.lex_state = 0}, [51] = {.lex_state = 0}, [52] = {.lex_state = 0}, [53] = {.lex_state = 0}, @@ -1124,16 +1194,23 @@ static const TSLexerMode ts_lex_modes[STATE_COUNT] = { [56] = {.lex_state = 0}, [57] = {.lex_state = 0}, [58] = {.lex_state = 0}, - [59] = {.lex_state = 58}, - [60] = {.lex_state = 0}, + [59] = {.lex_state = 0}, + [60] = {.lex_state = 20}, [61] = {.lex_state = 0}, [62] = {.lex_state = 0}, [63] = {.lex_state = 0}, [64] = {.lex_state = 0}, - [65] = {.lex_state = 58}, + [65] = {.lex_state = 0}, [66] = {.lex_state = 0}, [67] = {.lex_state = 0}, [68] = {.lex_state = 0}, + [69] = {.lex_state = 0}, + [70] = {.lex_state = 0}, + [71] = {.lex_state = 55}, + [72] = {.lex_state = 0}, + [73] = {.lex_state = 0}, + [74] = {.lex_state = 55}, + [75] = {.lex_state = 0}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { @@ -1152,8 +1229,10 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_unquoted_record_field_name] = ACTIONS(1), [sym_numeric_literal] = ACTIONS(1), [sym_variable] = ACTIONS(1), - [sym_property_reference] = ACTIONS(1), - [sym_index_reference] = ACTIONS(1), + [anon_sym_DOT] = ACTIONS(1), + [sym_original_input] = ACTIONS(1), + [sym_named_record_field] = ACTIONS(1), + [sym_positional_record_field] = ACTIONS(1), [sym_positional_element_access] = ACTIONS(1), [anon_sym_POUNDtrue] = ACTIONS(1), [anon_sym_POUNDfalse] = ACTIONS(1), @@ -1165,786 +1244,909 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_time_literal] = ACTIONS(1), }, [STATE(1)] = { - [sym_source_file] = STATE(61), - [sym_root_expression] = STATE(63), - [sym_open_expression] = STATE(64), - [sym_closed_expression] = STATE(64), - [sym_expression] = STATE(46), - [sym_function_call] = STATE(52), - [sym_value] = STATE(54), - [sym_array_literal] = STATE(17), - [sym_tuple_literal] = STATE(17), - [sym_record_literal] = STATE(17), - [sym_boolean_literal] = STATE(17), - [sym_quoted_literal] = STATE(17), - [sym_double_quoted_literal] = STATE(16), - [sym_backtick_quoted_literal] = STATE(16), - [sym_temporal_literal] = STATE(17), + [sym_source_file] = STATE(67), + [sym_root_expression] = STATE(69), + [sym_open_expression] = STATE(75), + [sym_closed_expression] = STATE(75), + [sym_expression] = STATE(45), + [sym_function_call] = STATE(64), + [sym_value] = STATE(57), + [sym_array_literal] = STATE(22), + [sym_tuple_literal] = STATE(22), + [sym_record_literal] = STATE(22), + [sym_record_access] = STATE(22), + [sym_boolean_literal] = STATE(22), + [sym_quoted_literal] = STATE(22), + [sym_double_quoted_literal] = STATE(21), + [sym_backtick_quoted_literal] = STATE(21), + [sym_temporal_literal] = STATE(22), + [aux_sym_record_access_repeat1] = STATE(10), [sym_function_name] = ACTIONS(3), [anon_sym_LBRACE] = ACTIONS(5), [anon_sym_T] = ACTIONS(7), [sym_numeric_literal] = ACTIONS(9), [sym_variable] = ACTIONS(9), - [sym_property_reference] = ACTIONS(9), - [sym_index_reference] = ACTIONS(9), + [anon_sym_DOT] = ACTIONS(11), + [sym_original_input] = ACTIONS(13), [sym_positional_element_access] = ACTIONS(9), - [anon_sym_POUNDtrue] = ACTIONS(11), - [anon_sym_POUNDfalse] = ACTIONS(11), - [anon_sym_DQUOTE] = ACTIONS(13), - [anon_sym_BQUOTE] = ACTIONS(15), - [sym_date_literal] = ACTIONS(17), - [sym_date_time_literal] = ACTIONS(17), - [sym_time_literal] = ACTIONS(17), + [anon_sym_POUNDtrue] = ACTIONS(15), + [anon_sym_POUNDfalse] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + [anon_sym_BQUOTE] = ACTIONS(19), + [sym_date_literal] = ACTIONS(21), + [sym_date_time_literal] = ACTIONS(21), + [sym_time_literal] = ACTIONS(21), }, [STATE(2)] = { - [sym_value] = STATE(35), - [sym_array_literal] = STATE(17), - [sym_tuple_literal] = STATE(17), - [sym_record_literal] = STATE(17), - [sym_record_field] = STATE(36), - [sym_record_field_name] = STATE(59), - [sym_boolean_literal] = STATE(17), - [sym_quoted_literal] = STATE(17), - [sym_double_quoted_literal] = STATE(41), - [sym_backtick_quoted_literal] = STATE(41), - [sym_temporal_literal] = STATE(17), + [sym_value] = STATE(37), + [sym_array_literal] = STATE(22), + [sym_tuple_literal] = STATE(22), + [sym_record_literal] = STATE(22), + [sym_record_field] = STATE(41), + [sym_record_field_name] = STATE(74), + [sym_record_access] = STATE(22), + [sym_boolean_literal] = STATE(22), + [sym_quoted_literal] = STATE(22), + [sym_double_quoted_literal] = STATE(42), + [sym_backtick_quoted_literal] = STATE(42), + [sym_temporal_literal] = STATE(22), + [aux_sym_record_access_repeat1] = STATE(10), [anon_sym_LBRACE] = ACTIONS(5), - [anon_sym_RBRACE] = ACTIONS(19), + [anon_sym_RBRACE] = ACTIONS(23), [anon_sym_T] = ACTIONS(7), - [anon_sym_COLON] = ACTIONS(21), - [sym_unquoted_record_field_name] = ACTIONS(23), + [anon_sym_COLON] = ACTIONS(25), + [sym_unquoted_record_field_name] = ACTIONS(27), [sym_numeric_literal] = ACTIONS(9), [sym_variable] = ACTIONS(9), - [sym_property_reference] = ACTIONS(9), - [sym_index_reference] = ACTIONS(9), + [anon_sym_DOT] = ACTIONS(11), + [sym_original_input] = ACTIONS(13), [sym_positional_element_access] = ACTIONS(9), - [anon_sym_POUNDtrue] = ACTIONS(11), - [anon_sym_POUNDfalse] = ACTIONS(11), - [anon_sym_DQUOTE] = ACTIONS(13), - [anon_sym_BQUOTE] = ACTIONS(15), - [sym_date_literal] = ACTIONS(17), - [sym_date_time_literal] = ACTIONS(17), - [sym_time_literal] = ACTIONS(17), - }, - [STATE(3)] = { - [sym_argument_list] = STATE(62), - [sym_positional_argument] = STATE(31), - [sym_value] = STATE(58), - [sym_array_literal] = STATE(17), - [sym_tuple_literal] = STATE(17), - [sym_record_literal] = STATE(17), - [sym_boolean_literal] = STATE(17), - [sym_quoted_literal] = STATE(17), - [sym_double_quoted_literal] = STATE(16), - [sym_backtick_quoted_literal] = STATE(16), - [sym_temporal_literal] = STATE(17), - [anon_sym_RPAREN] = ACTIONS(25), - [anon_sym_LBRACE] = ACTIONS(5), - [anon_sym_T] = ACTIONS(27), - [sym_numeric_literal] = ACTIONS(9), - [sym_variable] = ACTIONS(9), - [sym_property_reference] = ACTIONS(9), - [sym_index_reference] = ACTIONS(9), - [sym_positional_element_access] = ACTIONS(9), - [anon_sym_POUNDtrue] = ACTIONS(11), - [anon_sym_POUNDfalse] = ACTIONS(11), - [anon_sym_DQUOTE] = ACTIONS(13), - [anon_sym_BQUOTE] = ACTIONS(15), - [sym_date_literal] = ACTIONS(17), - [sym_date_time_literal] = ACTIONS(17), - [sym_time_literal] = ACTIONS(17), + [anon_sym_POUNDtrue] = ACTIONS(15), + [anon_sym_POUNDfalse] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + [anon_sym_BQUOTE] = ACTIONS(19), + [sym_date_literal] = ACTIONS(21), + [sym_date_time_literal] = ACTIONS(21), + [sym_time_literal] = ACTIONS(21), }, }; static const uint16_t ts_small_parse_table[] = { - [0] = 11, + [0] = 16, ACTIONS(5), 1, anon_sym_LBRACE, + ACTIONS(11), 1, + anon_sym_DOT, ACTIONS(13), 1, + sym_original_input, + ACTIONS(17), 1, anon_sym_DQUOTE, - ACTIONS(15), 1, + ACTIONS(19), 1, anon_sym_BQUOTE, - ACTIONS(27), 1, + ACTIONS(29), 1, + anon_sym_RPAREN, + ACTIONS(31), 1, anon_sym_T, - STATE(56), 1, + STATE(10), 1, + aux_sym_record_access_repeat1, + STATE(38), 1, sym_positional_argument, - STATE(58), 1, + STATE(55), 1, sym_value, - ACTIONS(11), 2, + STATE(66), 1, + sym_argument_list, + ACTIONS(15), 2, anon_sym_POUNDtrue, anon_sym_POUNDfalse, - STATE(16), 2, + STATE(21), 2, sym_double_quoted_literal, sym_backtick_quoted_literal, - ACTIONS(17), 3, - sym_date_literal, - sym_date_time_literal, - sym_time_literal, - ACTIONS(9), 5, + ACTIONS(9), 3, sym_numeric_literal, sym_variable, - sym_property_reference, - sym_index_reference, sym_positional_element_access, - STATE(17), 6, + ACTIONS(21), 3, + sym_date_literal, + sym_date_time_literal, + sym_time_literal, + STATE(22), 7, sym_array_literal, sym_tuple_literal, sym_record_literal, + sym_record_access, sym_boolean_literal, sym_quoted_literal, sym_temporal_literal, - [47] = 10, + [61] = 14, ACTIONS(5), 1, anon_sym_LBRACE, + ACTIONS(11), 1, + anon_sym_DOT, ACTIONS(13), 1, + sym_original_input, + ACTIONS(17), 1, anon_sym_DQUOTE, - ACTIONS(15), 1, + ACTIONS(19), 1, anon_sym_BQUOTE, - ACTIONS(27), 1, + ACTIONS(31), 1, anon_sym_T, - STATE(67), 1, + STATE(10), 1, + aux_sym_record_access_repeat1, + STATE(55), 1, sym_value, - ACTIONS(11), 2, + STATE(61), 1, + sym_positional_argument, + ACTIONS(15), 2, anon_sym_POUNDtrue, anon_sym_POUNDfalse, - STATE(16), 2, + STATE(21), 2, sym_double_quoted_literal, sym_backtick_quoted_literal, - ACTIONS(17), 3, - sym_date_literal, - sym_date_time_literal, - sym_time_literal, - ACTIONS(9), 5, + ACTIONS(9), 3, sym_numeric_literal, sym_variable, - sym_property_reference, - sym_index_reference, sym_positional_element_access, - STATE(17), 6, + ACTIONS(21), 3, + sym_date_literal, + sym_date_time_literal, + sym_time_literal, + STATE(22), 7, sym_array_literal, sym_tuple_literal, sym_record_literal, + sym_record_access, sym_boolean_literal, sym_quoted_literal, sym_temporal_literal, - [91] = 10, + [116] = 13, ACTIONS(5), 1, anon_sym_LBRACE, + ACTIONS(11), 1, + anon_sym_DOT, ACTIONS(13), 1, + sym_original_input, + ACTIONS(17), 1, anon_sym_DQUOTE, - ACTIONS(15), 1, + ACTIONS(19), 1, anon_sym_BQUOTE, - ACTIONS(27), 1, + ACTIONS(31), 1, anon_sym_T, - STATE(45), 1, + STATE(10), 1, + aux_sym_record_access_repeat1, + STATE(73), 1, sym_value, - ACTIONS(11), 2, + ACTIONS(15), 2, anon_sym_POUNDtrue, anon_sym_POUNDfalse, - STATE(16), 2, + STATE(21), 2, sym_double_quoted_literal, sym_backtick_quoted_literal, - ACTIONS(17), 3, - sym_date_literal, - sym_date_time_literal, - sym_time_literal, - ACTIONS(9), 5, + ACTIONS(9), 3, sym_numeric_literal, sym_variable, - sym_property_reference, - sym_index_reference, sym_positional_element_access, - STATE(17), 6, + ACTIONS(21), 3, + sym_date_literal, + sym_date_time_literal, + sym_time_literal, + STATE(22), 7, sym_array_literal, sym_tuple_literal, sym_record_literal, + sym_record_access, sym_boolean_literal, sym_quoted_literal, sym_temporal_literal, - [135] = 10, + [168] = 13, ACTIONS(5), 1, anon_sym_LBRACE, + ACTIONS(11), 1, + anon_sym_DOT, ACTIONS(13), 1, + sym_original_input, + ACTIONS(17), 1, anon_sym_DQUOTE, - ACTIONS(15), 1, + ACTIONS(19), 1, anon_sym_BQUOTE, - ACTIONS(27), 1, + ACTIONS(31), 1, anon_sym_T, - STATE(55), 1, + STATE(10), 1, + aux_sym_record_access_repeat1, + STATE(62), 1, sym_value, - ACTIONS(11), 2, + ACTIONS(15), 2, anon_sym_POUNDtrue, anon_sym_POUNDfalse, - STATE(16), 2, + STATE(21), 2, sym_double_quoted_literal, sym_backtick_quoted_literal, - ACTIONS(17), 3, - sym_date_literal, - sym_date_time_literal, - sym_time_literal, - ACTIONS(9), 5, + ACTIONS(9), 3, sym_numeric_literal, sym_variable, - sym_property_reference, - sym_index_reference, sym_positional_element_access, - STATE(17), 6, + ACTIONS(21), 3, + sym_date_literal, + sym_date_time_literal, + sym_time_literal, + STATE(22), 7, sym_array_literal, sym_tuple_literal, sym_record_literal, + sym_record_access, sym_boolean_literal, sym_quoted_literal, sym_temporal_literal, - [179] = 10, + [220] = 13, ACTIONS(5), 1, anon_sym_LBRACE, + ACTIONS(11), 1, + anon_sym_DOT, ACTIONS(13), 1, + sym_original_input, + ACTIONS(17), 1, anon_sym_DQUOTE, - ACTIONS(15), 1, + ACTIONS(19), 1, anon_sym_BQUOTE, - ACTIONS(27), 1, + ACTIONS(31), 1, anon_sym_T, - STATE(40), 1, + STATE(10), 1, + aux_sym_record_access_repeat1, + STATE(43), 1, sym_value, - ACTIONS(11), 2, + ACTIONS(15), 2, anon_sym_POUNDtrue, anon_sym_POUNDfalse, - STATE(16), 2, + STATE(21), 2, sym_double_quoted_literal, sym_backtick_quoted_literal, - ACTIONS(17), 3, + ACTIONS(9), 3, + sym_numeric_literal, + sym_variable, + sym_positional_element_access, + ACTIONS(21), 3, sym_date_literal, sym_date_time_literal, sym_time_literal, - ACTIONS(9), 5, + STATE(22), 7, + sym_array_literal, + sym_tuple_literal, + sym_record_literal, + sym_record_access, + sym_boolean_literal, + sym_quoted_literal, + sym_temporal_literal, + [272] = 13, + ACTIONS(5), 1, + anon_sym_LBRACE, + ACTIONS(11), 1, + anon_sym_DOT, + ACTIONS(13), 1, + sym_original_input, + ACTIONS(17), 1, + anon_sym_DQUOTE, + ACTIONS(19), 1, + anon_sym_BQUOTE, + ACTIONS(31), 1, + anon_sym_T, + STATE(10), 1, + aux_sym_record_access_repeat1, + STATE(51), 1, + sym_value, + ACTIONS(15), 2, + anon_sym_POUNDtrue, + anon_sym_POUNDfalse, + STATE(21), 2, + sym_double_quoted_literal, + sym_backtick_quoted_literal, + ACTIONS(9), 3, sym_numeric_literal, sym_variable, - sym_property_reference, - sym_index_reference, sym_positional_element_access, - STATE(17), 6, + ACTIONS(21), 3, + sym_date_literal, + sym_date_time_literal, + sym_time_literal, + STATE(22), 7, sym_array_literal, sym_tuple_literal, sym_record_literal, + sym_record_access, sym_boolean_literal, sym_quoted_literal, sym_temporal_literal, - [223] = 6, - ACTIONS(13), 1, + [324] = 3, + ACTIONS(11), 1, + anon_sym_DOT, + STATE(12), 1, + aux_sym_record_access_repeat1, + ACTIONS(33), 5, + ts_builtin_sym_end, + anon_sym_PIPE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACE, + [338] = 3, + ACTIONS(11), 1, + anon_sym_DOT, + STATE(12), 1, + aux_sym_record_access_repeat1, + ACTIONS(35), 5, + ts_builtin_sym_end, + anon_sym_PIPE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACE, + [352] = 6, + ACTIONS(17), 1, anon_sym_DQUOTE, - ACTIONS(15), 1, + ACTIONS(19), 1, anon_sym_BQUOTE, - ACTIONS(29), 1, + ACTIONS(37), 1, sym_unquoted_record_field_name, - STATE(53), 1, - sym_record_field, STATE(59), 1, + sym_record_field, + STATE(74), 1, sym_record_field_name, - STATE(65), 2, + STATE(71), 2, sym_double_quoted_literal, sym_backtick_quoted_literal, - [243] = 1, - ACTIONS(31), 6, + [372] = 3, + ACTIONS(41), 1, + anon_sym_DOT, + STATE(12), 1, + aux_sym_record_access_repeat1, + ACTIONS(39), 5, + ts_builtin_sym_end, + anon_sym_PIPE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACE, + [386] = 1, + ACTIONS(44), 6, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, anon_sym_COLON_EQ, - [252] = 1, - ACTIONS(33), 6, + [395] = 1, + ACTIONS(46), 6, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, anon_sym_COLON_EQ, - [261] = 1, - ACTIONS(35), 6, + [404] = 1, + ACTIONS(48), 6, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, anon_sym_COLON_EQ, - [270] = 1, - ACTIONS(37), 6, + [413] = 1, + ACTIONS(50), 6, + ts_builtin_sym_end, + anon_sym_PIPE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACE, + anon_sym_DOT, + [422] = 1, + ACTIONS(52), 6, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, anon_sym_COLON_EQ, - [279] = 1, - ACTIONS(39), 5, + [431] = 1, + ACTIONS(54), 6, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [287] = 1, - ACTIONS(41), 5, + anon_sym_DOT, + [440] = 1, + ACTIONS(56), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [295] = 1, - ACTIONS(43), 5, + [448] = 1, + ACTIONS(58), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [303] = 1, - ACTIONS(45), 5, + [456] = 1, + ACTIONS(60), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [311] = 1, - ACTIONS(47), 5, + [464] = 1, + ACTIONS(62), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [319] = 1, - ACTIONS(49), 5, + [472] = 1, + ACTIONS(64), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [327] = 1, - ACTIONS(51), 5, + [480] = 1, + ACTIONS(66), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [335] = 1, - ACTIONS(53), 5, + [488] = 1, + ACTIONS(68), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [343] = 1, - ACTIONS(55), 5, + [496] = 1, + ACTIONS(70), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [351] = 1, - ACTIONS(57), 5, + [504] = 1, + ACTIONS(72), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [359] = 1, - ACTIONS(59), 5, + [512] = 1, + ACTIONS(74), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [367] = 3, - ACTIONS(61), 1, - anon_sym_DQUOTE, - STATE(26), 1, - aux_sym_double_quoted_literal_repeat1, - ACTIONS(63), 2, - sym_double_quoted_content, - sym_escape_sequence, - [378] = 3, - ACTIONS(65), 1, + [520] = 1, + ACTIONS(76), 5, + ts_builtin_sym_end, + anon_sym_PIPE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACE, + [528] = 3, + ACTIONS(78), 1, anon_sym_DQUOTE, - STATE(27), 1, + STATE(33), 1, aux_sym_double_quoted_literal_repeat1, - ACTIONS(67), 2, + ACTIONS(80), 2, sym_double_quoted_content, sym_escape_sequence, - [389] = 3, - ACTIONS(69), 1, + [539] = 3, + ACTIONS(82), 1, anon_sym_DQUOTE, - STATE(27), 1, + STATE(30), 1, aux_sym_double_quoted_literal_repeat1, - ACTIONS(71), 2, + ACTIONS(84), 2, sym_double_quoted_content, sym_escape_sequence, - [400] = 3, - ACTIONS(76), 1, + [550] = 3, + ACTIONS(88), 1, anon_sym_COMMA, - STATE(28), 1, + STATE(32), 1, aux_sym_array_literal_repeat1, - ACTIONS(74), 2, + ACTIONS(86), 2, anon_sym_RPAREN, anon_sym_RBRACE, - [411] = 3, - ACTIONS(79), 1, - sym_function_name, - STATE(38), 1, - sym_expression, - STATE(52), 1, - sym_function_call, - [421] = 3, - ACTIONS(81), 1, - ts_builtin_sym_end, - ACTIONS(83), 1, - anon_sym_PIPE, - STATE(37), 1, - aux_sym_open_expression_repeat1, - [431] = 3, - ACTIONS(85), 1, + [561] = 3, + ACTIONS(91), 1, + anon_sym_DQUOTE, + STATE(33), 1, + aux_sym_double_quoted_literal_repeat1, + ACTIONS(93), 2, + sym_double_quoted_content, + sym_escape_sequence, + [572] = 3, + ACTIONS(96), 1, anon_sym_RPAREN, - ACTIONS(87), 1, + ACTIONS(98), 1, anon_sym_COMMA, - STATE(39), 1, + STATE(50), 1, aux_sym_argument_list_repeat1, - [441] = 2, - ACTIONS(91), 1, + [582] = 2, + ACTIONS(102), 1, anon_sym_LPAREN, - ACTIONS(89), 2, + ACTIONS(100), 2, ts_builtin_sym_end, anon_sym_PIPE, - [449] = 3, - ACTIONS(93), 1, - anon_sym_COMMA, - ACTIONS(95), 1, - anon_sym_RBRACE, - STATE(28), 1, - aux_sym_array_literal_repeat1, - [459] = 3, - ACTIONS(97), 1, - anon_sym_COMMA, - ACTIONS(99), 1, - anon_sym_RBRACE, - STATE(42), 1, - aux_sym_record_literal_repeat1, - [469] = 3, - ACTIONS(93), 1, + [590] = 3, + ACTIONS(104), 1, + sym_function_name, + STATE(40), 1, + sym_expression, + STATE(64), 1, + sym_function_call, + [600] = 3, + ACTIONS(106), 1, anon_sym_COMMA, - ACTIONS(101), 1, + ACTIONS(108), 1, anon_sym_RBRACE, - STATE(33), 1, + STATE(46), 1, aux_sym_array_literal_repeat1, - [479] = 3, - ACTIONS(97), 1, + [610] = 3, + ACTIONS(98), 1, anon_sym_COMMA, - ACTIONS(103), 1, - anon_sym_RBRACE, + ACTIONS(110), 1, + anon_sym_RPAREN, STATE(34), 1, - aux_sym_record_literal_repeat1, - [489] = 3, - ACTIONS(105), 1, + aux_sym_argument_list_repeat1, + [620] = 3, + ACTIONS(112), 1, ts_builtin_sym_end, - ACTIONS(107), 1, + ACTIONS(114), 1, anon_sym_PIPE, - STATE(37), 1, + STATE(39), 1, aux_sym_open_expression_repeat1, - [499] = 3, - ACTIONS(83), 1, - anon_sym_PIPE, - ACTIONS(110), 1, + [630] = 3, + ACTIONS(117), 1, ts_builtin_sym_end, - STATE(43), 1, + ACTIONS(119), 1, + anon_sym_PIPE, + STATE(49), 1, aux_sym_open_expression_repeat1, - [509] = 3, - ACTIONS(87), 1, - anon_sym_COMMA, - ACTIONS(112), 1, - anon_sym_RPAREN, - STATE(44), 1, - aux_sym_argument_list_repeat1, - [519] = 1, - ACTIONS(74), 3, - anon_sym_RPAREN, + [640] = 3, + ACTIONS(121), 1, anon_sym_COMMA, + ACTIONS(123), 1, anon_sym_RBRACE, - [525] = 2, - ACTIONS(114), 1, + STATE(52), 1, + aux_sym_record_literal_repeat1, + [650] = 2, + ACTIONS(125), 1, anon_sym_COLON_EQ, - ACTIONS(43), 2, + ACTIONS(60), 2, anon_sym_COMMA, anon_sym_RBRACE, - [533] = 3, - ACTIONS(116), 1, + [658] = 1, + ACTIONS(86), 3, + anon_sym_RPAREN, anon_sym_COMMA, + anon_sym_RBRACE, + [664] = 2, + STATE(18), 1, + sym_record_field_selector, + ACTIONS(127), 2, + sym_named_record_field, + sym_positional_record_field, + [672] = 3, ACTIONS(119), 1, + anon_sym_PIPE, + ACTIONS(129), 1, + ts_builtin_sym_end, + STATE(54), 1, + aux_sym_open_expression_repeat1, + [682] = 3, + ACTIONS(106), 1, + anon_sym_COMMA, + ACTIONS(131), 1, anon_sym_RBRACE, - STATE(42), 1, + STATE(32), 1, + aux_sym_array_literal_repeat1, + [692] = 3, + ACTIONS(133), 1, + anon_sym_COMMA, + ACTIONS(136), 1, + anon_sym_RBRACE, + STATE(47), 1, aux_sym_record_literal_repeat1, - [543] = 3, - ACTIONS(83), 1, + [702] = 3, + ACTIONS(104), 1, + sym_function_name, + STATE(64), 1, + sym_function_call, + STATE(65), 1, + sym_expression, + [712] = 3, + ACTIONS(119), 1, anon_sym_PIPE, - ACTIONS(121), 1, + ACTIONS(138), 1, ts_builtin_sym_end, - STATE(37), 1, + STATE(39), 1, aux_sym_open_expression_repeat1, - [553] = 3, - ACTIONS(123), 1, + [722] = 3, + ACTIONS(140), 1, anon_sym_RPAREN, - ACTIONS(125), 1, + ACTIONS(142), 1, anon_sym_COMMA, - STATE(44), 1, + STATE(50), 1, aux_sym_argument_list_repeat1, - [563] = 3, - ACTIONS(93), 1, + [732] = 3, + ACTIONS(106), 1, anon_sym_COMMA, - ACTIONS(128), 1, + ACTIONS(145), 1, anon_sym_RPAREN, + STATE(53), 1, + aux_sym_array_literal_repeat1, + [742] = 3, + ACTIONS(121), 1, + anon_sym_COMMA, + ACTIONS(147), 1, + anon_sym_RBRACE, STATE(47), 1, + aux_sym_record_literal_repeat1, + [752] = 3, + ACTIONS(106), 1, + anon_sym_COMMA, + ACTIONS(149), 1, + anon_sym_RPAREN, + STATE(32), 1, aux_sym_array_literal_repeat1, - [573] = 3, - ACTIONS(83), 1, + [762] = 3, + ACTIONS(119), 1, anon_sym_PIPE, - ACTIONS(130), 1, + ACTIONS(151), 1, ts_builtin_sym_end, - STATE(30), 1, + STATE(39), 1, aux_sym_open_expression_repeat1, - [583] = 3, - ACTIONS(93), 1, - anon_sym_COMMA, - ACTIONS(132), 1, + [772] = 1, + ACTIONS(153), 2, anon_sym_RPAREN, - STATE(28), 1, - aux_sym_array_literal_repeat1, - [593] = 3, - ACTIONS(79), 1, - sym_function_name, - STATE(52), 1, - sym_function_call, - STATE(57), 1, - sym_expression, - [603] = 1, - ACTIONS(134), 2, - ts_builtin_sym_end, - anon_sym_PIPE, - [608] = 2, - ACTIONS(136), 1, - anon_sym_BQUOTE, - ACTIONS(138), 1, - sym_backtick_quoted_content, - [615] = 1, - ACTIONS(140), 2, + anon_sym_COMMA, + [777] = 1, + ACTIONS(155), 2, ts_builtin_sym_end, anon_sym_PIPE, - [620] = 1, - ACTIONS(142), 2, + [782] = 2, + ACTIONS(157), 1, ts_builtin_sym_end, + ACTIONS(159), 1, anon_sym_PIPE, - [625] = 1, - ACTIONS(119), 2, - anon_sym_COMMA, - anon_sym_RBRACE, - [630] = 2, - ACTIONS(144), 1, + [789] = 1, + ACTIONS(161), 2, ts_builtin_sym_end, - ACTIONS(146), 1, anon_sym_PIPE, - [637] = 1, - ACTIONS(148), 2, + [794] = 1, + ACTIONS(136), 2, anon_sym_COMMA, anon_sym_RBRACE, - [642] = 1, - ACTIONS(123), 2, + [799] = 2, + ACTIONS(163), 1, + anon_sym_BQUOTE, + ACTIONS(165), 1, + sym_backtick_quoted_content, + [806] = 1, + ACTIONS(140), 2, anon_sym_RPAREN, anon_sym_COMMA, - [647] = 1, - ACTIONS(105), 2, + [811] = 1, + ACTIONS(167), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [816] = 2, + ACTIONS(11), 1, + anon_sym_DOT, + STATE(9), 1, + aux_sym_record_access_repeat1, + [823] = 1, + ACTIONS(169), 2, ts_builtin_sym_end, anon_sym_PIPE, - [652] = 1, - ACTIONS(150), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [657] = 1, - ACTIONS(152), 1, - anon_sym_COLON_EQ, - [661] = 1, - ACTIONS(154), 1, - anon_sym_LPAREN, - [665] = 1, - ACTIONS(156), 1, + [828] = 1, + ACTIONS(112), 2, ts_builtin_sym_end, - [669] = 1, - ACTIONS(158), 1, + anon_sym_PIPE, + [833] = 1, + ACTIONS(171), 1, anon_sym_RPAREN, - [673] = 1, - ACTIONS(160), 1, + [837] = 1, + ACTIONS(173), 1, ts_builtin_sym_end, - [677] = 1, - ACTIONS(162), 1, + [841] = 1, + ACTIONS(175), 1, + anon_sym_LPAREN, + [845] = 1, + ACTIONS(177), 1, ts_builtin_sym_end, - [681] = 1, - ACTIONS(114), 1, - anon_sym_COLON_EQ, - [685] = 1, - ACTIONS(103), 1, + [849] = 1, + ACTIONS(123), 1, anon_sym_RBRACE, - [689] = 1, - ACTIONS(164), 1, - anon_sym_COMMA, - [693] = 1, - ACTIONS(166), 1, + [853] = 1, + ACTIONS(125), 1, + anon_sym_COLON_EQ, + [857] = 1, + ACTIONS(179), 1, anon_sym_BQUOTE, + [861] = 1, + ACTIONS(181), 1, + anon_sym_COMMA, + [865] = 1, + ACTIONS(183), 1, + anon_sym_COLON_EQ, + [869] = 1, + ACTIONS(185), 1, + ts_builtin_sym_end, }; static const uint32_t ts_small_parse_table_map[] = { - [SMALL_STATE(4)] = 0, - [SMALL_STATE(5)] = 47, - [SMALL_STATE(6)] = 91, - [SMALL_STATE(7)] = 135, - [SMALL_STATE(8)] = 179, - [SMALL_STATE(9)] = 223, - [SMALL_STATE(10)] = 243, - [SMALL_STATE(11)] = 252, - [SMALL_STATE(12)] = 261, - [SMALL_STATE(13)] = 270, - [SMALL_STATE(14)] = 279, - [SMALL_STATE(15)] = 287, - [SMALL_STATE(16)] = 295, - [SMALL_STATE(17)] = 303, - [SMALL_STATE(18)] = 311, - [SMALL_STATE(19)] = 319, - [SMALL_STATE(20)] = 327, - [SMALL_STATE(21)] = 335, - [SMALL_STATE(22)] = 343, - [SMALL_STATE(23)] = 351, - [SMALL_STATE(24)] = 359, - [SMALL_STATE(25)] = 367, - [SMALL_STATE(26)] = 378, - [SMALL_STATE(27)] = 389, - [SMALL_STATE(28)] = 400, - [SMALL_STATE(29)] = 411, - [SMALL_STATE(30)] = 421, - [SMALL_STATE(31)] = 431, - [SMALL_STATE(32)] = 441, - [SMALL_STATE(33)] = 449, - [SMALL_STATE(34)] = 459, - [SMALL_STATE(35)] = 469, - [SMALL_STATE(36)] = 479, - [SMALL_STATE(37)] = 489, - [SMALL_STATE(38)] = 499, - [SMALL_STATE(39)] = 509, - [SMALL_STATE(40)] = 519, - [SMALL_STATE(41)] = 525, - [SMALL_STATE(42)] = 533, - [SMALL_STATE(43)] = 543, - [SMALL_STATE(44)] = 553, - [SMALL_STATE(45)] = 563, - [SMALL_STATE(46)] = 573, - [SMALL_STATE(47)] = 583, - [SMALL_STATE(48)] = 593, - [SMALL_STATE(49)] = 603, - [SMALL_STATE(50)] = 608, - [SMALL_STATE(51)] = 615, - [SMALL_STATE(52)] = 620, - [SMALL_STATE(53)] = 625, - [SMALL_STATE(54)] = 630, - [SMALL_STATE(55)] = 637, - [SMALL_STATE(56)] = 642, - [SMALL_STATE(57)] = 647, - [SMALL_STATE(58)] = 652, - [SMALL_STATE(59)] = 657, - [SMALL_STATE(60)] = 661, - [SMALL_STATE(61)] = 665, - [SMALL_STATE(62)] = 669, - [SMALL_STATE(63)] = 673, - [SMALL_STATE(64)] = 677, - [SMALL_STATE(65)] = 681, - [SMALL_STATE(66)] = 685, - [SMALL_STATE(67)] = 689, - [SMALL_STATE(68)] = 693, + [SMALL_STATE(3)] = 0, + [SMALL_STATE(4)] = 61, + [SMALL_STATE(5)] = 116, + [SMALL_STATE(6)] = 168, + [SMALL_STATE(7)] = 220, + [SMALL_STATE(8)] = 272, + [SMALL_STATE(9)] = 324, + [SMALL_STATE(10)] = 338, + [SMALL_STATE(11)] = 352, + [SMALL_STATE(12)] = 372, + [SMALL_STATE(13)] = 386, + [SMALL_STATE(14)] = 395, + [SMALL_STATE(15)] = 404, + [SMALL_STATE(16)] = 413, + [SMALL_STATE(17)] = 422, + [SMALL_STATE(18)] = 431, + [SMALL_STATE(19)] = 440, + [SMALL_STATE(20)] = 448, + [SMALL_STATE(21)] = 456, + [SMALL_STATE(22)] = 464, + [SMALL_STATE(23)] = 472, + [SMALL_STATE(24)] = 480, + [SMALL_STATE(25)] = 488, + [SMALL_STATE(26)] = 496, + [SMALL_STATE(27)] = 504, + [SMALL_STATE(28)] = 512, + [SMALL_STATE(29)] = 520, + [SMALL_STATE(30)] = 528, + [SMALL_STATE(31)] = 539, + [SMALL_STATE(32)] = 550, + [SMALL_STATE(33)] = 561, + [SMALL_STATE(34)] = 572, + [SMALL_STATE(35)] = 582, + [SMALL_STATE(36)] = 590, + [SMALL_STATE(37)] = 600, + [SMALL_STATE(38)] = 610, + [SMALL_STATE(39)] = 620, + [SMALL_STATE(40)] = 630, + [SMALL_STATE(41)] = 640, + [SMALL_STATE(42)] = 650, + [SMALL_STATE(43)] = 658, + [SMALL_STATE(44)] = 664, + [SMALL_STATE(45)] = 672, + [SMALL_STATE(46)] = 682, + [SMALL_STATE(47)] = 692, + [SMALL_STATE(48)] = 702, + [SMALL_STATE(49)] = 712, + [SMALL_STATE(50)] = 722, + [SMALL_STATE(51)] = 732, + [SMALL_STATE(52)] = 742, + [SMALL_STATE(53)] = 752, + [SMALL_STATE(54)] = 762, + [SMALL_STATE(55)] = 772, + [SMALL_STATE(56)] = 777, + [SMALL_STATE(57)] = 782, + [SMALL_STATE(58)] = 789, + [SMALL_STATE(59)] = 794, + [SMALL_STATE(60)] = 799, + [SMALL_STATE(61)] = 806, + [SMALL_STATE(62)] = 811, + [SMALL_STATE(63)] = 816, + [SMALL_STATE(64)] = 823, + [SMALL_STATE(65)] = 828, + [SMALL_STATE(66)] = 833, + [SMALL_STATE(67)] = 837, + [SMALL_STATE(68)] = 841, + [SMALL_STATE(69)] = 845, + [SMALL_STATE(70)] = 849, + [SMALL_STATE(71)] = 853, + [SMALL_STATE(72)] = 857, + [SMALL_STATE(73)] = 861, + [SMALL_STATE(74)] = 865, + [SMALL_STATE(75)] = 869, }; 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(32), + [3] = {.entry = {.count = 1, .reusable = false}}, SHIFT(35), [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), - [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(60), - [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), - [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), - [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), - [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), - [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), - [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(65), - [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), - [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), - [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), - [31] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_double_quoted_literal, 2, 0, 0), - [33] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_backtick_quoted_literal, 2, 0, 0), - [35] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_double_quoted_literal, 3, 0, 0), - [37] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_backtick_quoted_literal, 3, 0, 0), - [39] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_boolean_literal, 1, 0, 0), - [41] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_temporal_literal, 1, 0, 0), - [43] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoted_literal, 1, 0, 0), - [45] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_value, 1, 0, 0), - [47] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 2, 0, 0), - [49] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 3, 0, 0), - [51] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_literal, 4, 0, 0), - [53] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 4, 0, 0), - [55] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_literal, 3, 0, 0), - [57] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_literal, 6, 0, 0), - [59] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_literal, 7, 0, 0), - [61] = {.entry = {.count = 1, .reusable = false}}, SHIFT(10), - [63] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), - [65] = {.entry = {.count = 1, .reusable = false}}, SHIFT(12), - [67] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [69] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_double_quoted_literal_repeat1, 2, 0, 0), - [71] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_double_quoted_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(27), - [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_array_literal_repeat1, 2, 0, 0), - [76] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_array_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(8), - [79] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), - [81] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_expression, 2, 0, 0), - [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), - [85] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 1, 0, 0), - [87] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [89] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 1, 0, 1), - [91] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [93] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), - [95] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), - [97] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), - [99] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), - [101] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), - [103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), - [105] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_open_expression_repeat1, 2, 0, 0), - [107] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_open_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(48), - [110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_closed_expression, 3, 0, 0), - [112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 2, 0, 0), - [114] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_field_name, 1, 0, 0), - [116] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_record_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(9), - [119] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_record_literal_repeat1, 2, 0, 0), - [121] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_closed_expression, 4, 0, 0), - [123] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 0), - [125] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 0), SHIFT_REPEAT(4), - [128] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [130] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_expression, 1, 0, 0), - [132] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [134] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 3, 0, 1), - [136] = {.entry = {.count = 1, .reusable = false}}, SHIFT(11), - [138] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), - [140] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 4, 0, 1), - [142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1, 0, 0), - [144] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_closed_expression, 1, 0, 0), - [146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), - [148] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_field, 3, 0, 2), - [150] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_positional_argument, 1, 0, 0), - [152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), - [154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), - [156] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), - [160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1, 0, 0), - [162] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_root_expression, 1, 0, 0), - [164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), - [166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(68), + [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), + [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), + [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), + [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), + [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(71), + [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), + [33] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_access, 2, 0, 4), + [35] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_access, 1, 0, 2), + [37] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), + [39] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_record_access_repeat1, 2, 0, 5), + [41] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_record_access_repeat1, 2, 0, 5), SHIFT_REPEAT(44), + [44] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_backtick_quoted_literal, 2, 0, 0), + [46] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_double_quoted_literal, 2, 0, 0), + [48] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_double_quoted_literal, 3, 0, 0), + [50] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_field_selector, 1, 0, 0), + [52] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_backtick_quoted_literal, 3, 0, 0), + [54] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_record_access_repeat1, 2, 0, 3), + [56] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 3, 0, 0), + [58] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_literal, 7, 0, 0), + [60] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoted_literal, 1, 0, 0), + [62] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_value, 1, 0, 0), + [64] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_literal, 3, 0, 0), + [66] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_boolean_literal, 1, 0, 0), + [68] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 2, 0, 0), + [70] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_literal, 4, 0, 0), + [72] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 4, 0, 0), + [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_temporal_literal, 1, 0, 0), + [76] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_literal, 6, 0, 0), + [78] = {.entry = {.count = 1, .reusable = false}}, SHIFT(15), + [80] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [82] = {.entry = {.count = 1, .reusable = false}}, SHIFT(14), + [84] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [86] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_array_literal_repeat1, 2, 0, 0), + [88] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_array_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(7), + [91] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_double_quoted_literal_repeat1, 2, 0, 0), + [93] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_double_quoted_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(33), + [96] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 2, 0, 0), + [98] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [100] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 1, 0, 1), + [102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), + [108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), + [110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 1, 0, 0), + [112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_open_expression_repeat1, 2, 0, 0), + [114] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_open_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(48), + [117] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_closed_expression, 3, 0, 0), + [119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [121] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), + [123] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [125] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_field_name, 1, 0, 0), + [127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), + [129] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_expression, 1, 0, 0), + [131] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [133] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_record_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(11), + [136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_record_literal_repeat1, 2, 0, 0), + [138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_closed_expression, 4, 0, 0), + [140] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 0), + [142] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 0), SHIFT_REPEAT(4), + [145] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [147] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [149] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), + [151] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_expression, 2, 0, 0), + [153] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_positional_argument, 1, 0, 0), + [155] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 3, 0, 1), + [157] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_closed_expression, 1, 0, 0), + [159] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [161] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 4, 0, 1), + [163] = {.entry = {.count = 1, .reusable = false}}, SHIFT(13), + [165] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), + [167] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_field, 3, 0, 6), + [169] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1, 0, 0), + [171] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [173] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [175] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), + [177] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1, 0, 0), + [179] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [181] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [183] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [185] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_root_expression, 1, 0, 0), }; #ifdef __cplusplus diff --git a/test/corpus/compound_values.txt b/test/corpus/compound_values.txt index 6b49718..295c51b 100644 --- a/test/corpus/compound_values.txt +++ b/test/corpus/compound_values.txt @@ -15,7 +15,7 @@ Empty array Array values and whitespace ================== -{ 1, #true, "foo", #"2025-12-17", @value, [property], [0] } +{ 1, #true, "foo", #"2025-12-17", @value, ^.property, ^.0 } --- @@ -29,8 +29,12 @@ Array values and whitespace (double_quoted_content)) (date_literal) (variable) - (property_reference) - (index_reference))))) + (record_access + (original_input) + (record_field_selector (named_record_field))) + (record_access + (original_input) + (record_field_selector (positional_record_field))))))) ================== Nested and single-element arrays @@ -69,7 +73,7 @@ T(1, 2) Mixed and nested tuples ================== -T("foo", #true, T(#"2025-12-17", [0]), @value) +T("foo", #true, T(#"2025-12-17", ^.0), @value) --- @@ -82,7 +86,9 @@ T("foo", #true, T(#"2025-12-17", [0]), @value) (boolean_literal) (tuple_literal (date_literal) - (index_reference)) + (record_access + (original_input) + (record_field_selector (positional_record_field)))) (variable))))) ================== diff --git a/test/corpus/invalid.txt b/test/corpus/invalid.txt index cacd888..d484bd1 100644 --- a/test/corpus/invalid.txt +++ b/test/corpus/invalid.txt @@ -321,10 +321,13 @@ foo(...a) (root_expression (open_expression (function_call - (function_name) - (ERROR - (UNEXPECTED '.') - (function_name)))))) + name: (function_name) + (ERROR) + (argument_list + (positional_argument + (record_access + field: (record_field_selector + (named_record_field))))))))) ================== Operators are not implemented @@ -343,16 +346,16 @@ Operators are not implemented (numeric_literal)))) ================== -Property reference cannot contain whitespace +Legacy property reference is rejected ================== -[ name ] +[name] --- (source_file (ERROR - (UNEXPECTED ' ')) + (UNEXPECTED '[')) (root_expression (open_expression (function_call @@ -361,16 +364,16 @@ Property reference cannot contain whitespace (UNEXPECTED ']'))) ================== -Index reference cannot contain whitespace +Legacy index reference is rejected ================== -[ 1 ] +[1] --- (source_file (ERROR - (UNEXPECTED ' ')) + (UNEXPECTED '[')) (root_expression (closed_expression (numeric_literal))) diff --git a/test/corpus/references.txt b/test/corpus/references.txt index 6fc963a..1b78b22 100644 --- a/test/corpus/references.txt +++ b/test/corpus/references.txt @@ -6,7 +6,10 @@ Single-letter variable --- -(source_file (root_expression (closed_expression (variable)))) +(source_file + (root_expression + (closed_expression + (variable)))) ================== Variable names support letters digits and mixed case @@ -22,16 +25,20 @@ example(@foo, @foo1, @fo1o, @Foo) (function_call name: (function_name) (argument_list - (positional_argument (variable)) - (positional_argument (variable)) - (positional_argument (variable)) - (positional_argument (variable))))))) + (positional_argument + (variable)) + (positional_argument + (variable)) + (positional_argument + (variable)) + (positional_argument + (variable))))))) ================== -Property and index references are distinct +Current record named and positional fields ================== -example([name], [birth-date], [0], [10]) +example(.name, .birth-date, .0, .10) --- @@ -41,10 +48,22 @@ example([name], [birth-date], [0], [10]) (function_call name: (function_name) (argument_list - (positional_argument (property_reference)) - (positional_argument (property_reference)) - (positional_argument (index_reference)) - (positional_argument (index_reference))))))) + (positional_argument + (record_access + field: (record_field_selector + (named_record_field)))) + (positional_argument + (record_access + field: (record_field_selector + (named_record_field)))) + (positional_argument + (record_access + field: (record_field_selector + (positional_record_field)))) + (positional_argument + (record_access + field: (record_field_selector + (positional_record_field))))))))) ================== Variable pipeline @@ -58,44 +77,79 @@ Variable pipeline (root_expression (closed_expression (variable) - (function_call name: (function_name))))) + (function_call + name: (function_name))))) ================== -Property reference pipeline +Original input named field pipeline ================== -[name] | upper +^.name | upper --- (source_file (root_expression (closed_expression - (property_reference) - (function_call name: (function_name))))) + (record_access + root: (original_input) + field: (record_field_selector + (named_record_field))) + (function_call + name: (function_name))))) ================== -Index reference pipeline +Original input positional field pipeline ================== -[1] | add(5) +^.1 | add(5) --- (source_file (root_expression (closed_expression - (index_reference) + (record_access + root: (original_input) + field: (record_field_selector + (positional_record_field))) + (function_call + name: (function_name) + (argument_list + (positional_argument + (numeric_literal))))))) + +================== +Record access forms are positional arguments +================== + +example(@foo, .bar, ^.2) + +--- + +(source_file + (root_expression + (open_expression (function_call name: (function_name) (argument_list - (positional_argument (numeric_literal))))))) + (positional_argument + (variable)) + (positional_argument + (record_access + field: (record_field_selector + (named_record_field)))) + (positional_argument + (record_access + root: (original_input) + field: (record_field_selector + (positional_record_field))))))))) ================== -All reference forms are positional arguments +Positional record fields remain distinct from typed literals ================== -example(@foo, [bar], [2]) +example(.1, #true, #false, #"2025-12-17") --- @@ -105,15 +159,22 @@ example(@foo, [bar], [2]) (function_call name: (function_name) (argument_list - (positional_argument (variable)) - (positional_argument (property_reference)) - (positional_argument (index_reference))))))) + (positional_argument + (record_access + field: (record_field_selector + (positional_record_field)))) + (positional_argument + (boolean_literal)) + (positional_argument + (boolean_literal)) + (positional_argument + (date_literal))))))) ================== -Index references remain distinct from typed literals +Nested current and original record access ================== -example([1], #true, #false, #"2025-12-17") +example(.customer.address, ^.customer.0) --- @@ -123,10 +184,19 @@ example([1], #true, #false, #"2025-12-17") (function_call name: (function_name) (argument_list - (positional_argument (index_reference)) - (positional_argument (boolean_literal)) - (positional_argument (boolean_literal)) - (positional_argument (date_literal))))))) + (positional_argument + (record_access + field: (record_field_selector + (named_record_field)) + field: (record_field_selector + (named_record_field)))) + (positional_argument + (record_access + root: (original_input) + field: (record_field_selector + (named_record_field)) + field: (record_field_selector + (positional_record_field))))))))) ================== Surrounding whitespace is insignificant @@ -136,7 +206,10 @@ Surrounding whitespace is insignificant --- -(source_file (root_expression (closed_expression (variable)))) +(source_file + (root_expression + (closed_expression + (variable)))) ================== Forward positional element access @@ -152,8 +225,10 @@ example($0, $1) (function_call name: (function_name) (argument_list - (positional_argument (positional_element_access)) - (positional_argument (positional_element_access))))))) + (positional_argument + (positional_element_access)) + (positional_argument + (positional_element_access))))))) ================== Reverse positional element access @@ -169,8 +244,10 @@ example($^0, $^1) (function_call name: (function_name) (argument_list - (positional_argument (positional_element_access)) - (positional_argument (positional_element_access))))))) + (positional_argument + (positional_element_access)) + (positional_argument + (positional_element_access))))))) ================== Positional element access pipeline @@ -184,4 +261,5 @@ $^0 | upper (root_expression (closed_expression (positional_element_access) - (function_call name: (function_name))))) + (function_call + name: (function_name))))) From d4944c8666520c89d2f93e7d8f22298cbac28547 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20L=2E=20Charlier?= Date: Wed, 12 Aug 2026 23:54:14 +0200 Subject: [PATCH 2/2] fix: reject spaced record access --- grammar.js | 28 +- src/grammar.json | 123 ++- src/node-types.json | 50 +- src/parser.c | 1839 +++++++++++++++++-------------- test/corpus/compound_values.txt | 31 +- test/corpus/invalid.txt | 72 +- test/corpus/references.txt | 12 +- 7 files changed, 1270 insertions(+), 885 deletions(-) diff --git a/grammar.js b/grammar.js index cf0b462..1b8af3a 100644 --- a/grammar.js +++ b/grammar.js @@ -101,27 +101,43 @@ export default grammar({ $.backtick_quoted_literal, ), - unquoted_record_field_name: (_) => /[A-Za-z]+(?:-[A-Za-z0-9]+)*/, + unquoted_record_field_name: (_) => /[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*/, numeric_literal: (_) => /-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?/, variable: (_) => /@[A-Za-z][A-Za-z0-9]*/, record_access: ($) => seq( - optional(field("root", $.original_input)), - repeat1(seq(".", field("field", $.record_field_selector))), + choice( + field("field", $.record_field_selector), + seq( + field("root", $.original_input), + field("field", $.original_record_field_selector), + ), + ), + repeat(field("field", $.immediate_record_field_selector)), ), - original_input: (_) => "^", + original_input: (_) => /\^\./, record_field_selector: ($) => choice( $.named_record_field, $.positional_record_field, ), - named_record_field: (_) => /[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*/, + immediate_record_field_selector: ($) => choice( + alias(token.immediate(/\.[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*/), $.named_record_field), + alias(token.immediate(/\.(?:0|[1-9][0-9]*)/), $.positional_record_field), + ), + + original_record_field_selector: ($) => choice( + alias(token.immediate(prec(-1, /[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*/)), $.named_record_field), + alias(token.immediate(prec(-1, /(?:0|[1-9][0-9]*)/)), $.positional_record_field), + ), + + named_record_field: (_) => /\.[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*/, - positional_record_field: (_) => /(?:0|[1-9][0-9]*)/, + positional_record_field: (_) => /\.(?:0|[1-9][0-9]*)/, positional_element_access: (_) => /\$\^?(?:0|[1-9][0-9]*)/, diff --git a/src/grammar.json b/src/grammar.json index 099da44..1a8e50b 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -408,7 +408,7 @@ }, "unquoted_record_field_name": { "type": "PATTERN", - "value": "[A-Za-z]+(?:-[A-Za-z0-9]+)*" + "value": "[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*" }, "numeric_literal": { "type": "PATTERN", @@ -426,42 +426,51 @@ "members": [ { "type": "FIELD", - "name": "root", + "name": "field", "content": { "type": "SYMBOL", - "name": "original_input" + "name": "record_field_selector" } }, { - "type": "BLANK" + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "root", + "content": { + "type": "SYMBOL", + "name": "original_input" + } + }, + { + "type": "FIELD", + "name": "field", + "content": { + "type": "SYMBOL", + "name": "original_record_field_selector" + } + } + ] } ] }, { - "type": "REPEAT1", + "type": "REPEAT", "content": { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "." - }, - { - "type": "FIELD", - "name": "field", - "content": { - "type": "SYMBOL", - "name": "record_field_selector" - } - } - ] + "type": "FIELD", + "name": "field", + "content": { + "type": "SYMBOL", + "name": "immediate_record_field_selector" + } } } ] }, "original_input": { - "type": "STRING", - "value": "^" + "type": "PATTERN", + "value": "\\^\\." }, "record_field_selector": { "type": "CHOICE", @@ -476,13 +485,79 @@ } ] }, + "immediate_record_field_selector": { + "type": "CHOICE", + "members": [ + { + "type": "ALIAS", + "content": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "PATTERN", + "value": "\\.[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*" + } + }, + "named": true, + "value": "named_record_field" + }, + { + "type": "ALIAS", + "content": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "PATTERN", + "value": "\\.(?:0|[1-9][0-9]*)" + } + }, + "named": true, + "value": "positional_record_field" + } + ] + }, + "original_record_field_selector": { + "type": "CHOICE", + "members": [ + { + "type": "ALIAS", + "content": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "PREC", + "value": -1, + "content": { + "type": "PATTERN", + "value": "[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*" + } + } + }, + "named": true, + "value": "named_record_field" + }, + { + "type": "ALIAS", + "content": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "PREC", + "value": -1, + "content": { + "type": "PATTERN", + "value": "(?:0|[1-9][0-9]*)" + } + } + }, + "named": true, + "value": "positional_record_field" + } + ] + }, "named_record_field": { "type": "PATTERN", - "value": "[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*" + "value": "\\.[A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)*" }, "positional_record_field": { "type": "PATTERN", - "value": "(?:0|[1-9][0-9]*)" + "value": "\\.(?:0|[1-9][0-9]*)" }, "positional_element_access": { "type": "PATTERN", diff --git a/src/node-types.json b/src/node-types.json index 12f1b68..835618e 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -201,6 +201,25 @@ ] } }, + { + "type": "immediate_record_field_selector", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "named_record_field", + "named": true + }, + { + "type": "positional_record_field", + "named": true + } + ] + } + }, { "type": "open_expression", "named": true, @@ -216,6 +235,25 @@ ] } }, + { + "type": "original_record_field_selector", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "named_record_field", + "named": true + }, + { + "type": "positional_record_field", + "named": true + } + ] + } + }, { "type": "positional_argument", "named": true, @@ -239,6 +277,14 @@ "multiple": true, "required": true, "types": [ + { + "type": "immediate_record_field_selector", + "named": true + }, + { + "type": "original_record_field_selector", + "named": true + }, { "type": "record_field_selector", "named": true @@ -414,10 +460,6 @@ "type": ",", "named": false }, - { - "type": ".", - "named": false - }, { "type": ":", "named": false diff --git a/src/parser.c b/src/parser.c index bd4c985..33248a2 100644 --- a/src/parser.c +++ b/src/parser.c @@ -7,16 +7,16 @@ #endif #define LANGUAGE_VERSION 15 -#define STATE_COUNT 76 +#define STATE_COUNT 79 #define LARGE_STATE_COUNT 3 -#define SYMBOL_COUNT 56 +#define SYMBOL_COUNT 61 #define ALIAS_COUNT 0 -#define TOKEN_COUNT 29 +#define TOKEN_COUNT 32 #define EXTERNAL_TOKEN_COUNT 0 #define FIELD_COUNT 4 #define MAX_ALIAS_SEQUENCE_LENGTH 7 #define MAX_RESERVED_WORD_SET_SIZE 0 -#define PRODUCTION_ID_COUNT 7 +#define PRODUCTION_ID_COUNT 8 #define SUPERTYPE_COUNT 4 enum ts_symbol_identifiers { @@ -33,48 +33,53 @@ enum ts_symbol_identifiers { sym_unquoted_record_field_name = 11, sym_numeric_literal = 12, sym_variable = 13, - anon_sym_DOT = 14, - sym_original_input = 15, - sym_named_record_field = 16, - sym_positional_record_field = 17, - sym_positional_element_access = 18, - anon_sym_POUNDtrue = 19, - anon_sym_POUNDfalse = 20, - anon_sym_DQUOTE = 21, - sym_double_quoted_content = 22, - sym_escape_sequence = 23, - anon_sym_BQUOTE = 24, - sym_backtick_quoted_content = 25, - sym_date_literal = 26, - sym_date_time_literal = 27, - sym_time_literal = 28, - sym_source_file = 29, - sym_root_expression = 30, - sym_open_expression = 31, - sym_closed_expression = 32, - sym_expression = 33, - sym_function_call = 34, - sym_argument_list = 35, - sym_positional_argument = 36, - sym_value = 37, - sym_array_literal = 38, - sym_tuple_literal = 39, - sym_record_literal = 40, - sym_record_field = 41, - sym_record_field_name = 42, - sym_record_access = 43, - sym_record_field_selector = 44, - sym_boolean_literal = 45, - sym_quoted_literal = 46, - sym_double_quoted_literal = 47, - sym_backtick_quoted_literal = 48, - sym_temporal_literal = 49, - aux_sym_open_expression_repeat1 = 50, - aux_sym_argument_list_repeat1 = 51, - aux_sym_array_literal_repeat1 = 52, - aux_sym_record_literal_repeat1 = 53, - aux_sym_record_access_repeat1 = 54, - aux_sym_double_quoted_literal_repeat1 = 55, + sym_original_input = 14, + aux_sym_immediate_record_field_selector_token1 = 15, + aux_sym_immediate_record_field_selector_token2 = 16, + aux_sym_original_record_field_selector_token1 = 17, + aux_sym_original_record_field_selector_token2 = 18, + sym_named_record_field = 19, + sym_positional_record_field = 20, + sym_positional_element_access = 21, + anon_sym_POUNDtrue = 22, + anon_sym_POUNDfalse = 23, + anon_sym_DQUOTE = 24, + sym_double_quoted_content = 25, + sym_escape_sequence = 26, + anon_sym_BQUOTE = 27, + sym_backtick_quoted_content = 28, + sym_date_literal = 29, + sym_date_time_literal = 30, + sym_time_literal = 31, + sym_source_file = 32, + sym_root_expression = 33, + sym_open_expression = 34, + sym_closed_expression = 35, + sym_expression = 36, + sym_function_call = 37, + sym_argument_list = 38, + sym_positional_argument = 39, + sym_value = 40, + sym_array_literal = 41, + sym_tuple_literal = 42, + sym_record_literal = 43, + sym_record_field = 44, + sym_record_field_name = 45, + sym_record_access = 46, + sym_record_field_selector = 47, + sym_immediate_record_field_selector = 48, + sym_original_record_field_selector = 49, + sym_boolean_literal = 50, + sym_quoted_literal = 51, + sym_double_quoted_literal = 52, + sym_backtick_quoted_literal = 53, + sym_temporal_literal = 54, + aux_sym_open_expression_repeat1 = 55, + aux_sym_argument_list_repeat1 = 56, + aux_sym_array_literal_repeat1 = 57, + aux_sym_record_literal_repeat1 = 58, + aux_sym_record_access_repeat1 = 59, + aux_sym_double_quoted_literal_repeat1 = 60, }; static const char * const ts_symbol_names[] = { @@ -92,8 +97,11 @@ static const char * const ts_symbol_names[] = { [sym_unquoted_record_field_name] = "unquoted_record_field_name", [sym_numeric_literal] = "numeric_literal", [sym_variable] = "variable", - [anon_sym_DOT] = ".", [sym_original_input] = "original_input", + [aux_sym_immediate_record_field_selector_token1] = "named_record_field", + [aux_sym_immediate_record_field_selector_token2] = "positional_record_field", + [aux_sym_original_record_field_selector_token1] = "named_record_field", + [aux_sym_original_record_field_selector_token2] = "positional_record_field", [sym_named_record_field] = "named_record_field", [sym_positional_record_field] = "positional_record_field", [sym_positional_element_access] = "positional_element_access", @@ -123,6 +131,8 @@ static const char * const ts_symbol_names[] = { [sym_record_field_name] = "record_field_name", [sym_record_access] = "record_access", [sym_record_field_selector] = "record_field_selector", + [sym_immediate_record_field_selector] = "immediate_record_field_selector", + [sym_original_record_field_selector] = "original_record_field_selector", [sym_boolean_literal] = "boolean_literal", [sym_quoted_literal] = "quoted_literal", [sym_double_quoted_literal] = "double_quoted_literal", @@ -151,8 +161,11 @@ static const TSSymbol ts_symbol_map[] = { [sym_unquoted_record_field_name] = sym_unquoted_record_field_name, [sym_numeric_literal] = sym_numeric_literal, [sym_variable] = sym_variable, - [anon_sym_DOT] = anon_sym_DOT, [sym_original_input] = sym_original_input, + [aux_sym_immediate_record_field_selector_token1] = sym_named_record_field, + [aux_sym_immediate_record_field_selector_token2] = sym_positional_record_field, + [aux_sym_original_record_field_selector_token1] = sym_named_record_field, + [aux_sym_original_record_field_selector_token2] = sym_positional_record_field, [sym_named_record_field] = sym_named_record_field, [sym_positional_record_field] = sym_positional_record_field, [sym_positional_element_access] = sym_positional_element_access, @@ -182,6 +195,8 @@ static const TSSymbol ts_symbol_map[] = { [sym_record_field_name] = sym_record_field_name, [sym_record_access] = sym_record_access, [sym_record_field_selector] = sym_record_field_selector, + [sym_immediate_record_field_selector] = sym_immediate_record_field_selector, + [sym_original_record_field_selector] = sym_original_record_field_selector, [sym_boolean_literal] = sym_boolean_literal, [sym_quoted_literal] = sym_quoted_literal, [sym_double_quoted_literal] = sym_double_quoted_literal, @@ -252,11 +267,23 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, - [anon_sym_DOT] = { + [sym_original_input] = { .visible = true, - .named = false, + .named = true, }, - [sym_original_input] = { + [aux_sym_immediate_record_field_selector_token1] = { + .visible = true, + .named = true, + }, + [aux_sym_immediate_record_field_selector_token2] = { + .visible = true, + .named = true, + }, + [aux_sym_original_record_field_selector_token1] = { + .visible = true, + .named = true, + }, + [aux_sym_original_record_field_selector_token2] = { .visible = true, .named = true, }, @@ -378,6 +405,14 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [sym_immediate_record_field_selector] = { + .visible = true, + .named = true, + }, + [sym_original_record_field_selector] = { + .visible = true, + .named = true, + }, [sym_boolean_literal] = { .visible = true, .named = true, @@ -444,26 +479,32 @@ static const char * const ts_field_names[] = { static const TSMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { [1] = {.index = 0, .length = 1}, [2] = {.index = 1, .length = 1}, - [3] = {.index = 2, .length = 1}, - [4] = {.index = 3, .length = 2}, - [5] = {.index = 5, .length = 2}, - [6] = {.index = 7, .length = 2}, + [3] = {.index = 2, .length = 2}, + [4] = {.index = 4, .length = 2}, + [5] = {.index = 6, .length = 3}, + [6] = {.index = 9, .length = 2}, + [7] = {.index = 11, .length = 2}, }; static const TSFieldMapEntry ts_field_map_entries[] = { [0] = {field_name, 0}, [1] = - {field_field, 0, .inherited = true}, + {field_field, 0}, [2] = {field_field, 1}, - [3] = + {field_root, 0}, + [4] = + {field_field, 0}, {field_field, 1, .inherited = true}, + [6] = + {field_field, 1}, + {field_field, 2, .inherited = true}, {field_root, 0}, - [5] = + [9] = {field_field, 0, .inherited = true}, {field_field, 1, .inherited = true}, - [7] = + [11] = {field_name, 0}, {field_value, 2}, }; @@ -553,6 +594,9 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [73] = 73, [74] = 74, [75] = 75, + [76] = 76, + [77] = 77, + [78] = 78, }; static const TSSymbol ts_supertype_symbols[SUPERTYPE_COUNT] = { @@ -597,241 +641,234 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { eof = lexer->eof(lexer); switch (state) { case 0: - if (eof) ADVANCE(56); + if (eof) ADVANCE(62); ADVANCE_MAP( - '"', 87, - '#', 5, + '"', 96, + '#', 4, '$', 12, - '(', 58, - ')', 59, - ',', 63, + '(', 64, + ')', 65, + ',', 68, '-', 11, - '.', 78, - '0', 74, - ':', 70, - '@', 50, - 'T', 66, - '\\', 29, - '^', 79, - '`', 91, - '{', 64, - '|', 57, - '}', 65, + '.', 14, + '0', 78, + ':', 75, + '@', 52, + 'T', 71, + '\\', 31, + '^', 10, + '`', 100, + '{', 69, + '|', 63, + '}', 70, ); if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || - lookahead == 0xfeff) SKIP(54); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(75); + lookahead == 0xfeff) SKIP(58); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(79); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(60); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(66); END_STATE(); case 1: ADVANCE_MAP( - '"', 87, - '#', 5, + '"', 96, + '#', 4, '$', 12, '-', 11, - '.', 78, - '0', 74, - ':', 69, - '@', 50, - 'T', 68, - '^', 79, - '`', 91, - '{', 64, - '}', 65, + '.', 15, + '0', 78, + ':', 74, + '@', 52, + 'T', 73, + '^', 10, + '`', 100, + '{', 69, + '}', 70, ); if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || lookahead == 0xfeff) SKIP(1); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(75); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(79); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(77); END_STATE(); case 2: - if (lookahead == '"') ADVANCE(87); - if (lookahead == '\\') ADVANCE(29); + if (lookahead == '"') ADVANCE(96); + if (lookahead == '\\') ADVANCE(31); if (lookahead == '\n' || - lookahead == '\r') SKIP(4); + lookahead == '\r') SKIP(3); if (('\t' <= lookahead && lookahead <= '\f') || lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || - lookahead == 0xfeff) ADVANCE(88); - if (lookahead != 0) ADVANCE(89); + lookahead == 0xfeff) ADVANCE(97); + if (lookahead != 0) ADVANCE(98); END_STATE(); case 3: - if (lookahead == '"') ADVANCE(87); - if (lookahead == '`') ADVANCE(91); + if (lookahead == '"') ADVANCE(96); if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || lookahead == 0xfeff) SKIP(3); - if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72); END_STATE(); case 4: - if (lookahead == '"') ADVANCE(87); - if (('\t' <= lookahead && lookahead <= '\r') || - lookahead == ' ' || - lookahead == 0x200b || - lookahead == 0x2060 || - lookahead == 0xfeff) SKIP(4); + if (lookahead == '"') ADVANCE(41); + if (lookahead == 'f') ADVANCE(24); + if (lookahead == 't') ADVANCE(28); END_STATE(); case 5: - if (lookahead == '"') ADVANCE(39); - if (lookahead == 'f') ADVANCE(22); - if (lookahead == 't') ADVANCE(26); + if (lookahead == '"') ADVANCE(105); END_STATE(); case 6: - if (lookahead == '"') ADVANCE(96); + if (lookahead == '"') ADVANCE(103); + if (lookahead == ' ' || + lookahead == 'T') ADVANCE(49); END_STATE(); case 7: - if (lookahead == '"') ADVANCE(94); - if (lookahead == ' ' || - lookahead == 'T') ADVANCE(47); + if (lookahead == '"') ADVANCE(104); END_STATE(); case 8: - if (lookahead == '"') ADVANCE(95); + if (lookahead == '-') ADVANCE(48); END_STATE(); case 9: - if (lookahead == '-') ADVANCE(46); + if (lookahead == '-') ADVANCE(44); END_STATE(); case 10: - if (lookahead == '-') ADVANCE(42); + if (lookahead == '.') ADVANCE(82); END_STATE(); case 11: - if (lookahead == '0') ADVANCE(74); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(75); + if (lookahead == '0') ADVANCE(78); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(79); END_STATE(); case 12: - if (lookahead == '0') ADVANCE(83); + if (lookahead == '0') ADVANCE(92); if (lookahead == '^') ADVANCE(13); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(84); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(93); END_STATE(); case 13: - if (lookahead == '0') ADVANCE(83); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(84); + if (lookahead == '0') ADVANCE(92); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(93); END_STATE(); case 14: - if (lookahead == '0') ADVANCE(81); - if (('\t' <= lookahead && lookahead <= '\r') || - lookahead == ' ' || - lookahead == 0x200b || - lookahead == 0x2060 || - lookahead == 0xfeff) SKIP(14); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(82); + if (lookahead == '0') ADVANCE(84); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(85); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(80); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(83); END_STATE(); case 15: - if (lookahead == ':') ADVANCE(40); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(34); + if (lookahead == '0') ADVANCE(90); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(91); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(89); END_STATE(); case 16: - if (lookahead == ':') ADVANCE(41); + if (lookahead == '0') ADVANCE(87); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(88); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(86); END_STATE(); case 17: - if (lookahead == ':') ADVANCE(43); + if (lookahead == ':') ADVANCE(42); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(36); END_STATE(); case 18: - if (lookahead == ':') ADVANCE(49); + if (lookahead == ':') ADVANCE(43); END_STATE(); case 19: - if (lookahead == '=') ADVANCE(71); + if (lookahead == ':') ADVANCE(45); END_STATE(); case 20: - if (lookahead == '`') ADVANCE(91); + if (lookahead == ':') ADVANCE(51); + END_STATE(); + case 21: + if (lookahead == '=') ADVANCE(76); + END_STATE(); + case 22: + if (lookahead == '`') ADVANCE(100); if (lookahead == '\n' || - lookahead == '\r') SKIP(21); + lookahead == '\r') SKIP(23); if (('\t' <= lookahead && lookahead <= '\f') || lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || - lookahead == 0xfeff) ADVANCE(92); - if (lookahead != 0) ADVANCE(93); + lookahead == 0xfeff) ADVANCE(101); + if (lookahead != 0) ADVANCE(102); END_STATE(); - case 21: - if (lookahead == '`') ADVANCE(91); + case 23: + if (lookahead == '`') ADVANCE(100); if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || - lookahead == 0xfeff) SKIP(21); - END_STATE(); - case 22: - if (lookahead == 'a') ADVANCE(25); - END_STATE(); - case 23: - if (lookahead == 'e') ADVANCE(85); + lookahead == 0xfeff) SKIP(23); END_STATE(); case 24: - if (lookahead == 'e') ADVANCE(86); + if (lookahead == 'a') ADVANCE(27); END_STATE(); case 25: - if (lookahead == 'l') ADVANCE(27); + if (lookahead == 'e') ADVANCE(94); END_STATE(); case 26: - if (lookahead == 'r') ADVANCE(28); + if (lookahead == 'e') ADVANCE(95); END_STATE(); case 27: - if (lookahead == 's') ADVANCE(24); + if (lookahead == 'l') ADVANCE(29); END_STATE(); case 28: - if (lookahead == 'u') ADVANCE(23); + if (lookahead == 'r') ADVANCE(30); END_STATE(); case 29: - if (lookahead == '"' || - lookahead == '\\') ADVANCE(90); + if (lookahead == 's') ADVANCE(26); END_STATE(); case 30: - if (('\t' <= lookahead && lookahead <= '\r') || - lookahead == ' ' || - lookahead == 0x200b || - lookahead == 0x2060 || - lookahead == 0xfeff) SKIP(30); - if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(62); + if (lookahead == 'u') ADVANCE(25); END_STATE(); case 31: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(76); + if (lookahead == '"' || + lookahead == '\\') ADVANCE(99); END_STATE(); case 32: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(73); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ' || + lookahead == 0x200b || + lookahead == 0x2060 || + lookahead == 0xfeff) SKIP(32); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(61); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(67); END_STATE(); case 33: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(15); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(77); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(66); END_STATE(); case 34: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(9); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(80); END_STATE(); case 35: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(16); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(17); END_STATE(); case 36: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(6); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(8); END_STATE(); case 37: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(7); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(18); END_STATE(); case 38: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(8); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(5); END_STATE(); case 39: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(33); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(6); END_STATE(); case 40: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(7); END_STATE(); case 41: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(36); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); END_STATE(); case 42: if (('0' <= lookahead && lookahead <= '9')) ADVANCE(37); @@ -840,239 +877,301 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (('0' <= lookahead && lookahead <= '9')) ADVANCE(38); END_STATE(); case 44: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(10); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(39); END_STATE(); case 45: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(18); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(40); END_STATE(); case 46: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(44); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(9); END_STATE(); case 47: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(45); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(20); END_STATE(); case 48: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(17); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(46); END_STATE(); case 49: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(48); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(47); END_STATE(); case 50: - if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(77); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(19); END_STATE(); case 51: - if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(62); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(50); END_STATE(); case 52: + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(81); + END_STATE(); + case 53: + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(67); + END_STATE(); + case 54: if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(80); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(83); END_STATE(); - case 53: + case 55: if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(73); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(77); END_STATE(); - case 54: - if (eof) ADVANCE(56); + case 56: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(89); + END_STATE(); + case 57: + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(86); + END_STATE(); + case 58: + if (eof) ADVANCE(62); ADVANCE_MAP( - '"', 87, - '#', 5, + '"', 96, + '#', 4, '$', 12, - '(', 58, - ')', 59, - ',', 63, + '(', 64, + ')', 65, + ',', 68, '-', 11, - '.', 78, - '0', 74, - ':', 70, - '@', 50, - 'T', 66, - '^', 79, - '`', 91, - '{', 64, - '|', 57, - '}', 65, + '.', 15, + '0', 78, + ':', 75, + '@', 52, + 'T', 71, + '^', 10, + '`', 100, + '{', 69, + '|', 63, + '}', 70, ); if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || - lookahead == 0xfeff) SKIP(54); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(75); + lookahead == 0xfeff) SKIP(58); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(79); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(60); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(66); END_STATE(); - case 55: - if (eof) ADVANCE(56); + case 59: + if (eof) ADVANCE(62); ADVANCE_MAP( - '"', 87, - '#', 5, + '"', 96, + '#', 4, '$', 12, - ')', 59, - ',', 63, + ')', 65, + ',', 68, '-', 11, - '.', 78, - '0', 74, - ':', 19, - '@', 50, - 'T', 67, - '^', 79, - '`', 91, - '{', 64, - '|', 57, - '}', 65, + '.', 15, + '0', 78, + ':', 21, + '@', 52, + 'T', 72, + '^', 10, + '`', 100, + '{', 69, + '|', 63, + '}', 70, ); if (('\t' <= lookahead && lookahead <= '\r') || lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || - lookahead == 0xfeff) SKIP(55); - if (('1' <= lookahead && lookahead <= '9')) ADVANCE(75); + lookahead == 0xfeff) SKIP(59); + if (('1' <= lookahead && lookahead <= '9')) ADVANCE(79); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(62); - END_STATE(); - case 56: - ACCEPT_TOKEN(ts_builtin_sym_end); - END_STATE(); - case 57: - ACCEPT_TOKEN(anon_sym_PIPE); - END_STATE(); - case 58: - ACCEPT_TOKEN(anon_sym_LPAREN); - END_STATE(); - case 59: - ACCEPT_TOKEN(anon_sym_RPAREN); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(67); END_STATE(); case 60: - ACCEPT_TOKEN(sym_function_name); - if (lookahead == '-') ADVANCE(32); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(80); + if (eof) ADVANCE(62); + if (lookahead == '"') ADVANCE(96); + if (lookahead == ')') ADVANCE(65); + if (lookahead == ',') ADVANCE(68); + if (lookahead == '.') ADVANCE(14); + if (lookahead == '`') ADVANCE(100); + if (lookahead == '|') ADVANCE(63); + if (lookahead == '}') ADVANCE(70); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ' || + lookahead == 0x200b || + lookahead == 0x2060 || + lookahead == 0xfeff) SKIP(61); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(60); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(77); END_STATE(); case 61: - ACCEPT_TOKEN(sym_function_name); - if (lookahead == '-') ADVANCE(32); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(73); + if (eof) ADVANCE(62); + if (lookahead == '"') ADVANCE(96); + if (lookahead == ')') ADVANCE(65); + if (lookahead == ',') ADVANCE(68); + if (lookahead == '`') ADVANCE(100); + if (lookahead == '|') ADVANCE(63); + if (lookahead == '}') ADVANCE(70); + if (('\t' <= lookahead && lookahead <= '\r') || + lookahead == ' ' || + lookahead == 0x200b || + lookahead == 0x2060 || + lookahead == 0xfeff) SKIP(61); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(61); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(77); END_STATE(); case 62: - ACCEPT_TOKEN(sym_function_name); - if (lookahead == '-') ADVANCE(51); - if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(62); + ACCEPT_TOKEN(ts_builtin_sym_end); END_STATE(); case 63: - ACCEPT_TOKEN(anon_sym_COMMA); + ACCEPT_TOKEN(anon_sym_PIPE); END_STATE(); case 64: - ACCEPT_TOKEN(anon_sym_LBRACE); + ACCEPT_TOKEN(anon_sym_LPAREN); END_STATE(); case 65: - ACCEPT_TOKEN(anon_sym_RBRACE); + ACCEPT_TOKEN(anon_sym_RPAREN); END_STATE(); case 66: - ACCEPT_TOKEN(anon_sym_T); - if (lookahead == '-') ADVANCE(32); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(80); + ACCEPT_TOKEN(sym_function_name); + if (lookahead == '-') ADVANCE(33); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(77); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(60); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(66); END_STATE(); case 67: - ACCEPT_TOKEN(anon_sym_T); - if (lookahead == '-') ADVANCE(51); + ACCEPT_TOKEN(sym_function_name); + if (lookahead == '-') ADVANCE(53); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(62); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(67); END_STATE(); case 68: - ACCEPT_TOKEN(anon_sym_T); - if (lookahead == '-') ADVANCE(53); - if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72); + ACCEPT_TOKEN(anon_sym_COMMA); END_STATE(); case 69: - ACCEPT_TOKEN(anon_sym_COLON); + ACCEPT_TOKEN(anon_sym_LBRACE); END_STATE(); case 70: - ACCEPT_TOKEN(anon_sym_COLON); - if (lookahead == '=') ADVANCE(71); + ACCEPT_TOKEN(anon_sym_RBRACE); END_STATE(); case 71: - ACCEPT_TOKEN(anon_sym_COLON_EQ); + ACCEPT_TOKEN(anon_sym_T); + if (lookahead == '-') ADVANCE(33); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(77); + if (('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(66); END_STATE(); case 72: - ACCEPT_TOKEN(sym_unquoted_record_field_name); + ACCEPT_TOKEN(anon_sym_T); if (lookahead == '-') ADVANCE(53); if (('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(72); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(67); END_STATE(); case 73: - ACCEPT_TOKEN(sym_unquoted_record_field_name); - if (lookahead == '-') ADVANCE(53); + ACCEPT_TOKEN(anon_sym_T); + if (lookahead == '-') ADVANCE(55); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(73); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(77); END_STATE(); case 74: - ACCEPT_TOKEN(sym_numeric_literal); - if (lookahead == '.') ADVANCE(31); + ACCEPT_TOKEN(anon_sym_COLON); END_STATE(); case 75: - ACCEPT_TOKEN(sym_numeric_literal); - if (lookahead == '.') ADVANCE(31); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(75); + ACCEPT_TOKEN(anon_sym_COLON); + if (lookahead == '=') ADVANCE(76); END_STATE(); case 76: - ACCEPT_TOKEN(sym_numeric_literal); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(76); + ACCEPT_TOKEN(anon_sym_COLON_EQ); END_STATE(); case 77: - ACCEPT_TOKEN(sym_variable); + ACCEPT_TOKEN(sym_unquoted_record_field_name); + if (lookahead == '-') ADVANCE(55); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || ('a' <= lookahead && lookahead <= 'z')) ADVANCE(77); END_STATE(); case 78: - ACCEPT_TOKEN(anon_sym_DOT); + ACCEPT_TOKEN(sym_numeric_literal); + if (lookahead == '.') ADVANCE(34); END_STATE(); case 79: - ACCEPT_TOKEN(sym_original_input); + ACCEPT_TOKEN(sym_numeric_literal); + if (lookahead == '.') ADVANCE(34); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(79); END_STATE(); case 80: + ACCEPT_TOKEN(sym_numeric_literal); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(80); + END_STATE(); + case 81: + ACCEPT_TOKEN(sym_variable); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(81); + END_STATE(); + case 82: + ACCEPT_TOKEN(sym_original_input); + END_STATE(); + case 83: + ACCEPT_TOKEN(aux_sym_immediate_record_field_selector_token1); + if (lookahead == '-') ADVANCE(54); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(83); + END_STATE(); + case 84: + ACCEPT_TOKEN(aux_sym_immediate_record_field_selector_token2); + END_STATE(); + case 85: + ACCEPT_TOKEN(aux_sym_immediate_record_field_selector_token2); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(85); + END_STATE(); + case 86: + ACCEPT_TOKEN(aux_sym_original_record_field_selector_token1); + if (lookahead == '-') ADVANCE(57); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(86); + END_STATE(); + case 87: + ACCEPT_TOKEN(aux_sym_original_record_field_selector_token2); + END_STATE(); + case 88: + ACCEPT_TOKEN(aux_sym_original_record_field_selector_token2); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(88); + END_STATE(); + case 89: ACCEPT_TOKEN(sym_named_record_field); - if (lookahead == '-') ADVANCE(52); + if (lookahead == '-') ADVANCE(56); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'Z') || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(80); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(89); END_STATE(); - case 81: + case 90: ACCEPT_TOKEN(sym_positional_record_field); END_STATE(); - case 82: + case 91: ACCEPT_TOKEN(sym_positional_record_field); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(82); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(91); END_STATE(); - case 83: + case 92: ACCEPT_TOKEN(sym_positional_element_access); END_STATE(); - case 84: + case 93: ACCEPT_TOKEN(sym_positional_element_access); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(84); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(93); END_STATE(); - case 85: + case 94: ACCEPT_TOKEN(anon_sym_POUNDtrue); END_STATE(); - case 86: + case 95: ACCEPT_TOKEN(anon_sym_POUNDfalse); END_STATE(); - case 87: + case 96: ACCEPT_TOKEN(anon_sym_DQUOTE); END_STATE(); - case 88: + case 97: ACCEPT_TOKEN(sym_double_quoted_content); if (lookahead == '\t' || lookahead == 0x0b || @@ -1080,27 +1179,27 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || - lookahead == 0xfeff) ADVANCE(88); + lookahead == 0xfeff) ADVANCE(97); if (lookahead != 0 && (lookahead < '\t' || '\r' < lookahead) && lookahead != '"' && - lookahead != '\\') ADVANCE(89); + lookahead != '\\') ADVANCE(98); END_STATE(); - case 89: + case 98: ACCEPT_TOKEN(sym_double_quoted_content); if (lookahead != 0 && lookahead != '\n' && lookahead != '\r' && lookahead != '"' && - lookahead != '\\') ADVANCE(89); + lookahead != '\\') ADVANCE(98); END_STATE(); - case 90: + case 99: ACCEPT_TOKEN(sym_escape_sequence); END_STATE(); - case 91: + case 100: ACCEPT_TOKEN(anon_sym_BQUOTE); END_STATE(); - case 92: + case 101: ACCEPT_TOKEN(sym_backtick_quoted_content); if (lookahead == '\t' || lookahead == 0x0b || @@ -1108,25 +1207,25 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == ' ' || lookahead == 0x200b || lookahead == 0x2060 || - lookahead == 0xfeff) ADVANCE(92); + lookahead == 0xfeff) ADVANCE(101); if (lookahead != 0 && (lookahead < '\t' || '\r' < lookahead) && - lookahead != '`') ADVANCE(93); + lookahead != '`') ADVANCE(102); END_STATE(); - case 93: + case 102: ACCEPT_TOKEN(sym_backtick_quoted_content); if (lookahead != 0 && lookahead != '\n' && lookahead != '\r' && - lookahead != '`') ADVANCE(93); + lookahead != '`') ADVANCE(102); END_STATE(); - case 94: + case 103: ACCEPT_TOKEN(sym_date_literal); END_STATE(); - case 95: + case 104: ACCEPT_TOKEN(sym_date_time_literal); END_STATE(); - case 96: + case 105: ACCEPT_TOKEN(sym_time_literal); END_STATE(); default: @@ -1136,28 +1235,28 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { static const TSLexerMode ts_lex_modes[STATE_COUNT] = { [0] = {.lex_state = 0}, - [1] = {.lex_state = 55}, + [1] = {.lex_state = 59}, [2] = {.lex_state = 1}, - [3] = {.lex_state = 55}, - [4] = {.lex_state = 55}, - [5] = {.lex_state = 55}, - [6] = {.lex_state = 55}, - [7] = {.lex_state = 55}, - [8] = {.lex_state = 55}, - [9] = {.lex_state = 0}, - [10] = {.lex_state = 0}, - [11] = {.lex_state = 3}, - [12] = {.lex_state = 0}, - [13] = {.lex_state = 55}, - [14] = {.lex_state = 55}, - [15] = {.lex_state = 55}, - [16] = {.lex_state = 0}, - [17] = {.lex_state = 55}, - [18] = {.lex_state = 0}, - [19] = {.lex_state = 0}, - [20] = {.lex_state = 0}, - [21] = {.lex_state = 0}, - [22] = {.lex_state = 0}, + [3] = {.lex_state = 59}, + [4] = {.lex_state = 59}, + [5] = {.lex_state = 59}, + [6] = {.lex_state = 59}, + [7] = {.lex_state = 59}, + [8] = {.lex_state = 59}, + [9] = {.lex_state = 60}, + [10] = {.lex_state = 60}, + [11] = {.lex_state = 60}, + [12] = {.lex_state = 60}, + [13] = {.lex_state = 60}, + [14] = {.lex_state = 60}, + [15] = {.lex_state = 60}, + [16] = {.lex_state = 60}, + [17] = {.lex_state = 60}, + [18] = {.lex_state = 60}, + [19] = {.lex_state = 59}, + [20] = {.lex_state = 59}, + [21] = {.lex_state = 59}, + [22] = {.lex_state = 59}, [23] = {.lex_state = 0}, [24] = {.lex_state = 0}, [25] = {.lex_state = 0}, @@ -1165,37 +1264,37 @@ static const TSLexerMode ts_lex_modes[STATE_COUNT] = { [27] = {.lex_state = 0}, [28] = {.lex_state = 0}, [29] = {.lex_state = 0}, - [30] = {.lex_state = 2}, - [31] = {.lex_state = 2}, + [30] = {.lex_state = 0}, + [31] = {.lex_state = 0}, [32] = {.lex_state = 0}, - [33] = {.lex_state = 2}, - [34] = {.lex_state = 0}, - [35] = {.lex_state = 0}, - [36] = {.lex_state = 30}, + [33] = {.lex_state = 0}, + [34] = {.lex_state = 2}, + [35] = {.lex_state = 2}, + [36] = {.lex_state = 2}, [37] = {.lex_state = 0}, [38] = {.lex_state = 0}, [39] = {.lex_state = 0}, [40] = {.lex_state = 0}, [41] = {.lex_state = 0}, - [42] = {.lex_state = 55}, + [42] = {.lex_state = 0}, [43] = {.lex_state = 0}, - [44] = {.lex_state = 14}, + [44] = {.lex_state = 59}, [45] = {.lex_state = 0}, - [46] = {.lex_state = 0}, + [46] = {.lex_state = 16}, [47] = {.lex_state = 0}, - [48] = {.lex_state = 30}, + [48] = {.lex_state = 0}, [49] = {.lex_state = 0}, - [50] = {.lex_state = 0}, + [50] = {.lex_state = 32}, [51] = {.lex_state = 0}, [52] = {.lex_state = 0}, [53] = {.lex_state = 0}, [54] = {.lex_state = 0}, [55] = {.lex_state = 0}, - [56] = {.lex_state = 0}, + [56] = {.lex_state = 32}, [57] = {.lex_state = 0}, [58] = {.lex_state = 0}, - [59] = {.lex_state = 0}, - [60] = {.lex_state = 20}, + [59] = {.lex_state = 22}, + [60] = {.lex_state = 0}, [61] = {.lex_state = 0}, [62] = {.lex_state = 0}, [63] = {.lex_state = 0}, @@ -1206,11 +1305,14 @@ static const TSLexerMode ts_lex_modes[STATE_COUNT] = { [68] = {.lex_state = 0}, [69] = {.lex_state = 0}, [70] = {.lex_state = 0}, - [71] = {.lex_state = 55}, - [72] = {.lex_state = 0}, + [71] = {.lex_state = 0}, + [72] = {.lex_state = 59}, [73] = {.lex_state = 0}, - [74] = {.lex_state = 55}, + [74] = {.lex_state = 0}, [75] = {.lex_state = 0}, + [76] = {.lex_state = 0}, + [77] = {.lex_state = 0}, + [78] = {.lex_state = 59}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { @@ -1229,8 +1331,11 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_unquoted_record_field_name] = ACTIONS(1), [sym_numeric_literal] = ACTIONS(1), [sym_variable] = ACTIONS(1), - [anon_sym_DOT] = ACTIONS(1), [sym_original_input] = ACTIONS(1), + [aux_sym_immediate_record_field_selector_token1] = ACTIONS(1), + [aux_sym_immediate_record_field_selector_token2] = ACTIONS(1), + [aux_sym_original_record_field_selector_token1] = ACTIONS(1), + [aux_sym_original_record_field_selector_token2] = ACTIONS(1), [sym_named_record_field] = ACTIONS(1), [sym_positional_record_field] = ACTIONS(1), [sym_positional_element_access] = ACTIONS(1), @@ -1244,30 +1349,31 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_time_literal] = ACTIONS(1), }, [STATE(1)] = { - [sym_source_file] = STATE(67), - [sym_root_expression] = STATE(69), - [sym_open_expression] = STATE(75), - [sym_closed_expression] = STATE(75), - [sym_expression] = STATE(45), - [sym_function_call] = STATE(64), - [sym_value] = STATE(57), - [sym_array_literal] = STATE(22), - [sym_tuple_literal] = STATE(22), - [sym_record_literal] = STATE(22), - [sym_record_access] = STATE(22), - [sym_boolean_literal] = STATE(22), - [sym_quoted_literal] = STATE(22), - [sym_double_quoted_literal] = STATE(21), - [sym_backtick_quoted_literal] = STATE(21), - [sym_temporal_literal] = STATE(22), - [aux_sym_record_access_repeat1] = STATE(10), + [sym_source_file] = STATE(73), + [sym_root_expression] = STATE(75), + [sym_open_expression] = STATE(76), + [sym_closed_expression] = STATE(76), + [sym_expression] = STATE(47), + [sym_function_call] = STATE(60), + [sym_value] = STATE(62), + [sym_array_literal] = STATE(25), + [sym_tuple_literal] = STATE(25), + [sym_record_literal] = STATE(25), + [sym_record_access] = STATE(25), + [sym_record_field_selector] = STATE(9), + [sym_boolean_literal] = STATE(25), + [sym_quoted_literal] = STATE(25), + [sym_double_quoted_literal] = STATE(26), + [sym_backtick_quoted_literal] = STATE(26), + [sym_temporal_literal] = STATE(25), [sym_function_name] = ACTIONS(3), [anon_sym_LBRACE] = ACTIONS(5), [anon_sym_T] = ACTIONS(7), [sym_numeric_literal] = ACTIONS(9), [sym_variable] = ACTIONS(9), - [anon_sym_DOT] = ACTIONS(11), - [sym_original_input] = ACTIONS(13), + [sym_original_input] = ACTIONS(11), + [sym_named_record_field] = ACTIONS(13), + [sym_positional_record_field] = ACTIONS(13), [sym_positional_element_access] = ACTIONS(9), [anon_sym_POUNDtrue] = ACTIONS(15), [anon_sym_POUNDfalse] = ACTIONS(15), @@ -1278,19 +1384,19 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_time_literal] = ACTIONS(21), }, [STATE(2)] = { - [sym_value] = STATE(37), - [sym_array_literal] = STATE(22), - [sym_tuple_literal] = STATE(22), - [sym_record_literal] = STATE(22), - [sym_record_field] = STATE(41), - [sym_record_field_name] = STATE(74), - [sym_record_access] = STATE(22), - [sym_boolean_literal] = STATE(22), - [sym_quoted_literal] = STATE(22), - [sym_double_quoted_literal] = STATE(42), - [sym_backtick_quoted_literal] = STATE(42), - [sym_temporal_literal] = STATE(22), - [aux_sym_record_access_repeat1] = STATE(10), + [sym_value] = STATE(40), + [sym_array_literal] = STATE(25), + [sym_tuple_literal] = STATE(25), + [sym_record_literal] = STATE(25), + [sym_record_field] = STATE(42), + [sym_record_field_name] = STATE(72), + [sym_record_access] = STATE(25), + [sym_record_field_selector] = STATE(9), + [sym_boolean_literal] = STATE(25), + [sym_quoted_literal] = STATE(25), + [sym_double_quoted_literal] = STATE(44), + [sym_backtick_quoted_literal] = STATE(44), + [sym_temporal_literal] = STATE(25), [anon_sym_LBRACE] = ACTIONS(5), [anon_sym_RBRACE] = ACTIONS(23), [anon_sym_T] = ACTIONS(7), @@ -1298,8 +1404,9 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_unquoted_record_field_name] = ACTIONS(27), [sym_numeric_literal] = ACTIONS(9), [sym_variable] = ACTIONS(9), - [anon_sym_DOT] = ACTIONS(11), - [sym_original_input] = ACTIONS(13), + [sym_original_input] = ACTIONS(11), + [sym_named_record_field] = ACTIONS(13), + [sym_positional_record_field] = ACTIONS(13), [sym_positional_element_access] = ACTIONS(9), [anon_sym_POUNDtrue] = ACTIONS(15), [anon_sym_POUNDfalse] = ACTIONS(15), @@ -1316,8 +1423,6 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(5), 1, anon_sym_LBRACE, ACTIONS(11), 1, - anon_sym_DOT, - ACTIONS(13), 1, sym_original_input, ACTIONS(17), 1, anon_sym_DQUOTE, @@ -1327,18 +1432,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RPAREN, ACTIONS(31), 1, anon_sym_T, - STATE(10), 1, - aux_sym_record_access_repeat1, + STATE(9), 1, + sym_record_field_selector, STATE(38), 1, sym_positional_argument, - STATE(55), 1, + STATE(64), 1, sym_value, - STATE(66), 1, + STATE(69), 1, sym_argument_list, + ACTIONS(13), 2, + sym_named_record_field, + sym_positional_record_field, ACTIONS(15), 2, anon_sym_POUNDtrue, anon_sym_POUNDfalse, - STATE(21), 2, + STATE(26), 2, sym_double_quoted_literal, sym_backtick_quoted_literal, ACTIONS(9), 3, @@ -1349,7 +1457,7 @@ static const uint16_t ts_small_parse_table[] = { sym_date_literal, sym_date_time_literal, sym_time_literal, - STATE(22), 7, + STATE(25), 7, sym_array_literal, sym_tuple_literal, sym_record_literal, @@ -1357,12 +1465,10 @@ static const uint16_t ts_small_parse_table[] = { sym_boolean_literal, sym_quoted_literal, sym_temporal_literal, - [61] = 14, + [62] = 14, ACTIONS(5), 1, anon_sym_LBRACE, ACTIONS(11), 1, - anon_sym_DOT, - ACTIONS(13), 1, sym_original_input, ACTIONS(17), 1, anon_sym_DQUOTE, @@ -1370,16 +1476,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BQUOTE, ACTIONS(31), 1, anon_sym_T, - STATE(10), 1, - aux_sym_record_access_repeat1, - STATE(55), 1, + STATE(9), 1, + sym_record_field_selector, + STATE(64), 1, sym_value, - STATE(61), 1, + STATE(67), 1, sym_positional_argument, + ACTIONS(13), 2, + sym_named_record_field, + sym_positional_record_field, ACTIONS(15), 2, anon_sym_POUNDtrue, anon_sym_POUNDfalse, - STATE(21), 2, + STATE(26), 2, sym_double_quoted_literal, sym_backtick_quoted_literal, ACTIONS(9), 3, @@ -1390,7 +1499,7 @@ static const uint16_t ts_small_parse_table[] = { sym_date_literal, sym_date_time_literal, sym_time_literal, - STATE(22), 7, + STATE(25), 7, sym_array_literal, sym_tuple_literal, sym_record_literal, @@ -1398,12 +1507,10 @@ static const uint16_t ts_small_parse_table[] = { sym_boolean_literal, sym_quoted_literal, sym_temporal_literal, - [116] = 13, + [118] = 13, ACTIONS(5), 1, anon_sym_LBRACE, ACTIONS(11), 1, - anon_sym_DOT, - ACTIONS(13), 1, sym_original_input, ACTIONS(17), 1, anon_sym_DQUOTE, @@ -1411,14 +1518,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BQUOTE, ACTIONS(31), 1, anon_sym_T, - STATE(10), 1, - aux_sym_record_access_repeat1, - STATE(73), 1, + STATE(9), 1, + sym_record_field_selector, + STATE(77), 1, sym_value, + ACTIONS(13), 2, + sym_named_record_field, + sym_positional_record_field, ACTIONS(15), 2, anon_sym_POUNDtrue, anon_sym_POUNDfalse, - STATE(21), 2, + STATE(26), 2, sym_double_quoted_literal, sym_backtick_quoted_literal, ACTIONS(9), 3, @@ -1429,7 +1539,7 @@ static const uint16_t ts_small_parse_table[] = { sym_date_literal, sym_date_time_literal, sym_time_literal, - STATE(22), 7, + STATE(25), 7, sym_array_literal, sym_tuple_literal, sym_record_literal, @@ -1437,12 +1547,10 @@ static const uint16_t ts_small_parse_table[] = { sym_boolean_literal, sym_quoted_literal, sym_temporal_literal, - [168] = 13, + [171] = 13, ACTIONS(5), 1, anon_sym_LBRACE, ACTIONS(11), 1, - anon_sym_DOT, - ACTIONS(13), 1, sym_original_input, ACTIONS(17), 1, anon_sym_DQUOTE, @@ -1450,14 +1558,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BQUOTE, ACTIONS(31), 1, anon_sym_T, - STATE(10), 1, - aux_sym_record_access_repeat1, - STATE(62), 1, + STATE(9), 1, + sym_record_field_selector, + STATE(49), 1, sym_value, + ACTIONS(13), 2, + sym_named_record_field, + sym_positional_record_field, ACTIONS(15), 2, anon_sym_POUNDtrue, anon_sym_POUNDfalse, - STATE(21), 2, + STATE(26), 2, sym_double_quoted_literal, sym_backtick_quoted_literal, ACTIONS(9), 3, @@ -1468,7 +1579,7 @@ static const uint16_t ts_small_parse_table[] = { sym_date_literal, sym_date_time_literal, sym_time_literal, - STATE(22), 7, + STATE(25), 7, sym_array_literal, sym_tuple_literal, sym_record_literal, @@ -1476,12 +1587,10 @@ static const uint16_t ts_small_parse_table[] = { sym_boolean_literal, sym_quoted_literal, sym_temporal_literal, - [220] = 13, + [224] = 13, ACTIONS(5), 1, anon_sym_LBRACE, ACTIONS(11), 1, - anon_sym_DOT, - ACTIONS(13), 1, sym_original_input, ACTIONS(17), 1, anon_sym_DQUOTE, @@ -1489,14 +1598,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BQUOTE, ACTIONS(31), 1, anon_sym_T, - STATE(10), 1, - aux_sym_record_access_repeat1, - STATE(43), 1, + STATE(9), 1, + sym_record_field_selector, + STATE(66), 1, sym_value, + ACTIONS(13), 2, + sym_named_record_field, + sym_positional_record_field, ACTIONS(15), 2, anon_sym_POUNDtrue, anon_sym_POUNDfalse, - STATE(21), 2, + STATE(26), 2, sym_double_quoted_literal, sym_backtick_quoted_literal, ACTIONS(9), 3, @@ -1507,7 +1619,7 @@ static const uint16_t ts_small_parse_table[] = { sym_date_literal, sym_date_time_literal, sym_time_literal, - STATE(22), 7, + STATE(25), 7, sym_array_literal, sym_tuple_literal, sym_record_literal, @@ -1515,12 +1627,10 @@ static const uint16_t ts_small_parse_table[] = { sym_boolean_literal, sym_quoted_literal, sym_temporal_literal, - [272] = 13, + [277] = 13, ACTIONS(5), 1, anon_sym_LBRACE, ACTIONS(11), 1, - anon_sym_DOT, - ACTIONS(13), 1, sym_original_input, ACTIONS(17), 1, anon_sym_DQUOTE, @@ -1528,14 +1638,17 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BQUOTE, ACTIONS(31), 1, anon_sym_T, - STATE(10), 1, - aux_sym_record_access_repeat1, - STATE(51), 1, + STATE(9), 1, + sym_record_field_selector, + STATE(55), 1, sym_value, + ACTIONS(13), 2, + sym_named_record_field, + sym_positional_record_field, ACTIONS(15), 2, anon_sym_POUNDtrue, anon_sym_POUNDfalse, - STATE(21), 2, + STATE(26), 2, sym_double_quoted_literal, sym_backtick_quoted_literal, ACTIONS(9), 3, @@ -1546,7 +1659,7 @@ static const uint16_t ts_small_parse_table[] = { sym_date_literal, sym_date_time_literal, sym_time_literal, - STATE(22), 7, + STATE(25), 7, sym_array_literal, sym_tuple_literal, sym_record_literal, @@ -1554,599 +1667,659 @@ static const uint16_t ts_small_parse_table[] = { sym_boolean_literal, sym_quoted_literal, sym_temporal_literal, - [324] = 3, - ACTIONS(11), 1, - anon_sym_DOT, - STATE(12), 1, + [330] = 4, + STATE(11), 1, aux_sym_record_access_repeat1, + STATE(17), 1, + sym_immediate_record_field_selector, + ACTIONS(35), 2, + aux_sym_immediate_record_field_selector_token1, + aux_sym_immediate_record_field_selector_token2, ACTIONS(33), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [338] = 3, - ACTIONS(11), 1, - anon_sym_DOT, + [348] = 4, STATE(12), 1, aux_sym_record_access_repeat1, - ACTIONS(35), 5, + STATE(17), 1, + sym_immediate_record_field_selector, + ACTIONS(35), 2, + aux_sym_immediate_record_field_selector_token1, + aux_sym_immediate_record_field_selector_token2, + ACTIONS(37), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [352] = 6, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(19), 1, - anon_sym_BQUOTE, - ACTIONS(37), 1, - sym_unquoted_record_field_name, - STATE(59), 1, - sym_record_field, - STATE(74), 1, - sym_record_field_name, - STATE(71), 2, - sym_double_quoted_literal, - sym_backtick_quoted_literal, - [372] = 3, - ACTIONS(41), 1, - anon_sym_DOT, - STATE(12), 1, + [366] = 4, + STATE(13), 1, aux_sym_record_access_repeat1, + STATE(17), 1, + sym_immediate_record_field_selector, + ACTIONS(35), 2, + aux_sym_immediate_record_field_selector_token1, + aux_sym_immediate_record_field_selector_token2, ACTIONS(39), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [386] = 1, - ACTIONS(44), 6, + [384] = 4, + STATE(13), 1, + aux_sym_record_access_repeat1, + STATE(17), 1, + sym_immediate_record_field_selector, + ACTIONS(35), 2, + aux_sym_immediate_record_field_selector_token1, + aux_sym_immediate_record_field_selector_token2, + ACTIONS(41), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - anon_sym_COLON_EQ, - [395] = 1, - ACTIONS(46), 6, + [402] = 4, + STATE(13), 1, + aux_sym_record_access_repeat1, + STATE(17), 1, + sym_immediate_record_field_selector, + ACTIONS(45), 2, + aux_sym_immediate_record_field_selector_token1, + aux_sym_immediate_record_field_selector_token2, + ACTIONS(43), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - anon_sym_COLON_EQ, - [404] = 1, - ACTIONS(48), 6, + [420] = 1, + ACTIONS(48), 7, + ts_builtin_sym_end, + anon_sym_PIPE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACE, + aux_sym_immediate_record_field_selector_token1, + aux_sym_immediate_record_field_selector_token2, + [430] = 1, + ACTIONS(50), 7, + ts_builtin_sym_end, + anon_sym_PIPE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACE, + aux_sym_immediate_record_field_selector_token1, + aux_sym_immediate_record_field_selector_token2, + [440] = 1, + ACTIONS(52), 7, + ts_builtin_sym_end, + anon_sym_PIPE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACE, + aux_sym_immediate_record_field_selector_token1, + aux_sym_immediate_record_field_selector_token2, + [450] = 1, + ACTIONS(54), 7, + ts_builtin_sym_end, + anon_sym_PIPE, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACE, + aux_sym_immediate_record_field_selector_token1, + aux_sym_immediate_record_field_selector_token2, + [460] = 6, + ACTIONS(17), 1, + anon_sym_DQUOTE, + ACTIONS(19), 1, + anon_sym_BQUOTE, + ACTIONS(56), 1, + sym_unquoted_record_field_name, + STATE(63), 1, + sym_record_field, + STATE(72), 1, + sym_record_field_name, + STATE(78), 2, + sym_double_quoted_literal, + sym_backtick_quoted_literal, + [480] = 1, + ACTIONS(58), 6, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, anon_sym_COLON_EQ, - [413] = 1, - ACTIONS(50), 6, + [489] = 1, + ACTIONS(60), 6, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - anon_sym_DOT, - [422] = 1, - ACTIONS(52), 6, + anon_sym_COLON_EQ, + [498] = 1, + ACTIONS(62), 6, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, anon_sym_COLON_EQ, - [431] = 1, - ACTIONS(54), 6, + [507] = 1, + ACTIONS(64), 6, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - anon_sym_DOT, - [440] = 1, - ACTIONS(56), 5, + anon_sym_COLON_EQ, + [516] = 1, + ACTIONS(66), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [448] = 1, - ACTIONS(58), 5, + [524] = 1, + ACTIONS(68), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [456] = 1, - ACTIONS(60), 5, + [532] = 1, + ACTIONS(70), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [464] = 1, - ACTIONS(62), 5, + [540] = 1, + ACTIONS(72), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [472] = 1, - ACTIONS(64), 5, + [548] = 1, + ACTIONS(74), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [480] = 1, - ACTIONS(66), 5, + [556] = 1, + ACTIONS(76), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [488] = 1, - ACTIONS(68), 5, + [564] = 1, + ACTIONS(78), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [496] = 1, - ACTIONS(70), 5, + [572] = 1, + ACTIONS(80), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [504] = 1, - ACTIONS(72), 5, + [580] = 1, + ACTIONS(82), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [512] = 1, - ACTIONS(74), 5, + [588] = 1, + ACTIONS(84), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [520] = 1, - ACTIONS(76), 5, + [596] = 1, + ACTIONS(86), 5, ts_builtin_sym_end, anon_sym_PIPE, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACE, - [528] = 3, - ACTIONS(78), 1, + [604] = 3, + ACTIONS(88), 1, anon_sym_DQUOTE, - STATE(33), 1, + STATE(35), 1, aux_sym_double_quoted_literal_repeat1, - ACTIONS(80), 2, + ACTIONS(90), 2, sym_double_quoted_content, sym_escape_sequence, - [539] = 3, - ACTIONS(82), 1, + [615] = 3, + ACTIONS(92), 1, anon_sym_DQUOTE, - STATE(30), 1, + STATE(35), 1, aux_sym_double_quoted_literal_repeat1, - ACTIONS(84), 2, + ACTIONS(94), 2, sym_double_quoted_content, sym_escape_sequence, - [550] = 3, - ACTIONS(88), 1, - anon_sym_COMMA, - STATE(32), 1, - aux_sym_array_literal_repeat1, - ACTIONS(86), 2, - anon_sym_RPAREN, - anon_sym_RBRACE, - [561] = 3, - ACTIONS(91), 1, + [626] = 3, + ACTIONS(97), 1, anon_sym_DQUOTE, - STATE(33), 1, + STATE(34), 1, aux_sym_double_quoted_literal_repeat1, - ACTIONS(93), 2, + ACTIONS(99), 2, sym_double_quoted_content, sym_escape_sequence, - [572] = 3, - ACTIONS(96), 1, + [637] = 3, + ACTIONS(103), 1, + anon_sym_COMMA, + STATE(37), 1, + aux_sym_array_literal_repeat1, + ACTIONS(101), 2, anon_sym_RPAREN, - ACTIONS(98), 1, + anon_sym_RBRACE, + [648] = 3, + ACTIONS(106), 1, + anon_sym_RPAREN, + ACTIONS(108), 1, anon_sym_COMMA, - STATE(50), 1, + STATE(48), 1, aux_sym_argument_list_repeat1, - [582] = 2, - ACTIONS(102), 1, + [658] = 2, + ACTIONS(112), 1, anon_sym_LPAREN, - ACTIONS(100), 2, + ACTIONS(110), 2, ts_builtin_sym_end, anon_sym_PIPE, - [590] = 3, - ACTIONS(104), 1, - sym_function_name, - STATE(40), 1, - sym_expression, - STATE(64), 1, - sym_function_call, - [600] = 3, - ACTIONS(106), 1, + [666] = 3, + ACTIONS(114), 1, anon_sym_COMMA, - ACTIONS(108), 1, + ACTIONS(116), 1, anon_sym_RBRACE, - STATE(46), 1, + STATE(41), 1, aux_sym_array_literal_repeat1, - [610] = 3, - ACTIONS(98), 1, - anon_sym_COMMA, - ACTIONS(110), 1, - anon_sym_RPAREN, - STATE(34), 1, - aux_sym_argument_list_repeat1, - [620] = 3, - ACTIONS(112), 1, - ts_builtin_sym_end, + [676] = 3, ACTIONS(114), 1, - anon_sym_PIPE, - STATE(39), 1, - aux_sym_open_expression_repeat1, - [630] = 3, - ACTIONS(117), 1, - ts_builtin_sym_end, - ACTIONS(119), 1, - anon_sym_PIPE, - STATE(49), 1, - aux_sym_open_expression_repeat1, - [640] = 3, - ACTIONS(121), 1, anon_sym_COMMA, - ACTIONS(123), 1, + ACTIONS(118), 1, anon_sym_RBRACE, - STATE(52), 1, + STATE(37), 1, + aux_sym_array_literal_repeat1, + [686] = 3, + ACTIONS(120), 1, + anon_sym_COMMA, + ACTIONS(122), 1, + anon_sym_RBRACE, + STATE(43), 1, aux_sym_record_literal_repeat1, - [650] = 2, - ACTIONS(125), 1, - anon_sym_COLON_EQ, - ACTIONS(60), 2, + [696] = 3, + ACTIONS(120), 1, anon_sym_COMMA, + ACTIONS(124), 1, anon_sym_RBRACE, - [658] = 1, - ACTIONS(86), 3, - anon_sym_RPAREN, + STATE(51), 1, + aux_sym_record_literal_repeat1, + [706] = 2, + ACTIONS(126), 1, + anon_sym_COLON_EQ, + ACTIONS(72), 2, anon_sym_COMMA, anon_sym_RBRACE, - [664] = 2, - STATE(18), 1, - sym_record_field_selector, - ACTIONS(127), 2, - sym_named_record_field, - sym_positional_record_field, - [672] = 3, - ACTIONS(119), 1, + [714] = 3, + ACTIONS(128), 1, + ts_builtin_sym_end, + ACTIONS(130), 1, anon_sym_PIPE, - ACTIONS(129), 1, + STATE(45), 1, + aux_sym_open_expression_repeat1, + [724] = 2, + STATE(10), 1, + sym_original_record_field_selector, + ACTIONS(133), 2, + aux_sym_original_record_field_selector_token1, + aux_sym_original_record_field_selector_token2, + [732] = 3, + ACTIONS(135), 1, ts_builtin_sym_end, - STATE(54), 1, + ACTIONS(137), 1, + anon_sym_PIPE, + STATE(52), 1, aux_sym_open_expression_repeat1, - [682] = 3, - ACTIONS(106), 1, + [742] = 3, + ACTIONS(108), 1, anon_sym_COMMA, - ACTIONS(131), 1, - anon_sym_RBRACE, - STATE(32), 1, - aux_sym_array_literal_repeat1, - [692] = 3, - ACTIONS(133), 1, + ACTIONS(139), 1, + anon_sym_RPAREN, + STATE(54), 1, + aux_sym_argument_list_repeat1, + [752] = 1, + ACTIONS(101), 3, + anon_sym_RPAREN, anon_sym_COMMA, - ACTIONS(136), 1, anon_sym_RBRACE, - STATE(47), 1, - aux_sym_record_literal_repeat1, - [702] = 3, - ACTIONS(104), 1, + [758] = 3, + ACTIONS(141), 1, sym_function_name, - STATE(64), 1, + STATE(60), 1, sym_function_call, STATE(65), 1, sym_expression, - [712] = 3, - ACTIONS(119), 1, + [768] = 3, + ACTIONS(143), 1, + anon_sym_COMMA, + ACTIONS(146), 1, + anon_sym_RBRACE, + STATE(51), 1, + aux_sym_record_literal_repeat1, + [778] = 3, + ACTIONS(137), 1, anon_sym_PIPE, - ACTIONS(138), 1, + ACTIONS(148), 1, ts_builtin_sym_end, - STATE(39), 1, + STATE(45), 1, aux_sym_open_expression_repeat1, - [722] = 3, - ACTIONS(140), 1, + [788] = 3, + ACTIONS(137), 1, + anon_sym_PIPE, + ACTIONS(150), 1, + ts_builtin_sym_end, + STATE(45), 1, + aux_sym_open_expression_repeat1, + [798] = 3, + ACTIONS(152), 1, anon_sym_RPAREN, - ACTIONS(142), 1, + ACTIONS(154), 1, anon_sym_COMMA, - STATE(50), 1, + STATE(54), 1, aux_sym_argument_list_repeat1, - [732] = 3, - ACTIONS(106), 1, + [808] = 3, + ACTIONS(114), 1, anon_sym_COMMA, - ACTIONS(145), 1, + ACTIONS(157), 1, anon_sym_RPAREN, - STATE(53), 1, + STATE(57), 1, aux_sym_array_literal_repeat1, - [742] = 3, - ACTIONS(121), 1, - anon_sym_COMMA, - ACTIONS(147), 1, - anon_sym_RBRACE, - STATE(47), 1, - aux_sym_record_literal_repeat1, - [752] = 3, - ACTIONS(106), 1, + [818] = 3, + ACTIONS(141), 1, + sym_function_name, + STATE(58), 1, + sym_expression, + STATE(60), 1, + sym_function_call, + [828] = 3, + ACTIONS(114), 1, anon_sym_COMMA, - ACTIONS(149), 1, + ACTIONS(159), 1, anon_sym_RPAREN, - STATE(32), 1, + STATE(37), 1, aux_sym_array_literal_repeat1, - [762] = 3, - ACTIONS(119), 1, + [838] = 3, + ACTIONS(137), 1, anon_sym_PIPE, - ACTIONS(151), 1, + ACTIONS(161), 1, ts_builtin_sym_end, - STATE(39), 1, + STATE(53), 1, aux_sym_open_expression_repeat1, - [772] = 1, - ACTIONS(153), 2, - anon_sym_RPAREN, - anon_sym_COMMA, - [777] = 1, - ACTIONS(155), 2, + [848] = 2, + ACTIONS(163), 1, + anon_sym_BQUOTE, + ACTIONS(165), 1, + sym_backtick_quoted_content, + [855] = 1, + ACTIONS(167), 2, ts_builtin_sym_end, anon_sym_PIPE, - [782] = 2, - ACTIONS(157), 1, + [860] = 1, + ACTIONS(169), 2, ts_builtin_sym_end, - ACTIONS(159), 1, anon_sym_PIPE, - [789] = 1, - ACTIONS(161), 2, + [865] = 2, + ACTIONS(171), 1, ts_builtin_sym_end, + ACTIONS(173), 1, anon_sym_PIPE, - [794] = 1, - ACTIONS(136), 2, + [872] = 1, + ACTIONS(146), 2, anon_sym_COMMA, anon_sym_RBRACE, - [799] = 2, - ACTIONS(163), 1, - anon_sym_BQUOTE, - ACTIONS(165), 1, - sym_backtick_quoted_content, - [806] = 1, - ACTIONS(140), 2, + [877] = 1, + ACTIONS(175), 2, anon_sym_RPAREN, anon_sym_COMMA, - [811] = 1, - ACTIONS(167), 2, - anon_sym_COMMA, - anon_sym_RBRACE, - [816] = 2, - ACTIONS(11), 1, - anon_sym_DOT, - STATE(9), 1, - aux_sym_record_access_repeat1, - [823] = 1, - ACTIONS(169), 2, + [882] = 1, + ACTIONS(128), 2, ts_builtin_sym_end, anon_sym_PIPE, - [828] = 1, - ACTIONS(112), 2, + [887] = 1, + ACTIONS(177), 2, + anon_sym_COMMA, + anon_sym_RBRACE, + [892] = 1, + ACTIONS(152), 2, + anon_sym_RPAREN, + anon_sym_COMMA, + [897] = 1, + ACTIONS(179), 2, ts_builtin_sym_end, anon_sym_PIPE, - [833] = 1, - ACTIONS(171), 1, + [902] = 1, + ACTIONS(181), 1, anon_sym_RPAREN, - [837] = 1, - ACTIONS(173), 1, - ts_builtin_sym_end, - [841] = 1, - ACTIONS(175), 1, + [906] = 1, + ACTIONS(183), 1, + anon_sym_BQUOTE, + [910] = 1, + ACTIONS(185), 1, anon_sym_LPAREN, - [845] = 1, - ACTIONS(177), 1, + [914] = 1, + ACTIONS(187), 1, + anon_sym_COLON_EQ, + [918] = 1, + ACTIONS(189), 1, ts_builtin_sym_end, - [849] = 1, - ACTIONS(123), 1, + [922] = 1, + ACTIONS(122), 1, anon_sym_RBRACE, - [853] = 1, - ACTIONS(125), 1, - anon_sym_COLON_EQ, - [857] = 1, - ACTIONS(179), 1, - anon_sym_BQUOTE, - [861] = 1, - ACTIONS(181), 1, + [926] = 1, + ACTIONS(191), 1, + ts_builtin_sym_end, + [930] = 1, + ACTIONS(193), 1, + ts_builtin_sym_end, + [934] = 1, + ACTIONS(195), 1, anon_sym_COMMA, - [865] = 1, - ACTIONS(183), 1, + [938] = 1, + ACTIONS(126), 1, anon_sym_COLON_EQ, - [869] = 1, - ACTIONS(185), 1, - ts_builtin_sym_end, }; static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(3)] = 0, - [SMALL_STATE(4)] = 61, - [SMALL_STATE(5)] = 116, - [SMALL_STATE(6)] = 168, - [SMALL_STATE(7)] = 220, - [SMALL_STATE(8)] = 272, - [SMALL_STATE(9)] = 324, - [SMALL_STATE(10)] = 338, - [SMALL_STATE(11)] = 352, - [SMALL_STATE(12)] = 372, - [SMALL_STATE(13)] = 386, - [SMALL_STATE(14)] = 395, - [SMALL_STATE(15)] = 404, - [SMALL_STATE(16)] = 413, - [SMALL_STATE(17)] = 422, - [SMALL_STATE(18)] = 431, - [SMALL_STATE(19)] = 440, - [SMALL_STATE(20)] = 448, - [SMALL_STATE(21)] = 456, - [SMALL_STATE(22)] = 464, - [SMALL_STATE(23)] = 472, - [SMALL_STATE(24)] = 480, - [SMALL_STATE(25)] = 488, - [SMALL_STATE(26)] = 496, - [SMALL_STATE(27)] = 504, - [SMALL_STATE(28)] = 512, - [SMALL_STATE(29)] = 520, - [SMALL_STATE(30)] = 528, - [SMALL_STATE(31)] = 539, - [SMALL_STATE(32)] = 550, - [SMALL_STATE(33)] = 561, - [SMALL_STATE(34)] = 572, - [SMALL_STATE(35)] = 582, - [SMALL_STATE(36)] = 590, - [SMALL_STATE(37)] = 600, - [SMALL_STATE(38)] = 610, - [SMALL_STATE(39)] = 620, - [SMALL_STATE(40)] = 630, - [SMALL_STATE(41)] = 640, - [SMALL_STATE(42)] = 650, - [SMALL_STATE(43)] = 658, - [SMALL_STATE(44)] = 664, - [SMALL_STATE(45)] = 672, - [SMALL_STATE(46)] = 682, - [SMALL_STATE(47)] = 692, - [SMALL_STATE(48)] = 702, - [SMALL_STATE(49)] = 712, - [SMALL_STATE(50)] = 722, - [SMALL_STATE(51)] = 732, - [SMALL_STATE(52)] = 742, - [SMALL_STATE(53)] = 752, - [SMALL_STATE(54)] = 762, - [SMALL_STATE(55)] = 772, - [SMALL_STATE(56)] = 777, - [SMALL_STATE(57)] = 782, - [SMALL_STATE(58)] = 789, - [SMALL_STATE(59)] = 794, - [SMALL_STATE(60)] = 799, - [SMALL_STATE(61)] = 806, - [SMALL_STATE(62)] = 811, - [SMALL_STATE(63)] = 816, - [SMALL_STATE(64)] = 823, - [SMALL_STATE(65)] = 828, - [SMALL_STATE(66)] = 833, - [SMALL_STATE(67)] = 837, - [SMALL_STATE(68)] = 841, - [SMALL_STATE(69)] = 845, - [SMALL_STATE(70)] = 849, - [SMALL_STATE(71)] = 853, - [SMALL_STATE(72)] = 857, - [SMALL_STATE(73)] = 861, - [SMALL_STATE(74)] = 865, - [SMALL_STATE(75)] = 869, + [SMALL_STATE(4)] = 62, + [SMALL_STATE(5)] = 118, + [SMALL_STATE(6)] = 171, + [SMALL_STATE(7)] = 224, + [SMALL_STATE(8)] = 277, + [SMALL_STATE(9)] = 330, + [SMALL_STATE(10)] = 348, + [SMALL_STATE(11)] = 366, + [SMALL_STATE(12)] = 384, + [SMALL_STATE(13)] = 402, + [SMALL_STATE(14)] = 420, + [SMALL_STATE(15)] = 430, + [SMALL_STATE(16)] = 440, + [SMALL_STATE(17)] = 450, + [SMALL_STATE(18)] = 460, + [SMALL_STATE(19)] = 480, + [SMALL_STATE(20)] = 489, + [SMALL_STATE(21)] = 498, + [SMALL_STATE(22)] = 507, + [SMALL_STATE(23)] = 516, + [SMALL_STATE(24)] = 524, + [SMALL_STATE(25)] = 532, + [SMALL_STATE(26)] = 540, + [SMALL_STATE(27)] = 548, + [SMALL_STATE(28)] = 556, + [SMALL_STATE(29)] = 564, + [SMALL_STATE(30)] = 572, + [SMALL_STATE(31)] = 580, + [SMALL_STATE(32)] = 588, + [SMALL_STATE(33)] = 596, + [SMALL_STATE(34)] = 604, + [SMALL_STATE(35)] = 615, + [SMALL_STATE(36)] = 626, + [SMALL_STATE(37)] = 637, + [SMALL_STATE(38)] = 648, + [SMALL_STATE(39)] = 658, + [SMALL_STATE(40)] = 666, + [SMALL_STATE(41)] = 676, + [SMALL_STATE(42)] = 686, + [SMALL_STATE(43)] = 696, + [SMALL_STATE(44)] = 706, + [SMALL_STATE(45)] = 714, + [SMALL_STATE(46)] = 724, + [SMALL_STATE(47)] = 732, + [SMALL_STATE(48)] = 742, + [SMALL_STATE(49)] = 752, + [SMALL_STATE(50)] = 758, + [SMALL_STATE(51)] = 768, + [SMALL_STATE(52)] = 778, + [SMALL_STATE(53)] = 788, + [SMALL_STATE(54)] = 798, + [SMALL_STATE(55)] = 808, + [SMALL_STATE(56)] = 818, + [SMALL_STATE(57)] = 828, + [SMALL_STATE(58)] = 838, + [SMALL_STATE(59)] = 848, + [SMALL_STATE(60)] = 855, + [SMALL_STATE(61)] = 860, + [SMALL_STATE(62)] = 865, + [SMALL_STATE(63)] = 872, + [SMALL_STATE(64)] = 877, + [SMALL_STATE(65)] = 882, + [SMALL_STATE(66)] = 887, + [SMALL_STATE(67)] = 892, + [SMALL_STATE(68)] = 897, + [SMALL_STATE(69)] = 902, + [SMALL_STATE(70)] = 906, + [SMALL_STATE(71)] = 910, + [SMALL_STATE(72)] = 914, + [SMALL_STATE(73)] = 918, + [SMALL_STATE(74)] = 922, + [SMALL_STATE(75)] = 926, + [SMALL_STATE(76)] = 930, + [SMALL_STATE(77)] = 934, + [SMALL_STATE(78)] = 938, }; 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(35), + [3] = {.entry = {.count = 1, .reusable = false}}, SHIFT(39), [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), - [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(68), - [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), - [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), - [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), - [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), - [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), - [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), - [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), - [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), - [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(71), - [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), - [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), - [33] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_access, 2, 0, 4), - [35] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_access, 1, 0, 2), - [37] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), - [39] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_record_access_repeat1, 2, 0, 5), - [41] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_record_access_repeat1, 2, 0, 5), SHIFT_REPEAT(44), - [44] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_backtick_quoted_literal, 2, 0, 0), - [46] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_double_quoted_literal, 2, 0, 0), - [48] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_double_quoted_literal, 3, 0, 0), + [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(71), + [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), + [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), + [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), + [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), + [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(78), + [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), + [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), + [33] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_access, 1, 0, 2), + [35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), + [37] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_access, 2, 0, 3), + [39] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_access, 2, 0, 4), + [41] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_access, 3, 0, 5), + [43] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_record_access_repeat1, 2, 0, 6), + [45] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_record_access_repeat1, 2, 0, 6), SHIFT_REPEAT(16), + [48] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_original_record_field_selector, 1, 0, 0), [50] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_field_selector, 1, 0, 0), - [52] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_backtick_quoted_literal, 3, 0, 0), - [54] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_record_access_repeat1, 2, 0, 3), - [56] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 3, 0, 0), - [58] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_literal, 7, 0, 0), - [60] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoted_literal, 1, 0, 0), - [62] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_value, 1, 0, 0), - [64] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_literal, 3, 0, 0), - [66] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_boolean_literal, 1, 0, 0), - [68] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 2, 0, 0), - [70] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_literal, 4, 0, 0), - [72] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 4, 0, 0), - [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_temporal_literal, 1, 0, 0), - [76] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_literal, 6, 0, 0), - [78] = {.entry = {.count = 1, .reusable = false}}, SHIFT(15), - [80] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), - [82] = {.entry = {.count = 1, .reusable = false}}, SHIFT(14), - [84] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), - [86] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_array_literal_repeat1, 2, 0, 0), - [88] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_array_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(7), - [91] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_double_quoted_literal_repeat1, 2, 0, 0), - [93] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_double_quoted_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(33), - [96] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 2, 0, 0), - [98] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [100] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 1, 0, 1), - [102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), - [106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), - [108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), - [110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 1, 0, 0), - [112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_open_expression_repeat1, 2, 0, 0), - [114] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_open_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(48), - [117] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_closed_expression, 3, 0, 0), - [119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), - [121] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), - [123] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [125] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_field_name, 1, 0, 0), - [127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), - [129] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_expression, 1, 0, 0), - [131] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [133] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_record_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(11), - [136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_record_literal_repeat1, 2, 0, 0), - [138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_closed_expression, 4, 0, 0), - [140] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 0), - [142] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 0), SHIFT_REPEAT(4), - [145] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), - [147] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), - [149] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), - [151] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_expression, 2, 0, 0), - [153] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_positional_argument, 1, 0, 0), - [155] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 3, 0, 1), - [157] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_closed_expression, 1, 0, 0), - [159] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), - [161] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 4, 0, 1), - [163] = {.entry = {.count = 1, .reusable = false}}, SHIFT(13), - [165] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), - [167] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_field, 3, 0, 6), - [169] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1, 0, 0), - [171] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), - [173] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [175] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), - [177] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1, 0, 0), - [179] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [181] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), - [183] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), - [185] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_root_expression, 1, 0, 0), + [52] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_immediate_record_field_selector, 1, 0, 0), + [54] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_record_access_repeat1, 1, 0, 2), + [56] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [58] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_backtick_quoted_literal, 2, 0, 0), + [60] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_double_quoted_literal, 2, 0, 0), + [62] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_double_quoted_literal, 3, 0, 0), + [64] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_backtick_quoted_literal, 3, 0, 0), + [66] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_temporal_literal, 1, 0, 0), + [68] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 3, 0, 0), + [70] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_value, 1, 0, 0), + [72] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoted_literal, 1, 0, 0), + [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_literal, 3, 0, 0), + [76] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_boolean_literal, 1, 0, 0), + [78] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 2, 0, 0), + [80] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_literal, 4, 0, 0), + [82] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_literal, 7, 0, 0), + [84] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_literal, 4, 0, 0), + [86] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple_literal, 6, 0, 0), + [88] = {.entry = {.count = 1, .reusable = false}}, SHIFT(21), + [90] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [92] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_double_quoted_literal_repeat1, 2, 0, 0), + [94] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_double_quoted_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(35), + [97] = {.entry = {.count = 1, .reusable = false}}, SHIFT(20), + [99] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [101] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_array_literal_repeat1, 2, 0, 0), + [103] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_array_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(6), + [106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 1, 0, 0), + [108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 1, 0, 1), + [112] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [114] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [116] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [122] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [124] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [126] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_field_name, 1, 0, 0), + [128] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_open_expression_repeat1, 2, 0, 0), + [130] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_open_expression_repeat1, 2, 0, 0), SHIFT_REPEAT(50), + [133] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [135] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_expression, 1, 0, 0), + [137] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), + [139] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_argument_list, 2, 0, 0), + [141] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), + [143] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_record_literal_repeat1, 2, 0, 0), SHIFT_REPEAT(18), + [146] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_record_literal_repeat1, 2, 0, 0), + [148] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_open_expression, 2, 0, 0), + [150] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_closed_expression, 4, 0, 0), + [152] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 0), + [154] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_argument_list_repeat1, 2, 0, 0), SHIFT_REPEAT(4), + [157] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [159] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [161] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_closed_expression, 3, 0, 0), + [163] = {.entry = {.count = 1, .reusable = false}}, SHIFT(19), + [165] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), + [167] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1, 0, 0), + [169] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 4, 0, 1), + [171] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_closed_expression, 1, 0, 0), + [173] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [175] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_positional_argument, 1, 0, 0), + [177] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_record_field, 3, 0, 7), + [179] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 3, 0, 1), + [181] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), + [183] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [185] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), + [187] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), + [189] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [191] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1, 0, 0), + [193] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_root_expression, 1, 0, 0), + [195] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), }; #ifdef __cplusplus diff --git a/test/corpus/compound_values.txt b/test/corpus/compound_values.txt index 295c51b..38467d9 100644 --- a/test/corpus/compound_values.txt +++ b/test/corpus/compound_values.txt @@ -30,11 +30,11 @@ Array values and whitespace (date_literal) (variable) (record_access - (original_input) - (record_field_selector (named_record_field))) + root: (original_input) + field: (original_record_field_selector (named_record_field))) (record_access - (original_input) - (record_field_selector (positional_record_field))))))) + root: (original_input) + field: (original_record_field_selector (positional_record_field))))))) ================== Nested and single-element arrays @@ -87,8 +87,8 @@ T("foo", #true, T(#"2025-12-17", ^.0), @value) (tuple_literal (date_literal) (record_access - (original_input) - (record_field_selector (positional_record_field)))) + root: (original_input) + field: (original_record_field_selector (positional_record_field)))) (variable))))) ================== @@ -104,6 +104,25 @@ Empty record (closed_expression (record_literal)))) +================== +Unquoted record field names allow digits after the first letter +================== + +{a1 := 1, field-2 := 2} + +--- + +(source_file + (root_expression + (closed_expression + (record_literal + (record_field + name: (record_field_name (unquoted_record_field_name)) + value: (numeric_literal)) + (record_field + name: (record_field_name (unquoted_record_field_name)) + value: (numeric_literal)))))) + ================== Record fields and quoted names ================== diff --git a/test/corpus/invalid.txt b/test/corpus/invalid.txt index d484bd1..6b4c44e 100644 --- a/test/corpus/invalid.txt +++ b/test/corpus/invalid.txt @@ -322,12 +322,9 @@ foo(...a) (open_expression (function_call name: (function_name) - (ERROR) - (argument_list - (positional_argument - (record_access - field: (record_field_selector - (named_record_field))))))))) + (ERROR + (UNEXPECTED '.') + (named_record_field)))))) ================== Operators are not implemented @@ -379,3 +376,66 @@ Legacy index reference is rejected (numeric_literal))) (ERROR (UNEXPECTED ']'))) + +================== +Record access rejects whitespace after dot +================== + +. name + +--- + +(source_file + (ERROR + (UNEXPECTED ' ')) + (root_expression + (open_expression + (function_call + (function_name))))) + +================== +Nested record access rejects whitespace around dot +================== + +.customer . address + +--- + +(source_file + (ERROR + (record_field_selector + (named_record_field)) + (UNEXPECTED ' ')) + (root_expression + (open_expression + (function_call + (function_name))))) + +================== +Original input marker rejects separated selector +================== + +^ +.name + +--- + +(source_file + (ERROR + (UNEXPECTED '\n')) + (root_expression + (closed_expression + (record_access + field: (record_field_selector + (named_record_field)))))) + +================== +Original input marker requires a selector +================== + +^ + +--- + +(ERROR + (UNEXPECTED '\n')) diff --git a/test/corpus/references.txt b/test/corpus/references.txt index 1b78b22..441691f 100644 --- a/test/corpus/references.txt +++ b/test/corpus/references.txt @@ -93,7 +93,7 @@ Original input named field pipeline (closed_expression (record_access root: (original_input) - field: (record_field_selector + field: (original_record_field_selector (named_record_field))) (function_call name: (function_name))))) @@ -111,7 +111,7 @@ Original input positional field pipeline (closed_expression (record_access root: (original_input) - field: (record_field_selector + field: (original_record_field_selector (positional_record_field))) (function_call name: (function_name) @@ -142,7 +142,7 @@ example(@foo, .bar, ^.2) (positional_argument (record_access root: (original_input) - field: (record_field_selector + field: (original_record_field_selector (positional_record_field))))))))) ================== @@ -188,14 +188,14 @@ example(.customer.address, ^.customer.0) (record_access field: (record_field_selector (named_record_field)) - field: (record_field_selector + field: (immediate_record_field_selector (named_record_field)))) (positional_argument (record_access root: (original_input) - field: (record_field_selector + field: (original_record_field_selector (named_record_field)) - field: (record_field_selector + field: (immediate_record_field_selector (positional_record_field))))))))) ==================