From c4bfe1228f5218160127bf35fee43a1247b5c677 Mon Sep 17 00:00:00 2001 From: mhoffm Date: Tue, 8 Jun 2021 00:45:23 +0200 Subject: [PATCH] cleanup --- grammar.js | 25 +- queries/highlights.scm | 7 +- src/grammar.json | 66 ++- src/node-types.json | 19 +- src/parser.c | 1139 ++++++++++++++++++++++------------------ 5 files changed, 687 insertions(+), 569 deletions(-) diff --git a/grammar.js b/grammar.js index d3e8f47..e278404 100644 --- a/grammar.js +++ b/grammar.js @@ -1,5 +1,4 @@ const - //TODO figure out how to subtact regex sets unicodeLetter = /\p{L}/ unicodePunctuation = /\p{Pc}/ unicodeDigit = /[0-9]/ @@ -41,7 +40,7 @@ module.exports = grammar({ '}', ), - // TODO: not to spec, but maybe good enough + // TODO: not to spec but good enough for now identifier: $ => token(seq( unicodeLetter, repeat(choice(unicodeLetter, unicodeDigit, unicodePunctuation)) @@ -70,13 +69,18 @@ module.exports = grammar({ literal_value: $ => choice( $.numeric_lit, $.string_lit, - 'true', - 'false', - 'null', + $.bool_lit, + $.null_lit, ), numeric_lit: $ => /[0-9]+(\.[0-9]+([eE][-+]?[0-9]+)?)?/, + string_lit: $ => seq('"', repeat(/./), '"'), + + bool_lit: $ => choice('true', 'false'), + + null_lit: $ => 'null', + collection_value: $ => choice( $.tuple, $.object, @@ -108,17 +112,6 @@ module.exports = grammar({ variable_expr: $ => $.identifier, - // TODO: template expressions - //template_expr: $ => choice( - //$.quoted_template, - //$.heredoc_template, - //), - //quoted_template: $ => seq('"', /\w+/, '"'), - //heredoc_template: $ => '', - - // TODO: string_literals are special template literals - string_lit: $ => seq('"', /\w+/, '"'), - // http://stackoverflow.com/questions/13014947/regex-to-match-a-c-style-multiline-comment/36328890#36328890 comment: $ => token(choice( seq('#', /.*/), diff --git a/queries/highlights.scm b/queries/highlights.scm index 22c78c2..e1760fd 100644 --- a/queries/highlights.scm +++ b/queries/highlights.scm @@ -1,6 +1,9 @@ ; highlights.scm -(string_lit) @keyword -(identifier) @type +(identifier) @string.special +(string_lit) @string (numeric_lit) @number +(bool_lit) @boolean +(null_lit) @null (comment) @comment + diff --git a/src/grammar.json b/src/grammar.json index 0073b5f..0d46f10 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -175,16 +175,12 @@ "name": "string_lit" }, { - "type": "STRING", - "value": "true" + "type": "SYMBOL", + "name": "bool_lit" }, { - "type": "STRING", - "value": "false" - }, - { - "type": "STRING", - "value": "null" + "type": "SYMBOL", + "name": "null_lit" } ] }, @@ -192,6 +188,43 @@ "type": "PATTERN", "value": "[0-9]+(\\.[0-9]+([eE][-+]?[0-9]+)?)?" }, + "string_lit": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "\"" + }, + { + "type": "REPEAT", + "content": { + "type": "PATTERN", + "value": "." + } + }, + { + "type": "STRING", + "value": "\"" + } + ] + }, + "bool_lit": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "true" + }, + { + "type": "STRING", + "value": "false" + } + ] + }, + "null_lit": { + "type": "STRING", + "value": "null" + }, "collection_value": { "type": "CHOICE", "members": [ @@ -336,23 +369,6 @@ "type": "SYMBOL", "name": "identifier" }, - "string_lit": { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "\"" - }, - { - "type": "PATTERN", - "value": "\\w+" - }, - { - "type": "STRING", - "value": "\"" - } - ] - }, "comment": { "type": "TOKEN", "content": { diff --git a/src/node-types.json b/src/node-types.json index eb59204..3d9df4c 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -60,6 +60,11 @@ ] } }, + { + "type": "bool_lit", + "named": true, + "fields": {} + }, { "type": "collection_value", "named": true, @@ -142,8 +147,16 @@ "fields": {}, "children": { "multiple": false, - "required": false, + "required": true, "types": [ + { + "type": "bool_lit", + "named": true + }, + { + "type": "null_lit", + "named": true + }, { "type": "numeric_lit", "named": true @@ -269,8 +282,8 @@ "named": true }, { - "type": "null", - "named": false + "type": "null_lit", + "named": true }, { "type": "numeric_lit", diff --git a/src/parser.c b/src/parser.c index caf5b21..07df37a 100644 --- a/src/parser.c +++ b/src/parser.c @@ -6,9 +6,9 @@ #endif #define LANGUAGE_VERSION 13 -#define STATE_COUNT 51 +#define STATE_COUNT 54 #define LARGE_STATE_COUNT 9 -#define SYMBOL_COUNT 35 +#define SYMBOL_COUNT 37 #define ALIAS_COUNT 0 #define TOKEN_COUNT 18 #define EXTERNAL_TOKEN_COUNT 0 @@ -23,16 +23,16 @@ enum { sym_identifier = 4, anon_sym_LPAREN = 5, anon_sym_RPAREN = 6, - anon_sym_true = 7, - anon_sym_false = 8, - anon_sym_null = 9, - sym_numeric_lit = 10, - anon_sym_LBRACK = 11, - anon_sym_COMMA = 12, - anon_sym_RBRACK = 13, - anon_sym_COLON = 14, - anon_sym_DQUOTE = 15, - aux_sym_string_lit_token1 = 16, + sym_numeric_lit = 7, + anon_sym_DQUOTE = 8, + aux_sym_string_lit_token1 = 9, + anon_sym_true = 10, + anon_sym_false = 11, + sym_null_lit = 12, + anon_sym_LBRACK = 13, + anon_sym_COMMA = 14, + anon_sym_RBRACK = 15, + anon_sym_COLON = 16, sym_comment = 17, sym_config_file = 18, sym_body = 19, @@ -41,16 +41,18 @@ enum { sym_expression = 22, sym_expr_term = 23, sym_literal_value = 24, - sym_collection_value = 25, - sym_tuple = 26, - sym_object = 27, - sym_object_elem = 28, - sym_variable_expr = 29, - sym_string_lit = 30, - aux_sym_body_repeat1 = 31, - aux_sym_block_repeat1 = 32, - aux_sym_tuple_repeat1 = 33, - aux_sym_object_repeat1 = 34, + sym_string_lit = 25, + sym_bool_lit = 26, + sym_collection_value = 27, + sym_tuple = 28, + sym_object = 29, + sym_object_elem = 30, + sym_variable_expr = 31, + aux_sym_body_repeat1 = 32, + aux_sym_block_repeat1 = 33, + aux_sym_string_lit_repeat1 = 34, + aux_sym_tuple_repeat1 = 35, + aux_sym_object_repeat1 = 36, }; static const char * const ts_symbol_names[] = { @@ -61,16 +63,16 @@ static const char * const ts_symbol_names[] = { [sym_identifier] = "identifier", [anon_sym_LPAREN] = "(", [anon_sym_RPAREN] = ")", + [sym_numeric_lit] = "numeric_lit", + [anon_sym_DQUOTE] = "\"", + [aux_sym_string_lit_token1] = "string_lit_token1", [anon_sym_true] = "true", [anon_sym_false] = "false", - [anon_sym_null] = "null", - [sym_numeric_lit] = "numeric_lit", + [sym_null_lit] = "null_lit", [anon_sym_LBRACK] = "[", [anon_sym_COMMA] = ",", [anon_sym_RBRACK] = "]", [anon_sym_COLON] = ":", - [anon_sym_DQUOTE] = "\"", - [aux_sym_string_lit_token1] = "string_lit_token1", [sym_comment] = "comment", [sym_config_file] = "config_file", [sym_body] = "body", @@ -79,14 +81,16 @@ static const char * const ts_symbol_names[] = { [sym_expression] = "expression", [sym_expr_term] = "expr_term", [sym_literal_value] = "literal_value", + [sym_string_lit] = "string_lit", + [sym_bool_lit] = "bool_lit", [sym_collection_value] = "collection_value", [sym_tuple] = "tuple", [sym_object] = "object", [sym_object_elem] = "object_elem", [sym_variable_expr] = "variable_expr", - [sym_string_lit] = "string_lit", [aux_sym_body_repeat1] = "body_repeat1", [aux_sym_block_repeat1] = "block_repeat1", + [aux_sym_string_lit_repeat1] = "string_lit_repeat1", [aux_sym_tuple_repeat1] = "tuple_repeat1", [aux_sym_object_repeat1] = "object_repeat1", }; @@ -99,16 +103,16 @@ static const TSSymbol ts_symbol_map[] = { [sym_identifier] = sym_identifier, [anon_sym_LPAREN] = anon_sym_LPAREN, [anon_sym_RPAREN] = anon_sym_RPAREN, + [sym_numeric_lit] = sym_numeric_lit, + [anon_sym_DQUOTE] = anon_sym_DQUOTE, + [aux_sym_string_lit_token1] = aux_sym_string_lit_token1, [anon_sym_true] = anon_sym_true, [anon_sym_false] = anon_sym_false, - [anon_sym_null] = anon_sym_null, - [sym_numeric_lit] = sym_numeric_lit, + [sym_null_lit] = sym_null_lit, [anon_sym_LBRACK] = anon_sym_LBRACK, [anon_sym_COMMA] = anon_sym_COMMA, [anon_sym_RBRACK] = anon_sym_RBRACK, [anon_sym_COLON] = anon_sym_COLON, - [anon_sym_DQUOTE] = anon_sym_DQUOTE, - [aux_sym_string_lit_token1] = aux_sym_string_lit_token1, [sym_comment] = sym_comment, [sym_config_file] = sym_config_file, [sym_body] = sym_body, @@ -117,14 +121,16 @@ static const TSSymbol ts_symbol_map[] = { [sym_expression] = sym_expression, [sym_expr_term] = sym_expr_term, [sym_literal_value] = sym_literal_value, + [sym_string_lit] = sym_string_lit, + [sym_bool_lit] = sym_bool_lit, [sym_collection_value] = sym_collection_value, [sym_tuple] = sym_tuple, [sym_object] = sym_object, [sym_object_elem] = sym_object_elem, [sym_variable_expr] = sym_variable_expr, - [sym_string_lit] = sym_string_lit, [aux_sym_body_repeat1] = aux_sym_body_repeat1, [aux_sym_block_repeat1] = aux_sym_block_repeat1, + [aux_sym_string_lit_repeat1] = aux_sym_string_lit_repeat1, [aux_sym_tuple_repeat1] = aux_sym_tuple_repeat1, [aux_sym_object_repeat1] = aux_sym_object_repeat1, }; @@ -158,6 +164,18 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, + [sym_numeric_lit] = { + .visible = true, + .named = true, + }, + [anon_sym_DQUOTE] = { + .visible = true, + .named = false, + }, + [aux_sym_string_lit_token1] = { + .visible = false, + .named = false, + }, [anon_sym_true] = { .visible = true, .named = false, @@ -166,11 +184,7 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, - [anon_sym_null] = { - .visible = true, - .named = false, - }, - [sym_numeric_lit] = { + [sym_null_lit] = { .visible = true, .named = true, }, @@ -190,14 +204,6 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, - [anon_sym_DQUOTE] = { - .visible = true, - .named = false, - }, - [aux_sym_string_lit_token1] = { - .visible = false, - .named = false, - }, [sym_comment] = { .visible = true, .named = true, @@ -230,6 +236,14 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [sym_string_lit] = { + .visible = true, + .named = true, + }, + [sym_bool_lit] = { + .visible = true, + .named = true, + }, [sym_collection_value] = { .visible = true, .named = true, @@ -250,10 +264,6 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, - [sym_string_lit] = { - .visible = true, - .named = true, - }, [aux_sym_body_repeat1] = { .visible = false, .named = false, @@ -262,6 +272,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = false, }, + [aux_sym_string_lit_repeat1] = { + .visible = false, + .named = false, + }, [aux_sym_tuple_repeat1] = { .visible = false, .named = false, @@ -1828,16 +1842,16 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { switch (state) { case 0: if (eof) ADVANCE(9); - if (lookahead == '"') ADVANCE(36); - if (lookahead == '#') ADVANCE(39); + if (lookahead == '"') ADVANCE(29); + if (lookahead == '#') ADVANCE(42); if (lookahead == '(') ADVANCE(24); if (lookahead == ')') ADVANCE(25); - if (lookahead == ',') ADVANCE(33); + if (lookahead == ',') ADVANCE(38); if (lookahead == '/') ADVANCE(2); - if (lookahead == ':') ADVANCE(35); + if (lookahead == ':') ADVANCE(40); if (lookahead == '=') ADVANCE(10); - if (lookahead == '[') ADVANCE(32); - if (lookahead == ']') ADVANCE(34); + if (lookahead == '[') ADVANCE(37); + if (lookahead == ']') ADVANCE(39); if (lookahead == 'f') ADVANCE(13); if (lookahead == 'n') ADVANCE(22); if (lookahead == 't') ADVANCE(19); @@ -1847,28 +1861,26 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(0) - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(29); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(26); if (sym_identifier_character_set_1(lookahead)) ADVANCE(23); END_STATE(); case 1: - if (lookahead == '#') ADVANCE(39); - if (lookahead == '/') ADVANCE(2); + if (lookahead == '\n') SKIP(1) + if (lookahead == '"') ADVANCE(29); + if (lookahead == '#') ADVANCE(33); + if (lookahead == '/') ADVANCE(32); if (lookahead == '\t' || - lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') SKIP(1) - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(37); + lookahead == ' ') ADVANCE(31); + if (lookahead != 0) ADVANCE(30); END_STATE(); case 2: if (lookahead == '*') ADVANCE(4); - if (lookahead == '/') ADVANCE(39); + if (lookahead == '/') ADVANCE(42); END_STATE(); case 3: if (lookahead == '*') ADVANCE(3); - if (lookahead == '/') ADVANCE(38); + if (lookahead == '/') ADVANCE(41); if (lookahead != 0) ADVANCE(4); END_STATE(); case 4: @@ -1878,24 +1890,24 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { case 5: if (lookahead == '+' || lookahead == '-') ADVANCE(7); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(31); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(28); END_STATE(); case 6: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(30); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(27); END_STATE(); case 7: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(31); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(28); END_STATE(); case 8: if (eof) ADVANCE(9); - if (lookahead == '"') ADVANCE(36); - if (lookahead == '#') ADVANCE(39); + if (lookahead == '"') ADVANCE(29); + if (lookahead == '#') ADVANCE(42); if (lookahead == ')') ADVANCE(25); - if (lookahead == ',') ADVANCE(33); + if (lookahead == ',') ADVANCE(38); if (lookahead == '/') ADVANCE(2); - if (lookahead == ':') ADVANCE(35); + if (lookahead == ':') ADVANCE(40); if (lookahead == '=') ADVANCE(10); - if (lookahead == ']') ADVANCE(34); + if (lookahead == ']') ADVANCE(39); if (lookahead == '{') ADVANCE(11); if (lookahead == '}') ADVANCE(12); if (lookahead == '\t' || @@ -1923,12 +1935,12 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { END_STATE(); case 14: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(26); + if (lookahead == 'e') ADVANCE(34); if (sym_identifier_character_set_3(lookahead)) ADVANCE(23); END_STATE(); case 15: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(27); + if (lookahead == 'e') ADVANCE(35); if (sym_identifier_character_set_3(lookahead)) ADVANCE(23); END_STATE(); case 16: @@ -1938,7 +1950,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { END_STATE(); case 17: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(28); + if (lookahead == 'l') ADVANCE(36); if (sym_identifier_character_set_3(lookahead)) ADVANCE(23); END_STATE(); case 18: @@ -1977,61 +1989,78 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { ACCEPT_TOKEN(anon_sym_RPAREN); END_STATE(); case 26: - ACCEPT_TOKEN(anon_sym_true); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(23); - END_STATE(); - case 27: - ACCEPT_TOKEN(anon_sym_false); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(23); - END_STATE(); - case 28: - ACCEPT_TOKEN(anon_sym_null); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(23); - END_STATE(); - case 29: ACCEPT_TOKEN(sym_numeric_lit); if (lookahead == '.') ADVANCE(6); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(29); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(26); END_STATE(); - case 30: + case 27: ACCEPT_TOKEN(sym_numeric_lit); if (lookahead == 'E' || lookahead == 'e') ADVANCE(5); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(30); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(27); END_STATE(); - case 31: + case 28: ACCEPT_TOKEN(sym_numeric_lit); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(31); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(28); END_STATE(); - case 32: - ACCEPT_TOKEN(anon_sym_LBRACK); - END_STATE(); - case 33: - ACCEPT_TOKEN(anon_sym_COMMA); - END_STATE(); - case 34: - ACCEPT_TOKEN(anon_sym_RBRACK); - END_STATE(); - case 35: - ACCEPT_TOKEN(anon_sym_COLON); - END_STATE(); - case 36: + case 29: ACCEPT_TOKEN(anon_sym_DQUOTE); END_STATE(); - case 37: + case 30: ACCEPT_TOKEN(aux_sym_string_lit_token1); - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || - lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(37); + END_STATE(); + case 31: + ACCEPT_TOKEN(aux_sym_string_lit_token1); + if (lookahead == '"') ADVANCE(29); + if (lookahead == '#') ADVANCE(33); + if (lookahead == '/') ADVANCE(32); + if (lookahead == '\t' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(31); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(30); + END_STATE(); + case 32: + ACCEPT_TOKEN(aux_sym_string_lit_token1); + if (lookahead == '*') ADVANCE(4); + if (lookahead == '/') ADVANCE(42); + END_STATE(); + case 33: + ACCEPT_TOKEN(aux_sym_string_lit_token1); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(42); + END_STATE(); + case 34: + ACCEPT_TOKEN(anon_sym_true); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(23); + END_STATE(); + case 35: + ACCEPT_TOKEN(anon_sym_false); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(23); + END_STATE(); + case 36: + ACCEPT_TOKEN(sym_null_lit); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(23); + END_STATE(); + case 37: + ACCEPT_TOKEN(anon_sym_LBRACK); END_STATE(); case 38: - ACCEPT_TOKEN(sym_comment); + ACCEPT_TOKEN(anon_sym_COMMA); END_STATE(); case 39: + ACCEPT_TOKEN(anon_sym_RBRACK); + END_STATE(); + case 40: + ACCEPT_TOKEN(anon_sym_COLON); + END_STATE(); + case 41: + ACCEPT_TOKEN(sym_comment); + END_STATE(); + case 42: ACCEPT_TOKEN(sym_comment); if (lookahead != 0 && - lookahead != '\n') ADVANCE(39); + lookahead != '\n') ADVANCE(42); END_STATE(); default: return false; @@ -2069,27 +2098,30 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [27] = {.lex_state = 8}, [28] = {.lex_state = 8}, [29] = {.lex_state = 8}, - [30] = {.lex_state = 0}, + [30] = {.lex_state = 8}, [31] = {.lex_state = 0}, - [32] = {.lex_state = 8}, - [33] = {.lex_state = 0}, + [32] = {.lex_state = 0}, + [33] = {.lex_state = 8}, [34] = {.lex_state = 0}, [35] = {.lex_state = 8}, - [36] = {.lex_state = 8}, + [36] = {.lex_state = 1}, [37] = {.lex_state = 0}, - [38] = {.lex_state = 0}, - [39] = {.lex_state = 0}, + [38] = {.lex_state = 1}, + [39] = {.lex_state = 8}, [40] = {.lex_state = 0}, [41] = {.lex_state = 0}, - [42] = {.lex_state = 0}, - [43] = {.lex_state = 0}, + [42] = {.lex_state = 1}, + [43] = {.lex_state = 8}, [44] = {.lex_state = 0}, [45] = {.lex_state = 0}, [46] = {.lex_state = 0}, [47] = {.lex_state = 0}, [48] = {.lex_state = 0}, - [49] = {.lex_state = 1}, + [49] = {.lex_state = 0}, [50] = {.lex_state = 0}, + [51] = {.lex_state = 0}, + [52] = {.lex_state = 0}, + [53] = {.lex_state = 0}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { @@ -2101,168 +2133,175 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_identifier] = ACTIONS(1), [anon_sym_LPAREN] = ACTIONS(1), [anon_sym_RPAREN] = ACTIONS(1), + [sym_numeric_lit] = ACTIONS(1), + [anon_sym_DQUOTE] = ACTIONS(1), [anon_sym_true] = ACTIONS(1), [anon_sym_false] = ACTIONS(1), - [anon_sym_null] = ACTIONS(1), - [sym_numeric_lit] = ACTIONS(1), + [sym_null_lit] = ACTIONS(1), [anon_sym_LBRACK] = ACTIONS(1), [anon_sym_COMMA] = ACTIONS(1), [anon_sym_RBRACK] = ACTIONS(1), [anon_sym_COLON] = ACTIONS(1), - [anon_sym_DQUOTE] = ACTIONS(1), [sym_comment] = ACTIONS(3), }, [1] = { - [sym_config_file] = STATE(44), - [sym_body] = STATE(48), - [sym_attribute] = STATE(21), - [sym_block] = STATE(21), - [aux_sym_body_repeat1] = STATE(21), + [sym_config_file] = STATE(51), + [sym_body] = STATE(53), + [sym_attribute] = STATE(27), + [sym_block] = STATE(27), + [aux_sym_body_repeat1] = STATE(27), [sym_identifier] = ACTIONS(5), [sym_comment] = ACTIONS(3), }, [2] = { - [sym_expression] = STATE(39), - [sym_expr_term] = STATE(16), - [sym_literal_value] = STATE(18), - [sym_collection_value] = STATE(18), - [sym_tuple] = STATE(19), - [sym_object] = STATE(19), - [sym_object_elem] = STATE(33), - [sym_variable_expr] = STATE(18), - [sym_string_lit] = STATE(15), + [sym_expression] = STATE(45), + [sym_expr_term] = STATE(18), + [sym_literal_value] = STATE(19), + [sym_string_lit] = STATE(11), + [sym_bool_lit] = STATE(11), + [sym_collection_value] = STATE(19), + [sym_tuple] = STATE(20), + [sym_object] = STATE(20), + [sym_object_elem] = STATE(31), + [sym_variable_expr] = STATE(19), [anon_sym_LBRACE] = ACTIONS(7), [anon_sym_RBRACE] = ACTIONS(9), [sym_identifier] = ACTIONS(11), [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_true] = ACTIONS(15), - [anon_sym_false] = ACTIONS(15), - [anon_sym_null] = ACTIONS(15), - [sym_numeric_lit] = ACTIONS(17), - [anon_sym_LBRACK] = ACTIONS(19), - [anon_sym_DQUOTE] = ACTIONS(21), + [sym_numeric_lit] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + [anon_sym_true] = ACTIONS(19), + [anon_sym_false] = ACTIONS(19), + [sym_null_lit] = ACTIONS(21), + [anon_sym_LBRACK] = ACTIONS(23), [sym_comment] = ACTIONS(3), }, [3] = { - [sym_expression] = STATE(39), - [sym_expr_term] = STATE(16), - [sym_literal_value] = STATE(18), - [sym_collection_value] = STATE(18), - [sym_tuple] = STATE(19), - [sym_object] = STATE(19), - [sym_object_elem] = STATE(41), - [sym_variable_expr] = STATE(18), - [sym_string_lit] = STATE(15), + [sym_expression] = STATE(45), + [sym_expr_term] = STATE(18), + [sym_literal_value] = STATE(19), + [sym_string_lit] = STATE(11), + [sym_bool_lit] = STATE(11), + [sym_collection_value] = STATE(19), + [sym_tuple] = STATE(20), + [sym_object] = STATE(20), + [sym_object_elem] = STATE(46), + [sym_variable_expr] = STATE(19), [anon_sym_LBRACE] = ACTIONS(7), [sym_identifier] = ACTIONS(11), [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_true] = ACTIONS(15), - [anon_sym_false] = ACTIONS(15), - [anon_sym_null] = ACTIONS(15), - [sym_numeric_lit] = ACTIONS(17), - [anon_sym_LBRACK] = ACTIONS(19), - [anon_sym_DQUOTE] = ACTIONS(21), + [sym_numeric_lit] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + [anon_sym_true] = ACTIONS(19), + [anon_sym_false] = ACTIONS(19), + [sym_null_lit] = ACTIONS(21), + [anon_sym_LBRACK] = ACTIONS(23), [sym_comment] = ACTIONS(3), }, [4] = { - [sym_expression] = STATE(37), - [sym_expr_term] = STATE(16), - [sym_literal_value] = STATE(18), - [sym_collection_value] = STATE(18), - [sym_tuple] = STATE(19), - [sym_object] = STATE(19), - [sym_variable_expr] = STATE(18), - [sym_string_lit] = STATE(15), + [sym_expression] = STATE(34), + [sym_expr_term] = STATE(18), + [sym_literal_value] = STATE(19), + [sym_string_lit] = STATE(11), + [sym_bool_lit] = STATE(11), + [sym_collection_value] = STATE(19), + [sym_tuple] = STATE(20), + [sym_object] = STATE(20), + [sym_variable_expr] = STATE(19), [anon_sym_LBRACE] = ACTIONS(7), - [sym_identifier] = ACTIONS(23), + [sym_identifier] = ACTIONS(25), [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_true] = ACTIONS(15), - [anon_sym_false] = ACTIONS(15), - [anon_sym_null] = ACTIONS(15), - [sym_numeric_lit] = ACTIONS(17), - [anon_sym_LBRACK] = ACTIONS(19), - [anon_sym_RBRACK] = ACTIONS(25), - [anon_sym_DQUOTE] = ACTIONS(21), + [sym_numeric_lit] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + [anon_sym_true] = ACTIONS(19), + [anon_sym_false] = ACTIONS(19), + [sym_null_lit] = ACTIONS(21), + [anon_sym_LBRACK] = ACTIONS(23), + [anon_sym_RBRACK] = ACTIONS(27), [sym_comment] = ACTIONS(3), }, [5] = { - [sym_expression] = STATE(40), - [sym_expr_term] = STATE(16), - [sym_literal_value] = STATE(18), - [sym_collection_value] = STATE(18), - [sym_tuple] = STATE(19), - [sym_object] = STATE(19), - [sym_variable_expr] = STATE(18), - [sym_string_lit] = STATE(15), + [sym_expression] = STATE(48), + [sym_expr_term] = STATE(18), + [sym_literal_value] = STATE(19), + [sym_string_lit] = STATE(11), + [sym_bool_lit] = STATE(11), + [sym_collection_value] = STATE(19), + [sym_tuple] = STATE(20), + [sym_object] = STATE(20), + [sym_variable_expr] = STATE(19), [anon_sym_LBRACE] = ACTIONS(7), - [sym_identifier] = ACTIONS(23), + [sym_identifier] = ACTIONS(25), [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_true] = ACTIONS(15), - [anon_sym_false] = ACTIONS(15), - [anon_sym_null] = ACTIONS(15), - [sym_numeric_lit] = ACTIONS(17), - [anon_sym_LBRACK] = ACTIONS(19), - [anon_sym_DQUOTE] = ACTIONS(21), + [sym_numeric_lit] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + [anon_sym_true] = ACTIONS(19), + [anon_sym_false] = ACTIONS(19), + [sym_null_lit] = ACTIONS(21), + [anon_sym_LBRACK] = ACTIONS(23), [sym_comment] = ACTIONS(3), }, [6] = { - [sym_expression] = STATE(46), - [sym_expr_term] = STATE(16), - [sym_literal_value] = STATE(18), - [sym_collection_value] = STATE(18), - [sym_tuple] = STATE(19), - [sym_object] = STATE(19), - [sym_variable_expr] = STATE(18), - [sym_string_lit] = STATE(15), + [sym_expression] = STATE(44), + [sym_expr_term] = STATE(18), + [sym_literal_value] = STATE(19), + [sym_string_lit] = STATE(11), + [sym_bool_lit] = STATE(11), + [sym_collection_value] = STATE(19), + [sym_tuple] = STATE(20), + [sym_object] = STATE(20), + [sym_variable_expr] = STATE(19), [anon_sym_LBRACE] = ACTIONS(7), - [sym_identifier] = ACTIONS(23), + [sym_identifier] = ACTIONS(25), [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_true] = ACTIONS(15), - [anon_sym_false] = ACTIONS(15), - [anon_sym_null] = ACTIONS(15), - [sym_numeric_lit] = ACTIONS(17), - [anon_sym_LBRACK] = ACTIONS(19), - [anon_sym_DQUOTE] = ACTIONS(21), + [sym_numeric_lit] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + [anon_sym_true] = ACTIONS(19), + [anon_sym_false] = ACTIONS(19), + [sym_null_lit] = ACTIONS(21), + [anon_sym_LBRACK] = ACTIONS(23), [sym_comment] = ACTIONS(3), }, [7] = { - [sym_expression] = STATE(36), - [sym_expr_term] = STATE(16), - [sym_literal_value] = STATE(18), - [sym_collection_value] = STATE(18), - [sym_tuple] = STATE(19), - [sym_object] = STATE(19), - [sym_variable_expr] = STATE(18), - [sym_string_lit] = STATE(15), + [sym_expression] = STATE(39), + [sym_expr_term] = STATE(18), + [sym_literal_value] = STATE(19), + [sym_string_lit] = STATE(11), + [sym_bool_lit] = STATE(11), + [sym_collection_value] = STATE(19), + [sym_tuple] = STATE(20), + [sym_object] = STATE(20), + [sym_variable_expr] = STATE(19), [anon_sym_LBRACE] = ACTIONS(7), - [sym_identifier] = ACTIONS(23), + [sym_identifier] = ACTIONS(25), [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_true] = ACTIONS(15), - [anon_sym_false] = ACTIONS(15), - [anon_sym_null] = ACTIONS(15), - [sym_numeric_lit] = ACTIONS(17), - [anon_sym_LBRACK] = ACTIONS(19), - [anon_sym_DQUOTE] = ACTIONS(21), + [sym_numeric_lit] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + [anon_sym_true] = ACTIONS(19), + [anon_sym_false] = ACTIONS(19), + [sym_null_lit] = ACTIONS(21), + [anon_sym_LBRACK] = ACTIONS(23), [sym_comment] = ACTIONS(3), }, [8] = { - [sym_expression] = STATE(43), - [sym_expr_term] = STATE(16), - [sym_literal_value] = STATE(18), - [sym_collection_value] = STATE(18), - [sym_tuple] = STATE(19), - [sym_object] = STATE(19), - [sym_variable_expr] = STATE(18), - [sym_string_lit] = STATE(15), + [sym_expression] = STATE(50), + [sym_expr_term] = STATE(18), + [sym_literal_value] = STATE(19), + [sym_string_lit] = STATE(11), + [sym_bool_lit] = STATE(11), + [sym_collection_value] = STATE(19), + [sym_tuple] = STATE(20), + [sym_object] = STATE(20), + [sym_variable_expr] = STATE(19), [anon_sym_LBRACE] = ACTIONS(7), - [sym_identifier] = ACTIONS(23), + [sym_identifier] = ACTIONS(25), [anon_sym_LPAREN] = ACTIONS(13), - [anon_sym_true] = ACTIONS(15), - [anon_sym_false] = ACTIONS(15), - [anon_sym_null] = ACTIONS(15), - [sym_numeric_lit] = ACTIONS(17), - [anon_sym_LBRACK] = ACTIONS(19), - [anon_sym_DQUOTE] = ACTIONS(21), + [sym_numeric_lit] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), + [anon_sym_true] = ACTIONS(19), + [anon_sym_false] = ACTIONS(19), + [sym_null_lit] = ACTIONS(21), + [anon_sym_LBRACK] = ACTIONS(23), [sym_comment] = ACTIONS(3), }, }; @@ -2271,42 +2310,32 @@ static const uint16_t ts_small_parse_table[] = { [0] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(27), 10, + ACTIONS(29), 10, ts_builtin_sym_end, anon_sym_EQ, anon_sym_LBRACE, anon_sym_RBRACE, sym_identifier, anon_sym_RPAREN, + anon_sym_DQUOTE, anon_sym_COMMA, anon_sym_RBRACK, anon_sym_COLON, - anon_sym_DQUOTE, [16] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(29), 8, + ACTIONS(31), 10, ts_builtin_sym_end, anon_sym_EQ, + anon_sym_LBRACE, anon_sym_RBRACE, sym_identifier, anon_sym_RPAREN, + anon_sym_DQUOTE, anon_sym_COMMA, anon_sym_RBRACK, anon_sym_COLON, - [30] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(31), 8, - ts_builtin_sym_end, - anon_sym_EQ, - anon_sym_RBRACE, - sym_identifier, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_COLON, - [44] = 2, + [32] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(33), 8, @@ -2318,7 +2347,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, anon_sym_RBRACK, anon_sym_COLON, - [58] = 2, + [46] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(35), 8, @@ -2330,7 +2359,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, anon_sym_RBRACK, anon_sym_COLON, - [72] = 2, + [60] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(37), 8, @@ -2342,7 +2371,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, anon_sym_RBRACK, anon_sym_COLON, - [86] = 2, + [74] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(39), 8, @@ -2354,7 +2383,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, anon_sym_RBRACK, anon_sym_COLON, - [100] = 2, + [88] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(41), 8, @@ -2366,7 +2395,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, anon_sym_RBRACK, anon_sym_COLON, - [114] = 2, + [102] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(43), 8, @@ -2378,7 +2407,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, anon_sym_RBRACK, anon_sym_COLON, - [128] = 2, + [116] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(45), 8, @@ -2390,7 +2419,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, anon_sym_RBRACK, anon_sym_COLON, - [142] = 2, + [130] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(47), 8, @@ -2402,7 +2431,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, anon_sym_RBRACK, anon_sym_COLON, - [156] = 2, + [144] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(49), 8, @@ -2414,362 +2443,426 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COMMA, anon_sym_RBRACK, anon_sym_COLON, - [170] = 4, + [158] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(51), 8, + ts_builtin_sym_end, + anon_sym_EQ, + anon_sym_RBRACE, + sym_identifier, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_COLON, + [172] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(53), 8, + ts_builtin_sym_end, + anon_sym_EQ, + anon_sym_RBRACE, + sym_identifier, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_COLON, + [186] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 8, + ts_builtin_sym_end, + anon_sym_EQ, + anon_sym_RBRACE, + sym_identifier, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_COLON, + [200] = 5, ACTIONS(3), 1, sym_comment, ACTIONS(5), 1, sym_identifier, - ACTIONS(51), 2, + ACTIONS(57), 1, + anon_sym_RBRACE, + STATE(52), 1, + sym_body, + STATE(27), 3, + sym_attribute, + sym_block, + aux_sym_body_repeat1, + [218] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_identifier, + ACTIONS(59), 1, + anon_sym_RBRACE, + STATE(49), 1, + sym_body, + STATE(27), 3, + sym_attribute, + sym_block, + aux_sym_body_repeat1, + [236] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(63), 1, + sym_identifier, + ACTIONS(61), 2, ts_builtin_sym_end, anon_sym_RBRACE, STATE(25), 3, sym_attribute, sym_block, aux_sym_body_repeat1, - [186] = 5, + [252] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(5), 1, - sym_identifier, - ACTIONS(53), 1, - anon_sym_RBRACE, - STATE(47), 1, - sym_body, - STATE(21), 3, - sym_attribute, - sym_block, - aux_sym_body_repeat1, - [204] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(5), 1, - sym_identifier, - ACTIONS(55), 1, - anon_sym_RBRACE, - STATE(50), 1, - sym_body, - STATE(21), 3, - sym_attribute, - sym_block, - aux_sym_body_repeat1, - [222] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(57), 6, + ACTIONS(66), 6, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_RBRACK, - [234] = 4, + [264] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(61), 1, + ACTIONS(5), 1, sym_identifier, - ACTIONS(59), 2, + ACTIONS(68), 2, ts_builtin_sym_end, anon_sym_RBRACE, STATE(25), 3, sym_attribute, sym_block, aux_sym_body_repeat1, - [250] = 6, + [280] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(21), 1, - anon_sym_DQUOTE, - ACTIONS(64), 1, - anon_sym_EQ, - ACTIONS(66), 1, - anon_sym_LBRACE, - ACTIONS(68), 1, - sym_identifier, - STATE(27), 2, - sym_string_lit, - aux_sym_block_repeat1, - [270] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(21), 1, + ACTIONS(17), 1, anon_sym_DQUOTE, ACTIONS(70), 1, - anon_sym_LBRACE, + anon_sym_EQ, ACTIONS(72), 1, - sym_identifier, - STATE(28), 2, - sym_string_lit, - aux_sym_block_repeat1, - [287] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(74), 1, anon_sym_LBRACE, - ACTIONS(76), 1, + ACTIONS(74), 1, sym_identifier, - ACTIONS(79), 1, - anon_sym_DQUOTE, - STATE(28), 2, + STATE(29), 2, sym_string_lit, aux_sym_block_repeat1, - [304] = 2, + [300] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(82), 3, - ts_builtin_sym_end, - anon_sym_RBRACE, + ACTIONS(17), 1, + anon_sym_DQUOTE, + ACTIONS(76), 1, + anon_sym_LBRACE, + ACTIONS(78), 1, sym_identifier, - [313] = 4, + STATE(30), 2, + sym_string_lit, + aux_sym_block_repeat1, + [317] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(84), 1, + ACTIONS(80), 1, + anon_sym_LBRACE, + ACTIONS(82), 1, + sym_identifier, + ACTIONS(85), 1, + anon_sym_DQUOTE, + STATE(30), 2, + sym_string_lit, + aux_sym_block_repeat1, + [334] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(88), 1, + anon_sym_RBRACE, + ACTIONS(90), 1, anon_sym_COMMA, - ACTIONS(87), 1, + STATE(41), 1, + aux_sym_object_repeat1, + [347] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(92), 1, + anon_sym_COMMA, + ACTIONS(94), 1, anon_sym_RBRACK, - STATE(30), 1, + STATE(37), 1, aux_sym_tuple_repeat1, - [326] = 4, + [360] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(89), 1, - anon_sym_RBRACE, - ACTIONS(91), 1, - anon_sym_COMMA, - STATE(31), 1, - aux_sym_object_repeat1, - [339] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(94), 3, + ACTIONS(96), 3, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, - [348] = 4, + [369] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(96), 1, - anon_sym_RBRACE, + ACTIONS(92), 1, + anon_sym_COMMA, ACTIONS(98), 1, - anon_sym_COMMA, - STATE(38), 1, - aux_sym_object_repeat1, - [361] = 4, + anon_sym_RBRACK, + STATE(32), 1, + aux_sym_tuple_repeat1, + [382] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(100), 1, - anon_sym_COMMA, + ACTIONS(100), 3, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + [391] = 4, ACTIONS(102), 1, - anon_sym_RBRACK, - STATE(30), 1, - aux_sym_tuple_repeat1, - [374] = 2, + anon_sym_DQUOTE, + ACTIONS(104), 1, + aux_sym_string_lit_token1, + ACTIONS(107), 1, + sym_comment, + STATE(36), 1, + aux_sym_string_lit_repeat1, + [404] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(104), 3, + ACTIONS(109), 1, + anon_sym_COMMA, + ACTIONS(112), 1, + anon_sym_RBRACK, + STATE(37), 1, + aux_sym_tuple_repeat1, + [417] = 4, + ACTIONS(107), 1, + sym_comment, + ACTIONS(114), 1, + anon_sym_DQUOTE, + ACTIONS(116), 1, + aux_sym_string_lit_token1, + STATE(36), 1, + aux_sym_string_lit_repeat1, + [430] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(118), 3, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, - [383] = 2, + [439] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(106), 3, - ts_builtin_sym_end, + ACTIONS(120), 1, anon_sym_RBRACE, - sym_identifier, - [392] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(100), 1, + ACTIONS(122), 1, anon_sym_COMMA, - ACTIONS(108), 1, - anon_sym_RBRACK, - STATE(34), 1, - aux_sym_tuple_repeat1, - [405] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(98), 1, - anon_sym_COMMA, - ACTIONS(110), 1, - anon_sym_RBRACE, - STATE(31), 1, + STATE(40), 1, aux_sym_object_repeat1, - [418] = 2, + [452] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(90), 1, + anon_sym_COMMA, + ACTIONS(125), 1, + anon_sym_RBRACE, + STATE(40), 1, + aux_sym_object_repeat1, + [465] = 4, + ACTIONS(107), 1, + sym_comment, + ACTIONS(127), 1, + anon_sym_DQUOTE, + ACTIONS(129), 1, + aux_sym_string_lit_token1, + STATE(38), 1, + aux_sym_string_lit_repeat1, + [478] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(131), 3, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + [487] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(133), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [495] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(135), 2, + anon_sym_EQ, + anon_sym_COLON, + [503] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(120), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [511] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(137), 2, + anon_sym_EQ, + anon_sym_COLON, + [519] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(112), 2, - anon_sym_EQ, - anon_sym_COLON, - [426] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(114), 2, - anon_sym_RBRACE, - anon_sym_COMMA, - [434] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(89), 2, - anon_sym_RBRACE, - anon_sym_COMMA, - [442] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(116), 2, - anon_sym_EQ, - anon_sym_COLON, - [450] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(87), 2, anon_sym_COMMA, anon_sym_RBRACK, - [458] = 2, + [527] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(119), 1, - ts_builtin_sym_end, - [465] = 2, + ACTIONS(140), 1, + anon_sym_RBRACE, + [534] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(121), 1, - anon_sym_DQUOTE, - [472] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(123), 1, + ACTIONS(142), 1, anon_sym_RPAREN, - [479] = 2, + [541] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(55), 1, - anon_sym_RBRACE, - [486] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(125), 1, + ACTIONS(144), 1, ts_builtin_sym_end, - [493] = 2, + [548] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(127), 1, - aux_sym_string_lit_token1, - [500] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(129), 1, + ACTIONS(59), 1, anon_sym_RBRACE, + [555] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(146), 1, + ts_builtin_sym_end, }; static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(9)] = 0, [SMALL_STATE(10)] = 16, - [SMALL_STATE(11)] = 30, - [SMALL_STATE(12)] = 44, - [SMALL_STATE(13)] = 58, - [SMALL_STATE(14)] = 72, - [SMALL_STATE(15)] = 86, - [SMALL_STATE(16)] = 100, - [SMALL_STATE(17)] = 114, - [SMALL_STATE(18)] = 128, - [SMALL_STATE(19)] = 142, - [SMALL_STATE(20)] = 156, - [SMALL_STATE(21)] = 170, + [SMALL_STATE(11)] = 32, + [SMALL_STATE(12)] = 46, + [SMALL_STATE(13)] = 60, + [SMALL_STATE(14)] = 74, + [SMALL_STATE(15)] = 88, + [SMALL_STATE(16)] = 102, + [SMALL_STATE(17)] = 116, + [SMALL_STATE(18)] = 130, + [SMALL_STATE(19)] = 144, + [SMALL_STATE(20)] = 158, + [SMALL_STATE(21)] = 172, [SMALL_STATE(22)] = 186, - [SMALL_STATE(23)] = 204, - [SMALL_STATE(24)] = 222, - [SMALL_STATE(25)] = 234, - [SMALL_STATE(26)] = 250, - [SMALL_STATE(27)] = 270, - [SMALL_STATE(28)] = 287, - [SMALL_STATE(29)] = 304, - [SMALL_STATE(30)] = 313, - [SMALL_STATE(31)] = 326, - [SMALL_STATE(32)] = 339, - [SMALL_STATE(33)] = 348, - [SMALL_STATE(34)] = 361, - [SMALL_STATE(35)] = 374, - [SMALL_STATE(36)] = 383, - [SMALL_STATE(37)] = 392, - [SMALL_STATE(38)] = 405, - [SMALL_STATE(39)] = 418, - [SMALL_STATE(40)] = 426, - [SMALL_STATE(41)] = 434, - [SMALL_STATE(42)] = 442, - [SMALL_STATE(43)] = 450, - [SMALL_STATE(44)] = 458, - [SMALL_STATE(45)] = 465, - [SMALL_STATE(46)] = 472, - [SMALL_STATE(47)] = 479, - [SMALL_STATE(48)] = 486, - [SMALL_STATE(49)] = 493, - [SMALL_STATE(50)] = 500, + [SMALL_STATE(23)] = 200, + [SMALL_STATE(24)] = 218, + [SMALL_STATE(25)] = 236, + [SMALL_STATE(26)] = 252, + [SMALL_STATE(27)] = 264, + [SMALL_STATE(28)] = 280, + [SMALL_STATE(29)] = 300, + [SMALL_STATE(30)] = 317, + [SMALL_STATE(31)] = 334, + [SMALL_STATE(32)] = 347, + [SMALL_STATE(33)] = 360, + [SMALL_STATE(34)] = 369, + [SMALL_STATE(35)] = 382, + [SMALL_STATE(36)] = 391, + [SMALL_STATE(37)] = 404, + [SMALL_STATE(38)] = 417, + [SMALL_STATE(39)] = 430, + [SMALL_STATE(40)] = 439, + [SMALL_STATE(41)] = 452, + [SMALL_STATE(42)] = 465, + [SMALL_STATE(43)] = 478, + [SMALL_STATE(44)] = 487, + [SMALL_STATE(45)] = 495, + [SMALL_STATE(46)] = 503, + [SMALL_STATE(47)] = 511, + [SMALL_STATE(48)] = 519, + [SMALL_STATE(49)] = 527, + [SMALL_STATE(50)] = 534, + [SMALL_STATE(51)] = 541, + [SMALL_STATE(52)] = 548, + [SMALL_STATE(53)] = 555, }; static const TSParseActionEntry ts_parse_actions[] = { [0] = {.entry = {.count = 0, .reusable = false}}, [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT_EXTRA(), - [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), - [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), - [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(42), - [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), - [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(15), - [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), - [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(24), - [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), - [27] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 3), - [29] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_term, 3), - [31] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 3), - [33] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 4), - [35] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 3), - [37] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 2), - [39] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_literal_value, 1), - [41] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1), - [43] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 4), - [45] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_term, 1), - [47] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_collection_value, 1), - [49] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 2), - [51] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_body, 1), - [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), - [55] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), - [57] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable_expr, 1), - [59] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_body_repeat1, 2), - [61] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_body_repeat1, 2), SHIFT_REPEAT(26), - [64] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), - [66] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), - [68] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [70] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [72] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), - [74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), - [76] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(28), - [79] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(49), - [82] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 5), - [84] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), SHIFT_REPEAT(8), - [87] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), - [89] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_object_repeat1, 2), - [91] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_object_repeat1, 2), SHIFT_REPEAT(3), - [94] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 4), - [96] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), - [98] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), - [102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [104] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 3), - [106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3), - [108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), - [110] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), - [112] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), - [114] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_elem, 3), - [116] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_variable_expr, 1), SHIFT(5), - [119] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [121] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), - [123] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), - [125] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_config_file, 1), - [127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), - [129] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(47), + [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), + [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), + [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(16), + [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(11), + [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(26), + [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [29] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 3), + [31] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 2), + [33] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_literal_value, 1), + [35] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_term, 3), + [37] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 4), + [39] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 4), + [41] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 3), + [43] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bool_lit, 1), + [45] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 3), + [47] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1), + [49] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_term, 1), + [51] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_collection_value, 1), + [53] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 2), + [55] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 2), + [57] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [59] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [61] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_body_repeat1, 2), + [63] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_body_repeat1, 2), SHIFT_REPEAT(28), + [66] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable_expr, 1), + [68] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_body, 1), + [70] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), + [72] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [74] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), + [76] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [78] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [80] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), + [82] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(30), + [85] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(42), + [88] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [90] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [92] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), + [94] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [96] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 3), + [98] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [100] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 4), + [102] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_lit_repeat1, 2), + [104] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_string_lit_repeat1, 2), SHIFT_REPEAT(36), + [107] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), + [109] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), SHIFT_REPEAT(5), + [112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), + [114] = {.entry = {.count = 1, .reusable = false}}, SHIFT(9), + [116] = {.entry = {.count = 1, .reusable = false}}, SHIFT(36), + [118] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3), + [120] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_object_repeat1, 2), + [122] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_object_repeat1, 2), SHIFT_REPEAT(3), + [125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [127] = {.entry = {.count = 1, .reusable = false}}, SHIFT(10), + [129] = {.entry = {.count = 1, .reusable = false}}, SHIFT(38), + [131] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 5), + [133] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_elem, 3), + [135] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [137] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_variable_expr, 1), SHIFT(6), + [140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), + [142] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [144] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [146] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_config_file, 1), }; #ifdef __cplusplus