diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..fdfd3d6 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,10 @@ +root = true + +[*.{c,txt,js}] +indent_style = space +indent_size = 2 +tab_width = 8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +charset = utf-8 diff --git a/README.md b/README.md index 5a5efdf..a95bfae 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ tree-sitter grammar for the [HCL](https://github.com/hashicorp/hcl/blob/main/hcl Highlighting `example/example.hcl`: -![Highlighting Example](https://i.imgur.com/M1PZkqL.png) +![Highlighting Example](https://i.imgur.com/sgFcxLK.png) ## Developing @@ -16,17 +16,6 @@ It is recommended to use `nix` to fulfill all development dependencies. To activ To run tests simply run `nix-shell --run 'tree-sitter test'`. -## Quoted Template Expressions - -In principle it is allowed to contain arbitary expressions in quoted template interpolations. Consider for example: - -```hcl -foo = "prefix-${func(\"bar\")}" -``` - -To make parsing a little easier, this parser only checks for valid escape sequences and template chars. -When using this parser one would have to take the content of a template interpolation, unescape it and parse it again to get the syntax tree. The same applies to template directives. - ## Todo * [ ] use [UnicodeĀ® Standard Annex #31](https://www.unicode.org/reports/tr31/) (augmented with '-') for identifiers diff --git a/example/example.hcl b/example/example.hcl index 8c02578..8826e6b 100644 --- a/example/example.hcl +++ b/example/example.hcl @@ -26,7 +26,8 @@ resource_1 "strlit1" "strlit2" { esc1 = "\" \t \UFF11FF22 \uFFFF \n" esc2 = "$${} %%{}" tpl1 = "prefix-${var.bar}" - tpl2 = "prefix-${func(\"bar\")}" + tpl2 = "prefix-${func("bar")}" + tpl3 = "prefix-${func("nested-${var.bar}")}" nested_resource_1 { attr1 = 2 diff --git a/grammar.js b/grammar.js index 83bf4c5..4f5fbda 100644 --- a/grammar.js +++ b/grammar.js @@ -25,9 +25,11 @@ module.exports = grammar({ ], externals: $ => [ - $._template_char, - $._template_char_in_interpolation, - $.escape_sequence, + $._quoted_template_start, + $._quoted_template_end, + $._template_literal_chunk, + $._template_interpolation_start, + $._template_interpolation_end, ], extras: $ => [ @@ -54,11 +56,14 @@ module.exports = grammar({ block: $ => seq( field('name', $.identifier), repeat(choice($.string_lit, $.identifier)), - '{', + $._block_start, optional($.body), - '}', + $._block_end, ), + _block_start: $ => '{', + _block_end: $ => '}', + // TODO: not to spec but good enough for now identifier: $ => token(seq( unicodeLetter, @@ -66,21 +71,21 @@ module.exports = grammar({ )), expression: $ => choice( - $.expr_term, + $._expr_term, $.operation, $.conditional, ), - expr_term: $ => choice( + _expr_term: $ => choice( $.literal_value, $.template_expr, $.collection_value, $.variable_expr, $.function_call, $.for_expr, - seq($.expr_term, $.index), - seq($.expr_term, $.get_attr), - seq($.expr_term, $.splat), + seq($._expr_term, $.index), + seq($._expr_term, $.get_attr), + seq($._expr_term, $.splat), seq('(', $.expression, ')'), ), @@ -88,6 +93,7 @@ module.exports = grammar({ $.numeric_lit, $.bool_lit, $.null_lit, + $.string_lit, ), numeric_lit: $ => /[0-9]+(\.[0-9]+([eE][-+]?[0-9]+)?)?/, @@ -96,7 +102,12 @@ module.exports = grammar({ null_lit: $ => 'null', - // string_lit is defined as quoted template + string_lit: $ => seq( + $._quoted_template_start, + $.template_literal, + $._quoted_template_end, + ), + collection_value: $ => choice( $.tuple, @@ -113,14 +124,17 @@ module.exports = grammar({ ), object: $ => seq( - '{', + $._object_start, optional(seq( $.object_elem, repeat(seq(',', $.object_elem)), )), - '}', + $._object_end, ), + _object_start: $ => '{', + _object_end: $ => '}', + object_elem: $ => seq( choice($.identifier, $.expression), choice('=', ':'), @@ -157,14 +171,14 @@ module.exports = grammar({ ), for_object_expr: $ => seq( - '{', + $._object_start, $.for_intro, $.expression, '=>', $.expression, optional($.ellipsis), optional($.for_cond), - '}', + $._object_end, ), for_intro: $ => seq( @@ -185,11 +199,14 @@ module.exports = grammar({ function_call: $ => seq( field('name', $.identifier), - '(', + $._function_call_start, optional($.function_arguments), - ')' + $._function_call_end, ), + _function_call_start: $ => '(', + _function_call_end: $ => ')', + function_arguments: $ => seq( $.expression, repeat(seq(',', $.expression)), @@ -208,7 +225,7 @@ module.exports = grammar({ operation: $ => choice($.unary_operation, $.binary_operation), - unary_operation: $ => prec.left(PREC.unary, seq(choice('-', '!'), $.expr_term)), + unary_operation: $ => prec.left(PREC.unary, seq(choice('-', '!'), $._expr_term)), binary_operation: $ => { const table = [ @@ -221,7 +238,7 @@ module.exports = grammar({ ]; return choice(...table.map(([precedence, operator]) => - prec.left(precedence, seq($.expr_term, operator, $.expr_term), + prec.left(precedence, seq($._expr_term, operator, $._expr_term), )) ); }, @@ -231,31 +248,37 @@ module.exports = grammar({ // $.heredoc_template, ), - string_lit: $ => seq( - '"', + quoted_template: $ => seq( + $._quoted_template_start, repeat(choice( - $._template_char, - $.escape_sequence, - )), - '"', + $.template_literal, + $.template_interpolation, + $.template_directive, + )), + $._quoted_template_end, ), - quoted_template: $ => seq( - '"', - repeat(choice( - $._template_char, - $.escape_sequence, - $.template_interpolation, - )), - '"', - ), + strip_marker: $ => '~', + + template_literal: $ => prec.right(repeat1( + $._template_literal_chunk, + )), template_interpolation: $ => seq( - choice('${', '${~'), - repeat(choice($._template_char_in_interpolation, $.escape_sequence)), - choice('}', '~}'), + $._template_interpolation_start, + optional($.strip_marker), + $.expression, + optional($.strip_marker), + $._template_interpolation_end, ), + // TODO + template_directive: $ => choice( + //$.template_for, + //$.template_if, + ), + + // http://stackoverflow.com/questions/13014947/regex-to-match-a-c-style-multiline-comment/36328890#36328890 comment: $ => token(choice( seq('#', /.*/), diff --git a/shell.nix b/shell.nix index b5ec4f9..a55fedd 100644 --- a/shell.nix +++ b/shell.nix @@ -13,7 +13,7 @@ in ]; shellHook = '' PATH=./node_modules/.bin:$PATH -command -v tree-sitter >/dev/null 2>&1 || npm install tree-sitter-cli +command -v tree-sitter >/dev/null 2>&1 || npm install tree-sitter-cli@0.19.5 ''; } diff --git a/src/grammar.json b/src/grammar.json index fa90931..0e50ee1 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -75,8 +75,8 @@ } }, { - "type": "STRING", - "value": "{" + "type": "SYMBOL", + "name": "_block_start" }, { "type": "CHOICE", @@ -91,11 +91,19 @@ ] }, { - "type": "STRING", - "value": "}" + "type": "SYMBOL", + "name": "_block_end" } ] }, + "_block_start": { + "type": "STRING", + "value": "{" + }, + "_block_end": { + "type": "STRING", + "value": "}" + }, "identifier": { "type": "TOKEN", "content": { @@ -133,7 +141,7 @@ "members": [ { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" }, { "type": "SYMBOL", @@ -145,7 +153,7 @@ } ] }, - "expr_term": { + "_expr_term": { "type": "CHOICE", "members": [ { @@ -177,7 +185,7 @@ "members": [ { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" }, { "type": "SYMBOL", @@ -190,7 +198,7 @@ "members": [ { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" }, { "type": "SYMBOL", @@ -203,7 +211,7 @@ "members": [ { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" }, { "type": "SYMBOL", @@ -244,6 +252,10 @@ { "type": "SYMBOL", "name": "null_lit" + }, + { + "type": "SYMBOL", + "name": "string_lit" } ] }, @@ -268,6 +280,23 @@ "type": "STRING", "value": "null" }, + "string_lit": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_quoted_template_start" + }, + { + "type": "SYMBOL", + "name": "template_literal" + }, + { + "type": "SYMBOL", + "name": "_quoted_template_end" + } + ] + }, "collection_value": { "type": "CHOICE", "members": [ @@ -331,8 +360,8 @@ "type": "SEQ", "members": [ { - "type": "STRING", - "value": "{" + "type": "SYMBOL", + "name": "_object_start" }, { "type": "CHOICE", @@ -368,11 +397,19 @@ ] }, { - "type": "STRING", - "value": "}" + "type": "SYMBOL", + "name": "_object_end" } ] }, + "_object_start": { + "type": "STRING", + "value": "{" + }, + "_object_end": { + "type": "STRING", + "value": "}" + }, "object_elem": { "type": "SEQ", "members": [ @@ -554,8 +591,8 @@ "type": "SEQ", "members": [ { - "type": "STRING", - "value": "{" + "type": "SYMBOL", + "name": "_object_start" }, { "type": "SYMBOL", @@ -598,8 +635,8 @@ ] }, { - "type": "STRING", - "value": "}" + "type": "SYMBOL", + "name": "_object_end" } ] }, @@ -678,8 +715,8 @@ } }, { - "type": "STRING", - "value": "(" + "type": "SYMBOL", + "name": "_function_call_start" }, { "type": "CHOICE", @@ -694,11 +731,19 @@ ] }, { - "type": "STRING", - "value": ")" + "type": "SYMBOL", + "name": "_function_call_end" } ] }, + "_function_call_start": { + "type": "STRING", + "value": "(" + }, + "_function_call_end": { + "type": "STRING", + "value": ")" + }, "function_arguments": { "type": "SEQ", "members": [ @@ -811,7 +856,7 @@ }, { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" } ] } @@ -827,7 +872,7 @@ "members": [ { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" }, { "type": "CHOICE", @@ -848,7 +893,7 @@ }, { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" } ] } @@ -861,7 +906,7 @@ "members": [ { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" }, { "type": "CHOICE", @@ -878,7 +923,7 @@ }, { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" } ] } @@ -891,7 +936,7 @@ "members": [ { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" }, { "type": "CHOICE", @@ -916,7 +961,7 @@ }, { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" } ] } @@ -929,7 +974,7 @@ "members": [ { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" }, { "type": "CHOICE", @@ -946,7 +991,7 @@ }, { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" } ] } @@ -959,7 +1004,7 @@ "members": [ { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" }, { "type": "CHOICE", @@ -972,7 +1017,7 @@ }, { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" } ] } @@ -985,7 +1030,7 @@ "members": [ { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" }, { "type": "CHOICE", @@ -998,7 +1043,7 @@ }, { "type": "SYMBOL", - "name": "expr_term" + "name": "_expr_term" } ] } @@ -1014,41 +1059,12 @@ } ] }, - "string_lit": { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "\"" - }, - { - "type": "REPEAT", - "content": { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "_template_char" - }, - { - "type": "SYMBOL", - "name": "escape_sequence" - } - ] - } - }, - { - "type": "STRING", - "value": "\"" - } - ] - }, "quoted_template": { "type": "SEQ", "members": [ { - "type": "STRING", - "value": "\"" + "type": "SYMBOL", + "name": "_quoted_template_start" }, { "type": "REPEAT", @@ -1057,72 +1073,85 @@ "members": [ { "type": "SYMBOL", - "name": "_template_char" - }, - { - "type": "SYMBOL", - "name": "escape_sequence" + "name": "template_literal" }, { "type": "SYMBOL", "name": "template_interpolation" + }, + { + "type": "SYMBOL", + "name": "template_directive" } ] } }, { - "type": "STRING", - "value": "\"" + "type": "SYMBOL", + "name": "_quoted_template_end" } ] }, + "strip_marker": { + "type": "STRING", + "value": "~" + }, + "template_literal": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "REPEAT1", + "content": { + "type": "SYMBOL", + "name": "_template_literal_chunk" + } + } + }, "template_interpolation": { "type": "SEQ", "members": [ { - "type": "CHOICE", - "members": [ - { - "type": "STRING", - "value": "${" - }, - { - "type": "STRING", - "value": "${~" - } - ] - }, - { - "type": "REPEAT", - "content": { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "_template_char_in_interpolation" - }, - { - "type": "SYMBOL", - "name": "escape_sequence" - } - ] - } + "type": "SYMBOL", + "name": "_template_interpolation_start" }, { "type": "CHOICE", "members": [ { - "type": "STRING", - "value": "}" + "type": "SYMBOL", + "name": "strip_marker" }, { - "type": "STRING", - "value": "~}" + "type": "BLANK" } ] + }, + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "strip_marker" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_template_interpolation_end" } ] }, + "template_directive": { + "type": "CHOICE", + "members": [] + }, "comment": { "type": "TOKEN", "content": { @@ -1211,15 +1240,23 @@ "externals": [ { "type": "SYMBOL", - "name": "_template_char" + "name": "_quoted_template_start" }, { "type": "SYMBOL", - "name": "_template_char_in_interpolation" + "name": "_quoted_template_end" }, { "type": "SYMBOL", - "name": "escape_sequence" + "name": "_template_literal_chunk" + }, + { + "type": "SYMBOL", + "name": "_template_interpolation_start" + }, + { + "type": "SYMBOL", + "name": "_template_interpolation_end" } ], "inline": [], diff --git a/src/node-types.json b/src/node-types.json index a8f6e33..38ec207 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -49,7 +49,43 @@ "required": true, "types": [ { - "type": "expr_term", + "type": "collection_value", + "named": true + }, + { + "type": "expression", + "named": true + }, + { + "type": "for_expr", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "get_attr", + "named": true + }, + { + "type": "index", + "named": true + }, + { + "type": "literal_value", + "named": true + }, + { + "type": "splat", + "named": true + }, + { + "type": "template_expr", + "named": true + }, + { + "type": "variable_expr", "named": true } ] @@ -163,7 +199,7 @@ } }, { - "type": "expr_term", + "type": "expression", "named": true, "fields": {}, "children": { @@ -175,7 +211,7 @@ "named": true }, { - "type": "expr_term", + "type": "conditional", "named": true }, { @@ -202,6 +238,10 @@ "type": "literal_value", "named": true }, + { + "type": "operation", + "named": true + }, { "type": "splat", "named": true @@ -217,29 +257,6 @@ ] } }, - { - "type": "expression", - "named": true, - "fields": {}, - "children": { - "multiple": false, - "required": true, - "types": [ - { - "type": "conditional", - "named": true - }, - { - "type": "expr_term", - "named": true - }, - { - "type": "operation", - "named": true - } - ] - } - }, { "type": "for_cond", "named": true, @@ -456,6 +473,10 @@ { "type": "numeric_lit", "named": true + }, + { + "type": "string_lit", + "named": true } ] } @@ -522,12 +543,16 @@ "required": false, "types": [ { - "type": "escape_sequence", + "type": "template_directive", "named": true }, { "type": "template_interpolation", "named": true + }, + { + "type": "template_literal", + "named": true } ] } @@ -556,16 +581,21 @@ "named": true, "fields": {}, "children": { - "multiple": true, - "required": false, + "multiple": false, + "required": true, "types": [ { - "type": "escape_sequence", + "type": "template_literal", "named": true } ] } }, + { + "type": "template_directive", + "named": true, + "fields": {} + }, { "type": "template_expr", "named": true, @@ -587,15 +617,24 @@ "fields": {}, "children": { "multiple": true, - "required": false, + "required": true, "types": [ { - "type": "escape_sequence", + "type": "expression", + "named": true + }, + { + "type": "strip_marker", "named": true } ] } }, + { + "type": "template_literal", + "named": true, + "fields": {} + }, { "type": "tuple", "named": true, @@ -616,11 +655,47 @@ "named": true, "fields": {}, "children": { - "multiple": false, + "multiple": true, "required": true, "types": [ { - "type": "expr_term", + "type": "collection_value", + "named": true + }, + { + "type": "expression", + "named": true + }, + { + "type": "for_expr", + "named": true + }, + { + "type": "function_call", + "named": true + }, + { + "type": "get_attr", + "named": true + }, + { + "type": "index", + "named": true + }, + { + "type": "literal_value", + "named": true + }, + { + "type": "splat", + "named": true + }, + { + "type": "template_expr", + "named": true + }, + { + "type": "variable_expr", "named": true } ] @@ -649,18 +724,6 @@ "type": "!=", "named": false }, - { - "type": "\"", - "named": false - }, - { - "type": "${", - "named": false - }, - { - "type": "${~", - "named": false - }, { "type": "%", "named": false @@ -753,10 +816,6 @@ "type": "ellipsis", "named": true }, - { - "type": "escape_sequence", - "named": true - }, { "type": "false", "named": false @@ -785,6 +844,10 @@ "type": "numeric_lit", "named": true }, + { + "type": "strip_marker", + "named": true + }, { "type": "true", "named": false @@ -800,9 +863,5 @@ { "type": "}", "named": false - }, - { - "type": "~}", - "named": false } ] \ No newline at end of file diff --git a/src/parser.c b/src/parser.c index cf9bd3c..8188114 100644 --- a/src/parser.c +++ b/src/parser.c @@ -6,12 +6,12 @@ #endif #define LANGUAGE_VERSION 13 -#define STATE_COUNT 221 +#define STATE_COUNT 312 #define LARGE_STATE_COUNT 2 -#define SYMBOL_COUNT 86 +#define SYMBOL_COUNT 92 #define ALIAS_COUNT 0 -#define TOKEN_COUNT 44 -#define EXTERNAL_TOKEN_COUNT 3 +#define TOKEN_COUNT 43 +#define EXTERNAL_TOKEN_COUNT 5 #define FIELD_COUNT 1 #define MAX_ALIAS_SEQUENCE_LENGTH 8 #define PRODUCTION_ID_COUNT 2 @@ -52,56 +52,62 @@ enum { anon_sym_BANG_EQ = 33, anon_sym_AMP_AMP = 34, anon_sym_PIPE_PIPE = 35, - anon_sym_DQUOTE = 36, - anon_sym_DOLLAR_LBRACE = 37, - anon_sym_DOLLAR_LBRACE_TILDE = 38, - anon_sym_TILDE_RBRACE = 39, - sym_comment = 40, - sym__template_char = 41, - sym__template_char_in_interpolation = 42, - sym_escape_sequence = 43, - sym_config_file = 44, - sym_body = 45, - sym_attribute = 46, - sym_block = 47, - sym_expression = 48, - sym_expr_term = 49, - sym_literal_value = 50, - sym_bool_lit = 51, - sym_collection_value = 52, - sym_tuple = 53, - sym_object = 54, - sym_object_elem = 55, - sym_index = 56, - sym_get_attr = 57, - sym_splat = 58, - sym_attr_splat = 59, - sym_full_splat = 60, - sym_for_expr = 61, - sym_for_tuple_expr = 62, - sym_for_object_expr = 63, - sym_for_intro = 64, - sym_for_cond = 65, - sym_variable_expr = 66, - sym_function_call = 67, - sym_function_arguments = 68, - sym_conditional = 69, - sym_operation = 70, - sym_unary_operation = 71, - sym_binary_operation = 72, - sym_template_expr = 73, - sym_string_lit = 74, - sym_quoted_template = 75, - sym_template_interpolation = 76, - aux_sym_body_repeat1 = 77, - aux_sym_block_repeat1 = 78, - aux_sym_tuple_repeat1 = 79, - aux_sym_object_repeat1 = 80, - aux_sym_attr_splat_repeat1 = 81, - aux_sym_full_splat_repeat1 = 82, - aux_sym_string_lit_repeat1 = 83, - aux_sym_quoted_template_repeat1 = 84, - aux_sym_template_interpolation_repeat1 = 85, + sym_strip_marker = 36, + sym_comment = 37, + sym__quoted_template_start = 38, + sym__quoted_template_end = 39, + sym__template_literal_chunk = 40, + sym__template_interpolation_start = 41, + sym__template_interpolation_end = 42, + sym_config_file = 43, + sym_body = 44, + sym_attribute = 45, + sym_block = 46, + sym__block_start = 47, + sym__block_end = 48, + sym_expression = 49, + sym__expr_term = 50, + sym_literal_value = 51, + sym_bool_lit = 52, + sym_string_lit = 53, + sym_collection_value = 54, + sym_tuple = 55, + sym_object = 56, + sym__object_start = 57, + sym__object_end = 58, + sym_object_elem = 59, + sym_index = 60, + sym_get_attr = 61, + sym_splat = 62, + sym_attr_splat = 63, + sym_full_splat = 64, + sym_for_expr = 65, + sym_for_tuple_expr = 66, + sym_for_object_expr = 67, + sym_for_intro = 68, + sym_for_cond = 69, + sym_variable_expr = 70, + sym_function_call = 71, + sym__function_call_start = 72, + sym__function_call_end = 73, + sym_function_arguments = 74, + sym_conditional = 75, + sym_operation = 76, + sym_unary_operation = 77, + sym_binary_operation = 78, + sym_template_expr = 79, + sym_quoted_template = 80, + sym_template_literal = 81, + sym_template_interpolation = 82, + sym_template_directive = 83, + aux_sym_body_repeat1 = 84, + aux_sym_block_repeat1 = 85, + aux_sym_tuple_repeat1 = 86, + aux_sym_object_repeat1 = 87, + aux_sym_attr_splat_repeat1 = 88, + aux_sym_full_splat_repeat1 = 89, + aux_sym_quoted_template_repeat1 = 90, + aux_sym_template_literal_repeat1 = 91, }; static const char * const ts_symbol_names[] = { @@ -141,25 +147,29 @@ static const char * const ts_symbol_names[] = { [anon_sym_BANG_EQ] = "!=", [anon_sym_AMP_AMP] = "&&", [anon_sym_PIPE_PIPE] = "||", - [anon_sym_DQUOTE] = "\"", - [anon_sym_DOLLAR_LBRACE] = "${", - [anon_sym_DOLLAR_LBRACE_TILDE] = "${~", - [anon_sym_TILDE_RBRACE] = "~}", + [sym_strip_marker] = "strip_marker", [sym_comment] = "comment", - [sym__template_char] = "_template_char", - [sym__template_char_in_interpolation] = "_template_char_in_interpolation", - [sym_escape_sequence] = "escape_sequence", + [sym__quoted_template_start] = "_quoted_template_start", + [sym__quoted_template_end] = "_quoted_template_end", + [sym__template_literal_chunk] = "_template_literal_chunk", + [sym__template_interpolation_start] = "_template_interpolation_start", + [sym__template_interpolation_end] = "_template_interpolation_end", [sym_config_file] = "config_file", [sym_body] = "body", [sym_attribute] = "attribute", [sym_block] = "block", + [sym__block_start] = "_block_start", + [sym__block_end] = "_block_end", [sym_expression] = "expression", - [sym_expr_term] = "expr_term", + [sym__expr_term] = "_expr_term", [sym_literal_value] = "literal_value", [sym_bool_lit] = "bool_lit", + [sym_string_lit] = "string_lit", [sym_collection_value] = "collection_value", [sym_tuple] = "tuple", [sym_object] = "object", + [sym__object_start] = "_object_start", + [sym__object_end] = "_object_end", [sym_object_elem] = "object_elem", [sym_index] = "index", [sym_get_attr] = "get_attr", @@ -173,24 +183,26 @@ static const char * const ts_symbol_names[] = { [sym_for_cond] = "for_cond", [sym_variable_expr] = "variable_expr", [sym_function_call] = "function_call", + [sym__function_call_start] = "_function_call_start", + [sym__function_call_end] = "_function_call_end", [sym_function_arguments] = "function_arguments", [sym_conditional] = "conditional", [sym_operation] = "operation", [sym_unary_operation] = "unary_operation", [sym_binary_operation] = "binary_operation", [sym_template_expr] = "template_expr", - [sym_string_lit] = "string_lit", [sym_quoted_template] = "quoted_template", + [sym_template_literal] = "template_literal", [sym_template_interpolation] = "template_interpolation", + [sym_template_directive] = "template_directive", [aux_sym_body_repeat1] = "body_repeat1", [aux_sym_block_repeat1] = "block_repeat1", [aux_sym_tuple_repeat1] = "tuple_repeat1", [aux_sym_object_repeat1] = "object_repeat1", [aux_sym_attr_splat_repeat1] = "attr_splat_repeat1", [aux_sym_full_splat_repeat1] = "full_splat_repeat1", - [aux_sym_string_lit_repeat1] = "string_lit_repeat1", [aux_sym_quoted_template_repeat1] = "quoted_template_repeat1", - [aux_sym_template_interpolation_repeat1] = "template_interpolation_repeat1", + [aux_sym_template_literal_repeat1] = "template_literal_repeat1", }; static const TSSymbol ts_symbol_map[] = { @@ -230,25 +242,29 @@ static const TSSymbol ts_symbol_map[] = { [anon_sym_BANG_EQ] = anon_sym_BANG_EQ, [anon_sym_AMP_AMP] = anon_sym_AMP_AMP, [anon_sym_PIPE_PIPE] = anon_sym_PIPE_PIPE, - [anon_sym_DQUOTE] = anon_sym_DQUOTE, - [anon_sym_DOLLAR_LBRACE] = anon_sym_DOLLAR_LBRACE, - [anon_sym_DOLLAR_LBRACE_TILDE] = anon_sym_DOLLAR_LBRACE_TILDE, - [anon_sym_TILDE_RBRACE] = anon_sym_TILDE_RBRACE, + [sym_strip_marker] = sym_strip_marker, [sym_comment] = sym_comment, - [sym__template_char] = sym__template_char, - [sym__template_char_in_interpolation] = sym__template_char_in_interpolation, - [sym_escape_sequence] = sym_escape_sequence, + [sym__quoted_template_start] = sym__quoted_template_start, + [sym__quoted_template_end] = sym__quoted_template_end, + [sym__template_literal_chunk] = sym__template_literal_chunk, + [sym__template_interpolation_start] = sym__template_interpolation_start, + [sym__template_interpolation_end] = sym__template_interpolation_end, [sym_config_file] = sym_config_file, [sym_body] = sym_body, [sym_attribute] = sym_attribute, [sym_block] = sym_block, + [sym__block_start] = sym__block_start, + [sym__block_end] = sym__block_end, [sym_expression] = sym_expression, - [sym_expr_term] = sym_expr_term, + [sym__expr_term] = sym__expr_term, [sym_literal_value] = sym_literal_value, [sym_bool_lit] = sym_bool_lit, + [sym_string_lit] = sym_string_lit, [sym_collection_value] = sym_collection_value, [sym_tuple] = sym_tuple, [sym_object] = sym_object, + [sym__object_start] = sym__object_start, + [sym__object_end] = sym__object_end, [sym_object_elem] = sym_object_elem, [sym_index] = sym_index, [sym_get_attr] = sym_get_attr, @@ -262,24 +278,26 @@ static const TSSymbol ts_symbol_map[] = { [sym_for_cond] = sym_for_cond, [sym_variable_expr] = sym_variable_expr, [sym_function_call] = sym_function_call, + [sym__function_call_start] = sym__function_call_start, + [sym__function_call_end] = sym__function_call_end, [sym_function_arguments] = sym_function_arguments, [sym_conditional] = sym_conditional, [sym_operation] = sym_operation, [sym_unary_operation] = sym_unary_operation, [sym_binary_operation] = sym_binary_operation, [sym_template_expr] = sym_template_expr, - [sym_string_lit] = sym_string_lit, [sym_quoted_template] = sym_quoted_template, + [sym_template_literal] = sym_template_literal, [sym_template_interpolation] = sym_template_interpolation, + [sym_template_directive] = sym_template_directive, [aux_sym_body_repeat1] = aux_sym_body_repeat1, [aux_sym_block_repeat1] = aux_sym_block_repeat1, [aux_sym_tuple_repeat1] = aux_sym_tuple_repeat1, [aux_sym_object_repeat1] = aux_sym_object_repeat1, [aux_sym_attr_splat_repeat1] = aux_sym_attr_splat_repeat1, [aux_sym_full_splat_repeat1] = aux_sym_full_splat_repeat1, - [aux_sym_string_lit_repeat1] = aux_sym_string_lit_repeat1, [aux_sym_quoted_template_repeat1] = aux_sym_quoted_template_repeat1, - [aux_sym_template_interpolation_repeat1] = aux_sym_template_interpolation_repeat1, + [aux_sym_template_literal_repeat1] = aux_sym_template_literal_repeat1, }; static const TSSymbolMetadata ts_symbol_metadata[] = { @@ -427,36 +445,32 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, - [anon_sym_DQUOTE] = { + [sym_strip_marker] = { .visible = true, - .named = false, - }, - [anon_sym_DOLLAR_LBRACE] = { - .visible = true, - .named = false, - }, - [anon_sym_DOLLAR_LBRACE_TILDE] = { - .visible = true, - .named = false, - }, - [anon_sym_TILDE_RBRACE] = { - .visible = true, - .named = false, + .named = true, }, [sym_comment] = { .visible = true, .named = true, }, - [sym__template_char] = { + [sym__quoted_template_start] = { .visible = false, .named = true, }, - [sym__template_char_in_interpolation] = { + [sym__quoted_template_end] = { .visible = false, .named = true, }, - [sym_escape_sequence] = { - .visible = true, + [sym__template_literal_chunk] = { + .visible = false, + .named = true, + }, + [sym__template_interpolation_start] = { + .visible = false, + .named = true, + }, + [sym__template_interpolation_end] = { + .visible = false, .named = true, }, [sym_config_file] = { @@ -475,12 +489,20 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [sym__block_start] = { + .visible = false, + .named = true, + }, + [sym__block_end] = { + .visible = false, + .named = true, + }, [sym_expression] = { .visible = true, .named = true, }, - [sym_expr_term] = { - .visible = true, + [sym__expr_term] = { + .visible = false, .named = true, }, [sym_literal_value] = { @@ -491,6 +513,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [sym_string_lit] = { + .visible = true, + .named = true, + }, [sym_collection_value] = { .visible = true, .named = true, @@ -503,6 +529,14 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [sym__object_start] = { + .visible = false, + .named = true, + }, + [sym__object_end] = { + .visible = false, + .named = true, + }, [sym_object_elem] = { .visible = true, .named = true, @@ -555,6 +589,14 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [sym__function_call_start] = { + .visible = false, + .named = true, + }, + [sym__function_call_end] = { + .visible = false, + .named = true, + }, [sym_function_arguments] = { .visible = true, .named = true, @@ -579,18 +621,22 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, - [sym_string_lit] = { - .visible = true, - .named = true, - }, [sym_quoted_template] = { .visible = true, .named = true, }, + [sym_template_literal] = { + .visible = true, + .named = true, + }, [sym_template_interpolation] = { .visible = true, .named = true, }, + [sym_template_directive] = { + .visible = true, + .named = true, + }, [aux_sym_body_repeat1] = { .visible = false, .named = false, @@ -615,15 +661,11 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = false, }, - [aux_sym_string_lit_repeat1] = { - .visible = false, - .named = false, - }, [aux_sym_quoted_template_repeat1] = { .visible = false, .named = false, }, - [aux_sym_template_interpolation_repeat1] = { + [aux_sym_template_literal_repeat1] = { .visible = false, .named = false, }, @@ -2202,137 +2244,133 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { eof = lexer->eof(lexer); switch (state) { case 0: - if (eof) ADVANCE(32); - if (lookahead == '!') ADVANCE(77); - if (lookahead == '"') ADVANCE(89); - if (lookahead == '#') ADVANCE(94); - if (lookahead == '$') ADVANCE(25); - if (lookahead == '%') ADVANCE(79); + if (eof) ADVANCE(30); + if (lookahead == '!') ADVANCE(75); + if (lookahead == '#') ADVANCE(89); + if (lookahead == '%') ADVANCE(77); if (lookahead == '&') ADVANCE(5); - if (lookahead == '(') ADVANCE(51); - if (lookahead == ')') ADVANCE(52); - if (lookahead == '*') ADVANCE(67); - if (lookahead == '+') ADVANCE(80); - if (lookahead == ',') ADVANCE(63); - if (lookahead == '-') ADVANCE(75); - if (lookahead == '.') ADVANCE(66); - if (lookahead == '/') ADVANCE(78); - if (lookahead == ':') ADVANCE(65); - if (lookahead == '<') ADVANCE(83); - if (lookahead == '=') ADVANCE(35); - if (lookahead == '>') ADVANCE(81); - if (lookahead == '?') ADVANCE(74); - if (lookahead == '[') ADVANCE(62); - if (lookahead == ']') ADVANCE(64); + if (lookahead == '(') ADVANCE(49); + if (lookahead == ')') ADVANCE(50); + if (lookahead == '*') ADVANCE(65); + if (lookahead == '+') ADVANCE(78); + if (lookahead == ',') ADVANCE(61); + if (lookahead == '-') ADVANCE(73); + if (lookahead == '.') ADVANCE(64); + if (lookahead == '/') ADVANCE(76); + if (lookahead == ':') ADVANCE(63); + if (lookahead == '<') ADVANCE(81); + if (lookahead == '=') ADVANCE(33); + if (lookahead == '>') ADVANCE(79); + if (lookahead == '?') ADVANCE(72); + if (lookahead == '[') ADVANCE(60); + if (lookahead == ']') ADVANCE(62); if (lookahead == 'f') ADVANCE(12); if (lookahead == 'i') ADVANCE(16); if (lookahead == 'n') ADVANCE(24); if (lookahead == 't') ADVANCE(21); - if (lookahead == '{') ADVANCE(36); - if (lookahead == '|') ADVANCE(26); - if (lookahead == '}') ADVANCE(37); - if (lookahead == '~') ADVANCE(27); + if (lookahead == '{') ADVANCE(34); + if (lookahead == '|') ADVANCE(25); + if (lookahead == '}') ADVANCE(35); + if (lookahead == '~') ADVANCE(87); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(0) - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(53); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(51); END_STATE(); case 1: if (lookahead == '!') ADVANCE(10); - if (lookahead == '#') ADVANCE(94); - if (lookahead == '%') ADVANCE(79); + if (lookahead == '#') ADVANCE(89); + if (lookahead == '%') ADVANCE(77); if (lookahead == '&') ADVANCE(5); - if (lookahead == '(') ADVANCE(51); - if (lookahead == '*') ADVANCE(67); - if (lookahead == '+') ADVANCE(80); - if (lookahead == '-') ADVANCE(75); - if (lookahead == '.') ADVANCE(66); - if (lookahead == '/') ADVANCE(78); - if (lookahead == ':') ADVANCE(65); - if (lookahead == '<') ADVANCE(83); - if (lookahead == '=') ADVANCE(34); - if (lookahead == '>') ADVANCE(81); - if (lookahead == '?') ADVANCE(74); - if (lookahead == '[') ADVANCE(62); - if (lookahead == ']') ADVANCE(64); + if (lookahead == '(') ADVANCE(49); + if (lookahead == '*') ADVANCE(65); + if (lookahead == '+') ADVANCE(78); + if (lookahead == '-') ADVANCE(73); + if (lookahead == '.') ADVANCE(64); + if (lookahead == '/') ADVANCE(76); + if (lookahead == ':') ADVANCE(63); + if (lookahead == '<') ADVANCE(81); + if (lookahead == '=') ADVANCE(32); + if (lookahead == '>') ADVANCE(79); + if (lookahead == '?') ADVANCE(72); + if (lookahead == '[') ADVANCE(60); + if (lookahead == ']') ADVANCE(62); if (lookahead == 'i') ADVANCE(15); - if (lookahead == '|') ADVANCE(26); - if (lookahead == '}') ADVANCE(37); + if (lookahead == '|') ADVANCE(25); + if (lookahead == '}') ADVANCE(35); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(1) END_STATE(); case 2: - if (lookahead == '!') ADVANCE(76); - if (lookahead == '"') ADVANCE(89); - if (lookahead == '#') ADVANCE(94); - if (lookahead == '(') ADVANCE(51); - if (lookahead == ')') ADVANCE(52); - if (lookahead == '*') ADVANCE(67); - if (lookahead == '-') ADVANCE(75); + if (lookahead == '!') ADVANCE(74); + if (lookahead == '#') ADVANCE(89); + if (lookahead == '(') ADVANCE(49); + if (lookahead == ')') ADVANCE(50); + if (lookahead == '*') ADVANCE(65); + if (lookahead == '-') ADVANCE(73); if (lookahead == '/') ADVANCE(6); if (lookahead == '=') ADVANCE(11); - if (lookahead == '?') ADVANCE(74); - if (lookahead == '[') ADVANCE(62); - if (lookahead == 'f') ADVANCE(39); - if (lookahead == 'n') ADVANCE(49); - if (lookahead == 't') ADVANCE(46); - if (lookahead == '{') ADVANCE(36); + if (lookahead == '?') ADVANCE(72); + if (lookahead == '[') ADVANCE(60); + if (lookahead == 'f') ADVANCE(37); + if (lookahead == 'n') ADVANCE(47); + if (lookahead == 't') ADVANCE(44); + if (lookahead == '{') ADVANCE(34); + if (lookahead == '~') ADVANCE(87); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(2) - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(53); - if (sym_identifier_character_set_1(lookahead)) ADVANCE(50); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(51); + if (sym_identifier_character_set_1(lookahead)) ADVANCE(48); END_STATE(); case 3: - if (lookahead == '!') ADVANCE(76); - if (lookahead == '"') ADVANCE(89); - if (lookahead == '#') ADVANCE(94); - if (lookahead == '(') ADVANCE(51); - if (lookahead == '-') ADVANCE(75); + if (lookahead == '!') ADVANCE(74); + if (lookahead == '#') ADVANCE(89); + if (lookahead == '(') ADVANCE(49); + if (lookahead == '-') ADVANCE(73); if (lookahead == '/') ADVANCE(6); - if (lookahead == ':') ADVANCE(65); - if (lookahead == '=') ADVANCE(33); - if (lookahead == '?') ADVANCE(74); - if (lookahead == '[') ADVANCE(62); - if (lookahead == ']') ADVANCE(64); - if (lookahead == 'f') ADVANCE(38); - if (lookahead == 'n') ADVANCE(49); - if (lookahead == 't') ADVANCE(46); - if (lookahead == '{') ADVANCE(36); - if (lookahead == '}') ADVANCE(37); + if (lookahead == ':') ADVANCE(63); + if (lookahead == '=') ADVANCE(31); + if (lookahead == '?') ADVANCE(72); + if (lookahead == '[') ADVANCE(60); + if (lookahead == ']') ADVANCE(62); + if (lookahead == 'f') ADVANCE(36); + if (lookahead == 'n') ADVANCE(47); + if (lookahead == 't') ADVANCE(44); + if (lookahead == '{') ADVANCE(34); + if (lookahead == '}') ADVANCE(35); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(3) - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(53); - if (sym_identifier_character_set_1(lookahead)) ADVANCE(50); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(51); + if (sym_identifier_character_set_1(lookahead)) ADVANCE(48); END_STATE(); case 4: - if (lookahead == '"') ADVANCE(89); - if (lookahead == '#') ADVANCE(94); + if (lookahead == '#') ADVANCE(89); if (lookahead == '/') ADVANCE(6); - if (lookahead == '=') ADVANCE(33); - if (lookahead == '{') ADVANCE(36); + if (lookahead == '=') ADVANCE(31); + if (lookahead == '{') ADVANCE(34); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(4) - if (sym_identifier_character_set_1(lookahead)) ADVANCE(50); + if (sym_identifier_character_set_1(lookahead)) ADVANCE(48); END_STATE(); case 5: - if (lookahead == '&') ADVANCE(87); + if (lookahead == '&') ADVANCE(85); END_STATE(); case 6: if (lookahead == '*') ADVANCE(8); - if (lookahead == '/') ADVANCE(94); + if (lookahead == '/') ADVANCE(89); END_STATE(); case 7: if (lookahead == '*') ADVANCE(7); - if (lookahead == '/') ADVANCE(93); + if (lookahead == '/') ADVANCE(88); if (lookahead != 0) ADVANCE(8); END_STATE(); case 8: @@ -2340,42 +2378,42 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead != 0) ADVANCE(8); END_STATE(); case 9: - if (lookahead == '.') ADVANCE(73); + if (lookahead == '.') ADVANCE(71); END_STATE(); case 10: - if (lookahead == '=') ADVANCE(86); + if (lookahead == '=') ADVANCE(84); END_STATE(); case 11: - if (lookahead == '>') ADVANCE(68); + if (lookahead == '>') ADVANCE(66); END_STATE(); case 12: if (lookahead == 'a') ADVANCE(17); if (lookahead == 'o') ADVANCE(20); END_STATE(); case 13: - if (lookahead == 'e') ADVANCE(56); + if (lookahead == 'e') ADVANCE(54); END_STATE(); case 14: - if (lookahead == 'e') ADVANCE(58); + if (lookahead == 'e') ADVANCE(56); END_STATE(); case 15: - if (lookahead == 'f') ADVANCE(72); + if (lookahead == 'f') ADVANCE(70); END_STATE(); case 16: - if (lookahead == 'f') ADVANCE(72); - if (lookahead == 'n') ADVANCE(71); + if (lookahead == 'f') ADVANCE(70); + if (lookahead == 'n') ADVANCE(69); END_STATE(); case 17: if (lookahead == 'l') ADVANCE(22); END_STATE(); case 18: - if (lookahead == 'l') ADVANCE(60); + if (lookahead == 'l') ADVANCE(58); END_STATE(); case 19: if (lookahead == 'l') ADVANCE(18); END_STATE(); case 20: - if (lookahead == 'r') ADVANCE(69); + if (lookahead == 'r') ADVANCE(67); END_STATE(); case 21: if (lookahead == 'r') ADVANCE(23); @@ -2390,292 +2428,276 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == 'u') ADVANCE(19); END_STATE(); case 25: - if (lookahead == '{') ADVANCE(90); + if (lookahead == '|') ADVANCE(86); END_STATE(); case 26: - if (lookahead == '|') ADVANCE(88); + if (lookahead == '+' || + lookahead == '-') ADVANCE(28); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(53); END_STATE(); case 27: - if (lookahead == '}') ADVANCE(92); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(52); END_STATE(); case 28: - if (lookahead == '+' || - lookahead == '-') ADVANCE(30); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(55); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(53); END_STATE(); case 29: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(54); - END_STATE(); - case 30: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(55); - END_STATE(); - case 31: - if (eof) ADVANCE(32); + if (eof) ADVANCE(30); if (lookahead == '!') ADVANCE(10); - if (lookahead == '"') ADVANCE(89); - if (lookahead == '#') ADVANCE(94); - if (lookahead == '%') ADVANCE(79); + if (lookahead == '#') ADVANCE(89); + if (lookahead == '%') ADVANCE(77); if (lookahead == '&') ADVANCE(5); - if (lookahead == '(') ADVANCE(51); - if (lookahead == ')') ADVANCE(52); - if (lookahead == '*') ADVANCE(67); - if (lookahead == '+') ADVANCE(80); - if (lookahead == ',') ADVANCE(63); - if (lookahead == '-') ADVANCE(75); - if (lookahead == '.') ADVANCE(66); - if (lookahead == '/') ADVANCE(78); - if (lookahead == ':') ADVANCE(65); - if (lookahead == '<') ADVANCE(83); - if (lookahead == '=') ADVANCE(35); - if (lookahead == '>') ADVANCE(81); - if (lookahead == '?') ADVANCE(74); - if (lookahead == '[') ADVANCE(62); - if (lookahead == ']') ADVANCE(64); - if (lookahead == '{') ADVANCE(36); - if (lookahead == '|') ADVANCE(26); - if (lookahead == '}') ADVANCE(37); + if (lookahead == '(') ADVANCE(49); + if (lookahead == ')') ADVANCE(50); + if (lookahead == '*') ADVANCE(65); + if (lookahead == '+') ADVANCE(78); + if (lookahead == ',') ADVANCE(61); + if (lookahead == '-') ADVANCE(73); + if (lookahead == '.') ADVANCE(64); + if (lookahead == '/') ADVANCE(76); + if (lookahead == ':') ADVANCE(63); + if (lookahead == '<') ADVANCE(81); + if (lookahead == '=') ADVANCE(33); + if (lookahead == '>') ADVANCE(79); + if (lookahead == '?') ADVANCE(72); + if (lookahead == '[') ADVANCE(60); + if (lookahead == ']') ADVANCE(62); + if (lookahead == '{') ADVANCE(34); + if (lookahead == '|') ADVANCE(25); + if (lookahead == '}') ADVANCE(35); + if (lookahead == '~') ADVANCE(87); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') SKIP(31) - if (sym_identifier_character_set_1(lookahead)) ADVANCE(50); + lookahead == ' ') SKIP(29) + if (sym_identifier_character_set_1(lookahead)) ADVANCE(48); + END_STATE(); + case 30: + ACCEPT_TOKEN(ts_builtin_sym_end); + END_STATE(); + case 31: + ACCEPT_TOKEN(anon_sym_EQ); END_STATE(); case 32: - ACCEPT_TOKEN(ts_builtin_sym_end); + ACCEPT_TOKEN(anon_sym_EQ); + if (lookahead == '=') ADVANCE(83); END_STATE(); case 33: ACCEPT_TOKEN(anon_sym_EQ); + if (lookahead == '=') ADVANCE(83); + if (lookahead == '>') ADVANCE(66); END_STATE(); case 34: - ACCEPT_TOKEN(anon_sym_EQ); - if (lookahead == '=') ADVANCE(85); - END_STATE(); - case 35: - ACCEPT_TOKEN(anon_sym_EQ); - if (lookahead == '=') ADVANCE(85); - if (lookahead == '>') ADVANCE(68); - END_STATE(); - case 36: ACCEPT_TOKEN(anon_sym_LBRACE); END_STATE(); - case 37: + case 35: ACCEPT_TOKEN(anon_sym_RBRACE); END_STATE(); + case 36: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'a') ADVANCE(40); + if (lookahead == 'o') ADVANCE(43); + if (sym_identifier_character_set_2(lookahead)) ADVANCE(48); + END_STATE(); + case 37: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'a') ADVANCE(40); + if (sym_identifier_character_set_2(lookahead)) ADVANCE(48); + END_STATE(); case 38: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'a') ADVANCE(42); - if (lookahead == 'o') ADVANCE(45); - if (sym_identifier_character_set_2(lookahead)) ADVANCE(50); + if (lookahead == 'e') ADVANCE(55); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); END_STATE(); case 39: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'a') ADVANCE(42); - if (sym_identifier_character_set_2(lookahead)) ADVANCE(50); + if (lookahead == 'e') ADVANCE(57); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); END_STATE(); case 40: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(57); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + if (lookahead == 'l') ADVANCE(45); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); END_STATE(); case 41: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(59); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + if (lookahead == 'l') ADVANCE(59); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); END_STATE(); case 42: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(47); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + if (lookahead == 'l') ADVANCE(41); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); END_STATE(); case 43: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(61); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + if (lookahead == 'r') ADVANCE(68); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); END_STATE(); case 44: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(43); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + if (lookahead == 'r') ADVANCE(46); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); END_STATE(); case 45: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'r') ADVANCE(70); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + if (lookahead == 's') ADVANCE(39); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); END_STATE(); case 46: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'r') ADVANCE(48); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + if (lookahead == 'u') ADVANCE(38); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); END_STATE(); case 47: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 's') ADVANCE(41); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + if (lookahead == 'u') ADVANCE(42); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); END_STATE(); case 48: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'u') ADVANCE(40); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); END_STATE(); case 49: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'u') ADVANCE(44); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); - END_STATE(); - case 50: - ACCEPT_TOKEN(sym_identifier); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); - END_STATE(); - case 51: ACCEPT_TOKEN(anon_sym_LPAREN); END_STATE(); - case 52: + case 50: ACCEPT_TOKEN(anon_sym_RPAREN); END_STATE(); + case 51: + ACCEPT_TOKEN(sym_numeric_lit); + if (lookahead == '.') ADVANCE(27); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(51); + END_STATE(); + case 52: + ACCEPT_TOKEN(sym_numeric_lit); + if (lookahead == 'E' || + lookahead == 'e') ADVANCE(26); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(52); + END_STATE(); case 53: ACCEPT_TOKEN(sym_numeric_lit); - if (lookahead == '.') ADVANCE(29); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(53); END_STATE(); case 54: - ACCEPT_TOKEN(sym_numeric_lit); - if (lookahead == 'E' || - lookahead == 'e') ADVANCE(28); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(54); + ACCEPT_TOKEN(anon_sym_true); END_STATE(); case 55: - ACCEPT_TOKEN(sym_numeric_lit); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(55); + ACCEPT_TOKEN(anon_sym_true); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); END_STATE(); case 56: - ACCEPT_TOKEN(anon_sym_true); + ACCEPT_TOKEN(anon_sym_false); END_STATE(); case 57: - ACCEPT_TOKEN(anon_sym_true); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + ACCEPT_TOKEN(anon_sym_false); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); END_STATE(); case 58: - ACCEPT_TOKEN(anon_sym_false); + ACCEPT_TOKEN(sym_null_lit); END_STATE(); case 59: - ACCEPT_TOKEN(anon_sym_false); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + ACCEPT_TOKEN(sym_null_lit); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); END_STATE(); case 60: - ACCEPT_TOKEN(sym_null_lit); - END_STATE(); - case 61: - ACCEPT_TOKEN(sym_null_lit); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); - END_STATE(); - case 62: ACCEPT_TOKEN(anon_sym_LBRACK); END_STATE(); - case 63: + case 61: ACCEPT_TOKEN(anon_sym_COMMA); END_STATE(); - case 64: + case 62: ACCEPT_TOKEN(anon_sym_RBRACK); END_STATE(); - case 65: + case 63: ACCEPT_TOKEN(anon_sym_COLON); END_STATE(); - case 66: + case 64: ACCEPT_TOKEN(anon_sym_DOT); if (lookahead == '.') ADVANCE(9); END_STATE(); - case 67: + case 65: ACCEPT_TOKEN(anon_sym_STAR); END_STATE(); - case 68: + case 66: ACCEPT_TOKEN(anon_sym_EQ_GT); END_STATE(); + case 67: + ACCEPT_TOKEN(anon_sym_for); + END_STATE(); + case 68: + ACCEPT_TOKEN(anon_sym_for); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(48); + END_STATE(); case 69: - ACCEPT_TOKEN(anon_sym_for); - END_STATE(); - case 70: - ACCEPT_TOKEN(anon_sym_for); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); - END_STATE(); - case 71: ACCEPT_TOKEN(anon_sym_in); END_STATE(); - case 72: + case 70: ACCEPT_TOKEN(anon_sym_if); END_STATE(); - case 73: + case 71: ACCEPT_TOKEN(sym_ellipsis); END_STATE(); - case 74: + case 72: ACCEPT_TOKEN(anon_sym_QMARK); END_STATE(); - case 75: + case 73: ACCEPT_TOKEN(anon_sym_DASH); END_STATE(); + case 74: + ACCEPT_TOKEN(anon_sym_BANG); + END_STATE(); + case 75: + ACCEPT_TOKEN(anon_sym_BANG); + if (lookahead == '=') ADVANCE(84); + END_STATE(); case 76: - ACCEPT_TOKEN(anon_sym_BANG); - END_STATE(); - case 77: - ACCEPT_TOKEN(anon_sym_BANG); - if (lookahead == '=') ADVANCE(86); - END_STATE(); - case 78: ACCEPT_TOKEN(anon_sym_SLASH); if (lookahead == '*') ADVANCE(8); - if (lookahead == '/') ADVANCE(94); + if (lookahead == '/') ADVANCE(89); END_STATE(); - case 79: + case 77: ACCEPT_TOKEN(anon_sym_PERCENT); END_STATE(); - case 80: + case 78: ACCEPT_TOKEN(anon_sym_PLUS); END_STATE(); - case 81: + case 79: ACCEPT_TOKEN(anon_sym_GT); + if (lookahead == '=') ADVANCE(80); + END_STATE(); + case 80: + ACCEPT_TOKEN(anon_sym_GT_EQ); + END_STATE(); + case 81: + ACCEPT_TOKEN(anon_sym_LT); if (lookahead == '=') ADVANCE(82); END_STATE(); case 82: - ACCEPT_TOKEN(anon_sym_GT_EQ); - END_STATE(); - case 83: - ACCEPT_TOKEN(anon_sym_LT); - if (lookahead == '=') ADVANCE(84); - END_STATE(); - case 84: ACCEPT_TOKEN(anon_sym_LT_EQ); END_STATE(); - case 85: + case 83: ACCEPT_TOKEN(anon_sym_EQ_EQ); END_STATE(); - case 86: + case 84: ACCEPT_TOKEN(anon_sym_BANG_EQ); END_STATE(); - case 87: + case 85: ACCEPT_TOKEN(anon_sym_AMP_AMP); END_STATE(); - case 88: + case 86: ACCEPT_TOKEN(anon_sym_PIPE_PIPE); END_STATE(); - case 89: - ACCEPT_TOKEN(anon_sym_DQUOTE); + case 87: + ACCEPT_TOKEN(sym_strip_marker); END_STATE(); - case 90: - ACCEPT_TOKEN(anon_sym_DOLLAR_LBRACE); - if (lookahead == '~') ADVANCE(91); - END_STATE(); - case 91: - ACCEPT_TOKEN(anon_sym_DOLLAR_LBRACE_TILDE); - END_STATE(); - case 92: - ACCEPT_TOKEN(anon_sym_TILDE_RBRACE); - END_STATE(); - case 93: + case 88: ACCEPT_TOKEN(sym_comment); END_STATE(); - case 94: + case 89: ACCEPT_TOKEN(sym_comment); if (lookahead != 0 && - lookahead != '\n') ADVANCE(94); + lookahead != '\n') ADVANCE(89); END_STATE(); default: return false; @@ -2684,253 +2706,363 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { static const TSLexMode ts_lex_modes[STATE_COUNT] = { [0] = {.lex_state = 0, .external_lex_state = 1}, - [1] = {.lex_state = 31}, - [2] = {.lex_state = 3}, - [3] = {.lex_state = 3}, - [4] = {.lex_state = 3}, - [5] = {.lex_state = 3}, - [6] = {.lex_state = 31}, - [7] = {.lex_state = 2}, - [8] = {.lex_state = 2}, - [9] = {.lex_state = 2}, - [10] = {.lex_state = 2}, - [11] = {.lex_state = 2}, - [12] = {.lex_state = 2}, - [13] = {.lex_state = 2}, - [14] = {.lex_state = 2}, - [15] = {.lex_state = 2}, - [16] = {.lex_state = 2}, - [17] = {.lex_state = 2}, - [18] = {.lex_state = 2}, - [19] = {.lex_state = 2}, - [20] = {.lex_state = 2}, - [21] = {.lex_state = 2}, - [22] = {.lex_state = 2}, - [23] = {.lex_state = 2}, - [24] = {.lex_state = 31}, - [25] = {.lex_state = 2}, - [26] = {.lex_state = 2}, - [27] = {.lex_state = 2}, - [28] = {.lex_state = 2}, - [29] = {.lex_state = 31}, - [30] = {.lex_state = 2}, - [31] = {.lex_state = 2}, - [32] = {.lex_state = 2}, - [33] = {.lex_state = 2}, - [34] = {.lex_state = 2}, - [35] = {.lex_state = 2}, - [36] = {.lex_state = 31}, - [37] = {.lex_state = 31}, - [38] = {.lex_state = 31}, - [39] = {.lex_state = 31}, - [40] = {.lex_state = 31}, - [41] = {.lex_state = 31}, - [42] = {.lex_state = 31}, - [43] = {.lex_state = 31}, - [44] = {.lex_state = 31}, - [45] = {.lex_state = 31}, - [46] = {.lex_state = 31}, - [47] = {.lex_state = 31}, - [48] = {.lex_state = 31}, - [49] = {.lex_state = 31}, - [50] = {.lex_state = 31}, - [51] = {.lex_state = 31}, - [52] = {.lex_state = 31}, - [53] = {.lex_state = 31}, - [54] = {.lex_state = 31}, - [55] = {.lex_state = 31}, - [56] = {.lex_state = 31}, - [57] = {.lex_state = 31}, - [58] = {.lex_state = 31}, - [59] = {.lex_state = 31}, - [60] = {.lex_state = 31}, - [61] = {.lex_state = 31}, - [62] = {.lex_state = 31}, - [63] = {.lex_state = 31}, - [64] = {.lex_state = 31}, - [65] = {.lex_state = 31}, - [66] = {.lex_state = 31}, - [67] = {.lex_state = 1}, - [68] = {.lex_state = 1}, - [69] = {.lex_state = 1}, - [70] = {.lex_state = 1}, - [71] = {.lex_state = 2}, - [72] = {.lex_state = 1}, - [73] = {.lex_state = 1}, - [74] = {.lex_state = 2}, - [75] = {.lex_state = 2}, - [76] = {.lex_state = 2}, - [77] = {.lex_state = 1}, - [78] = {.lex_state = 2}, - [79] = {.lex_state = 2}, - [80] = {.lex_state = 2}, - [81] = {.lex_state = 2}, - [82] = {.lex_state = 2}, - [83] = {.lex_state = 2}, - [84] = {.lex_state = 2}, - [85] = {.lex_state = 2}, - [86] = {.lex_state = 2}, - [87] = {.lex_state = 2}, - [88] = {.lex_state = 1}, - [89] = {.lex_state = 1}, - [90] = {.lex_state = 1}, - [91] = {.lex_state = 1}, - [92] = {.lex_state = 1}, - [93] = {.lex_state = 1}, - [94] = {.lex_state = 1}, - [95] = {.lex_state = 1}, - [96] = {.lex_state = 1}, - [97] = {.lex_state = 1}, - [98] = {.lex_state = 1}, - [99] = {.lex_state = 1}, - [100] = {.lex_state = 1}, - [101] = {.lex_state = 1}, + [1] = {.lex_state = 29}, + [2] = {.lex_state = 3, .external_lex_state = 2}, + [3] = {.lex_state = 3, .external_lex_state = 2}, + [4] = {.lex_state = 3, .external_lex_state = 2}, + [5] = {.lex_state = 3, .external_lex_state = 2}, + [6] = {.lex_state = 2, .external_lex_state = 2}, + [7] = {.lex_state = 3, .external_lex_state = 2}, + [8] = {.lex_state = 2, .external_lex_state = 2}, + [9] = {.lex_state = 3, .external_lex_state = 2}, + [10] = {.lex_state = 2, .external_lex_state = 2}, + [11] = {.lex_state = 2, .external_lex_state = 2}, + [12] = {.lex_state = 2, .external_lex_state = 2}, + [13] = {.lex_state = 2, .external_lex_state = 2}, + [14] = {.lex_state = 2, .external_lex_state = 2}, + [15] = {.lex_state = 2, .external_lex_state = 2}, + [16] = {.lex_state = 2, .external_lex_state = 2}, + [17] = {.lex_state = 2, .external_lex_state = 2}, + [18] = {.lex_state = 2, .external_lex_state = 2}, + [19] = {.lex_state = 2, .external_lex_state = 2}, + [20] = {.lex_state = 2, .external_lex_state = 2}, + [21] = {.lex_state = 2, .external_lex_state = 2}, + [22] = {.lex_state = 29}, + [23] = {.lex_state = 2, .external_lex_state = 2}, + [24] = {.lex_state = 2, .external_lex_state = 2}, + [25] = {.lex_state = 2, .external_lex_state = 2}, + [26] = {.lex_state = 2, .external_lex_state = 2}, + [27] = {.lex_state = 2, .external_lex_state = 2}, + [28] = {.lex_state = 2, .external_lex_state = 2}, + [29] = {.lex_state = 2, .external_lex_state = 2}, + [30] = {.lex_state = 2, .external_lex_state = 2}, + [31] = {.lex_state = 2, .external_lex_state = 2}, + [32] = {.lex_state = 2, .external_lex_state = 2}, + [33] = {.lex_state = 2, .external_lex_state = 2}, + [34] = {.lex_state = 2, .external_lex_state = 2}, + [35] = {.lex_state = 2, .external_lex_state = 2}, + [36] = {.lex_state = 2, .external_lex_state = 2}, + [37] = {.lex_state = 2, .external_lex_state = 2}, + [38] = {.lex_state = 2, .external_lex_state = 2}, + [39] = {.lex_state = 2, .external_lex_state = 2}, + [40] = {.lex_state = 2, .external_lex_state = 2}, + [41] = {.lex_state = 2, .external_lex_state = 2}, + [42] = {.lex_state = 2, .external_lex_state = 2}, + [43] = {.lex_state = 2, .external_lex_state = 2}, + [44] = {.lex_state = 2, .external_lex_state = 2}, + [45] = {.lex_state = 2, .external_lex_state = 2}, + [46] = {.lex_state = 2, .external_lex_state = 2}, + [47] = {.lex_state = 29}, + [48] = {.lex_state = 29}, + [49] = {.lex_state = 29}, + [50] = {.lex_state = 29}, + [51] = {.lex_state = 29}, + [52] = {.lex_state = 29}, + [53] = {.lex_state = 29}, + [54] = {.lex_state = 29}, + [55] = {.lex_state = 29}, + [56] = {.lex_state = 29}, + [57] = {.lex_state = 29}, + [58] = {.lex_state = 29}, + [59] = {.lex_state = 29}, + [60] = {.lex_state = 29}, + [61] = {.lex_state = 29}, + [62] = {.lex_state = 29}, + [63] = {.lex_state = 29}, + [64] = {.lex_state = 29}, + [65] = {.lex_state = 29}, + [66] = {.lex_state = 29}, + [67] = {.lex_state = 29}, + [68] = {.lex_state = 29}, + [69] = {.lex_state = 29}, + [70] = {.lex_state = 29}, + [71] = {.lex_state = 29}, + [72] = {.lex_state = 29}, + [73] = {.lex_state = 29}, + [74] = {.lex_state = 29}, + [75] = {.lex_state = 29}, + [76] = {.lex_state = 29}, + [77] = {.lex_state = 29}, + [78] = {.lex_state = 29}, + [79] = {.lex_state = 29}, + [80] = {.lex_state = 1}, + [81] = {.lex_state = 2, .external_lex_state = 2}, + [82] = {.lex_state = 2, .external_lex_state = 2}, + [83] = {.lex_state = 2, .external_lex_state = 2}, + [84] = {.lex_state = 2, .external_lex_state = 2}, + [85] = {.lex_state = 2, .external_lex_state = 2}, + [86] = {.lex_state = 2, .external_lex_state = 2}, + [87] = {.lex_state = 2, .external_lex_state = 2}, + [88] = {.lex_state = 2, .external_lex_state = 2}, + [89] = {.lex_state = 2, .external_lex_state = 2}, + [90] = {.lex_state = 2, .external_lex_state = 2}, + [91] = {.lex_state = 2, .external_lex_state = 2}, + [92] = {.lex_state = 2, .external_lex_state = 2}, + [93] = {.lex_state = 2, .external_lex_state = 2}, + [94] = {.lex_state = 2, .external_lex_state = 2}, + [95] = {.lex_state = 2, .external_lex_state = 2}, + [96] = {.lex_state = 2, .external_lex_state = 2}, + [97] = {.lex_state = 2, .external_lex_state = 2}, + [98] = {.lex_state = 2, .external_lex_state = 2}, + [99] = {.lex_state = 2, .external_lex_state = 2}, + [100] = {.lex_state = 2, .external_lex_state = 2}, + [101] = {.lex_state = 2, .external_lex_state = 2}, [102] = {.lex_state = 1}, [103] = {.lex_state = 1}, [104] = {.lex_state = 1}, - [105] = {.lex_state = 1}, + [105] = {.lex_state = 29, .external_lex_state = 3}, [106] = {.lex_state = 1}, [107] = {.lex_state = 1}, [108] = {.lex_state = 1}, [109] = {.lex_state = 1}, - [110] = {.lex_state = 1}, - [111] = {.lex_state = 1}, - [112] = {.lex_state = 1}, + [110] = {.lex_state = 29, .external_lex_state = 3}, + [111] = {.lex_state = 29, .external_lex_state = 3}, + [112] = {.lex_state = 29, .external_lex_state = 3}, [113] = {.lex_state = 1}, [114] = {.lex_state = 1}, [115] = {.lex_state = 1}, - [116] = {.lex_state = 31}, - [117] = {.lex_state = 31}, - [118] = {.lex_state = 31}, - [119] = {.lex_state = 31}, - [120] = {.lex_state = 31}, - [121] = {.lex_state = 31}, - [122] = {.lex_state = 31}, - [123] = {.lex_state = 0}, - [124] = {.lex_state = 0}, - [125] = {.lex_state = 0}, - [126] = {.lex_state = 0}, - [127] = {.lex_state = 0}, - [128] = {.lex_state = 0}, - [129] = {.lex_state = 0}, - [130] = {.lex_state = 31}, - [131] = {.lex_state = 31}, - [132] = {.lex_state = 2}, - [133] = {.lex_state = 2}, - [134] = {.lex_state = 31}, - [135] = {.lex_state = 0, .external_lex_state = 2}, - [136] = {.lex_state = 0, .external_lex_state = 2}, - [137] = {.lex_state = 0, .external_lex_state = 2}, - [138] = {.lex_state = 0, .external_lex_state = 2}, - [139] = {.lex_state = 0, .external_lex_state = 2}, - [140] = {.lex_state = 31}, - [141] = {.lex_state = 31}, - [142] = {.lex_state = 4}, - [143] = {.lex_state = 31}, - [144] = {.lex_state = 31}, - [145] = {.lex_state = 0}, - [146] = {.lex_state = 0, .external_lex_state = 3}, - [147] = {.lex_state = 0}, - [148] = {.lex_state = 0}, - [149] = {.lex_state = 31}, - [150] = {.lex_state = 0}, - [151] = {.lex_state = 0, .external_lex_state = 3}, - [152] = {.lex_state = 0}, - [153] = {.lex_state = 0}, - [154] = {.lex_state = 0}, - [155] = {.lex_state = 31}, - [156] = {.lex_state = 0}, - [157] = {.lex_state = 0, .external_lex_state = 2}, - [158] = {.lex_state = 0, .external_lex_state = 2}, - [159] = {.lex_state = 0, .external_lex_state = 3}, - [160] = {.lex_state = 0, .external_lex_state = 2}, - [161] = {.lex_state = 0, .external_lex_state = 2}, - [162] = {.lex_state = 0}, - [163] = {.lex_state = 0}, - [164] = {.lex_state = 31}, - [165] = {.lex_state = 0}, - [166] = {.lex_state = 0}, - [167] = {.lex_state = 0}, - [168] = {.lex_state = 0, .external_lex_state = 2}, - [169] = {.lex_state = 31}, - [170] = {.lex_state = 0}, - [171] = {.lex_state = 31}, - [172] = {.lex_state = 0}, - [173] = {.lex_state = 0}, - [174] = {.lex_state = 0}, - [175] = {.lex_state = 0}, - [176] = {.lex_state = 31}, + [116] = {.lex_state = 1}, + [117] = {.lex_state = 1}, + [118] = {.lex_state = 29, .external_lex_state = 3}, + [119] = {.lex_state = 1}, + [120] = {.lex_state = 1}, + [121] = {.lex_state = 29, .external_lex_state = 3}, + [122] = {.lex_state = 1}, + [123] = {.lex_state = 1}, + [124] = {.lex_state = 29, .external_lex_state = 3}, + [125] = {.lex_state = 1}, + [126] = {.lex_state = 1}, + [127] = {.lex_state = 1}, + [128] = {.lex_state = 1}, + [129] = {.lex_state = 1}, + [130] = {.lex_state = 1}, + [131] = {.lex_state = 1}, + [132] = {.lex_state = 1}, + [133] = {.lex_state = 1}, + [134] = {.lex_state = 1}, + [135] = {.lex_state = 29, .external_lex_state = 3}, + [136] = {.lex_state = 1}, + [137] = {.lex_state = 1}, + [138] = {.lex_state = 1}, + [139] = {.lex_state = 1}, + [140] = {.lex_state = 1}, + [141] = {.lex_state = 1}, + [142] = {.lex_state = 1}, + [143] = {.lex_state = 1}, + [144] = {.lex_state = 29, .external_lex_state = 3}, + [145] = {.lex_state = 29}, + [146] = {.lex_state = 29, .external_lex_state = 3}, + [147] = {.lex_state = 29}, + [148] = {.lex_state = 29}, + [149] = {.lex_state = 29, .external_lex_state = 3}, + [150] = {.lex_state = 29, .external_lex_state = 3}, + [151] = {.lex_state = 29}, + [152] = {.lex_state = 29}, + [153] = {.lex_state = 29, .external_lex_state = 3}, + [154] = {.lex_state = 29, .external_lex_state = 3}, + [155] = {.lex_state = 29}, + [156] = {.lex_state = 29, .external_lex_state = 3}, + [157] = {.lex_state = 29}, + [158] = {.lex_state = 29, .external_lex_state = 3}, + [159] = {.lex_state = 29, .external_lex_state = 3}, + [160] = {.lex_state = 29, .external_lex_state = 3}, + [161] = {.lex_state = 29, .external_lex_state = 3}, + [162] = {.lex_state = 29, .external_lex_state = 3}, + [163] = {.lex_state = 29, .external_lex_state = 3}, + [164] = {.lex_state = 29, .external_lex_state = 3}, + [165] = {.lex_state = 29, .external_lex_state = 3}, + [166] = {.lex_state = 29, .external_lex_state = 3}, + [167] = {.lex_state = 29, .external_lex_state = 3}, + [168] = {.lex_state = 29, .external_lex_state = 3}, + [169] = {.lex_state = 29, .external_lex_state = 3}, + [170] = {.lex_state = 29, .external_lex_state = 3}, + [171] = {.lex_state = 29, .external_lex_state = 3}, + [172] = {.lex_state = 29, .external_lex_state = 3}, + [173] = {.lex_state = 29, .external_lex_state = 3}, + [174] = {.lex_state = 29, .external_lex_state = 3}, + [175] = {.lex_state = 29, .external_lex_state = 3}, + [176] = {.lex_state = 29, .external_lex_state = 3}, [177] = {.lex_state = 0}, - [178] = {.lex_state = 31}, + [178] = {.lex_state = 0}, [179] = {.lex_state = 0}, [180] = {.lex_state = 0}, [181] = {.lex_state = 0}, - [182] = {.lex_state = 3}, - [183] = {.lex_state = 31}, - [184] = {.lex_state = 0}, - [185] = {.lex_state = 0}, - [186] = {.lex_state = 0}, - [187] = {.lex_state = 31}, - [188] = {.lex_state = 0}, - [189] = {.lex_state = 2}, - [190] = {.lex_state = 2}, - [191] = {.lex_state = 0}, - [192] = {.lex_state = 0}, - [193] = {.lex_state = 0}, - [194] = {.lex_state = 0}, - [195] = {.lex_state = 0}, - [196] = {.lex_state = 0}, - [197] = {.lex_state = 0}, - [198] = {.lex_state = 0}, - [199] = {.lex_state = 31}, - [200] = {.lex_state = 31}, - [201] = {.lex_state = 0}, - [202] = {.lex_state = 0}, - [203] = {.lex_state = 0}, - [204] = {.lex_state = 0}, - [205] = {.lex_state = 31}, + [182] = {.lex_state = 0}, + [183] = {.lex_state = 0}, + [184] = {.lex_state = 2, .external_lex_state = 2}, + [185] = {.lex_state = 29}, + [186] = {.lex_state = 29}, + [187] = {.lex_state = 2, .external_lex_state = 2}, + [188] = {.lex_state = 29}, + [189] = {.lex_state = 0, .external_lex_state = 3}, + [190] = {.lex_state = 0, .external_lex_state = 3}, + [191] = {.lex_state = 0, .external_lex_state = 3}, + [192] = {.lex_state = 0, .external_lex_state = 3}, + [193] = {.lex_state = 0, .external_lex_state = 3}, + [194] = {.lex_state = 0, .external_lex_state = 3}, + [195] = {.lex_state = 0, .external_lex_state = 3}, + [196] = {.lex_state = 0, .external_lex_state = 4}, + [197] = {.lex_state = 0, .external_lex_state = 4}, + [198] = {.lex_state = 0, .external_lex_state = 4}, + [199] = {.lex_state = 0, .external_lex_state = 4}, + [200] = {.lex_state = 0, .external_lex_state = 4}, + [201] = {.lex_state = 0, .external_lex_state = 4}, + [202] = {.lex_state = 0, .external_lex_state = 4}, + [203] = {.lex_state = 4, .external_lex_state = 2}, + [204] = {.lex_state = 29}, + [205] = {.lex_state = 29}, [206] = {.lex_state = 0}, - [207] = {.lex_state = 31}, + [207] = {.lex_state = 29}, [208] = {.lex_state = 0}, [209] = {.lex_state = 0}, - [210] = {.lex_state = 0}, - [211] = {.lex_state = 0}, + [210] = {.lex_state = 29}, + [211] = {.lex_state = 29, .external_lex_state = 2}, [212] = {.lex_state = 0}, [213] = {.lex_state = 0}, - [214] = {.lex_state = 31}, + [214] = {.lex_state = 0}, [215] = {.lex_state = 0}, [216] = {.lex_state = 0}, [217] = {.lex_state = 0}, - [218] = {.lex_state = 0}, + [218] = {.lex_state = 29, .external_lex_state = 2}, [219] = {.lex_state = 0}, [220] = {.lex_state = 0}, + [221] = {.lex_state = 0}, + [222] = {.lex_state = 29}, + [223] = {.lex_state = 0}, + [224] = {.lex_state = 0}, + [225] = {.lex_state = 0}, + [226] = {.lex_state = 0}, + [227] = {.lex_state = 0, .external_lex_state = 4}, + [228] = {.lex_state = 0}, + [229] = {.lex_state = 0}, + [230] = {.lex_state = 0}, + [231] = {.lex_state = 0}, + [232] = {.lex_state = 0}, + [233] = {.lex_state = 0, .external_lex_state = 4}, + [234] = {.lex_state = 0}, + [235] = {.lex_state = 0}, + [236] = {.lex_state = 0}, + [237] = {.lex_state = 0}, + [238] = {.lex_state = 0}, + [239] = {.lex_state = 29, .external_lex_state = 2}, + [240] = {.lex_state = 0, .external_lex_state = 5}, + [241] = {.lex_state = 0, .external_lex_state = 3}, + [242] = {.lex_state = 0, .external_lex_state = 3}, + [243] = {.lex_state = 0}, + [244] = {.lex_state = 0, .external_lex_state = 6}, + [245] = {.lex_state = 0}, + [246] = {.lex_state = 0, .external_lex_state = 4}, + [247] = {.lex_state = 0, .external_lex_state = 4}, + [248] = {.lex_state = 29}, + [249] = {.lex_state = 0, .external_lex_state = 3}, + [250] = {.lex_state = 0, .external_lex_state = 3}, + [251] = {.lex_state = 0}, + [252] = {.lex_state = 0, .external_lex_state = 3}, + [253] = {.lex_state = 0}, + [254] = {.lex_state = 29}, + [255] = {.lex_state = 29}, + [256] = {.lex_state = 0, .external_lex_state = 4}, + [257] = {.lex_state = 3}, + [258] = {.lex_state = 0}, + [259] = {.lex_state = 0, .external_lex_state = 4}, + [260] = {.lex_state = 0, .external_lex_state = 6}, + [261] = {.lex_state = 0, .external_lex_state = 4}, + [262] = {.lex_state = 0, .external_lex_state = 4}, + [263] = {.lex_state = 0}, + [264] = {.lex_state = 0}, + [265] = {.lex_state = 2}, + [266] = {.lex_state = 29}, + [267] = {.lex_state = 0}, + [268] = {.lex_state = 0}, + [269] = {.lex_state = 0}, + [270] = {.lex_state = 2}, + [271] = {.lex_state = 0}, + [272] = {.lex_state = 0}, + [273] = {.lex_state = 0}, + [274] = {.lex_state = 29}, + [275] = {.lex_state = 0}, + [276] = {.lex_state = 0}, + [277] = {.lex_state = 0}, + [278] = {.lex_state = 0}, + [279] = {.lex_state = 0}, + [280] = {.lex_state = 0}, + [281] = {.lex_state = 2}, + [282] = {.lex_state = 0}, + [283] = {.lex_state = 0}, + [284] = {.lex_state = 0}, + [285] = {.lex_state = 0}, + [286] = {.lex_state = 0}, + [287] = {.lex_state = 0}, + [288] = {.lex_state = 0}, + [289] = {.lex_state = 0}, + [290] = {.lex_state = 29}, + [291] = {.lex_state = 0}, + [292] = {.lex_state = 0}, + [293] = {.lex_state = 0, .external_lex_state = 3}, + [294] = {.lex_state = 0}, + [295] = {.lex_state = 0}, + [296] = {.lex_state = 0}, + [297] = {.lex_state = 0}, + [298] = {.lex_state = 0}, + [299] = {.lex_state = 0}, + [300] = {.lex_state = 29}, + [301] = {.lex_state = 29}, + [302] = {.lex_state = 0, .external_lex_state = 7}, + [303] = {.lex_state = 29}, + [304] = {.lex_state = 0}, + [305] = {.lex_state = 0, .external_lex_state = 3}, + [306] = {.lex_state = 29}, + [307] = {.lex_state = 0}, + [308] = {.lex_state = 0}, + [309] = {.lex_state = 29}, + [310] = {.lex_state = 0}, + [311] = {.lex_state = 0}, }; enum { - ts_external_token__template_char = 0, - ts_external_token__template_char_in_interpolation = 1, - ts_external_token_escape_sequence = 2, + ts_external_token__quoted_template_start = 0, + ts_external_token__quoted_template_end = 1, + ts_external_token__template_literal_chunk = 2, + ts_external_token__template_interpolation_start = 3, + ts_external_token__template_interpolation_end = 4, }; static const TSSymbol ts_external_scanner_symbol_map[EXTERNAL_TOKEN_COUNT] = { - [ts_external_token__template_char] = sym__template_char, - [ts_external_token__template_char_in_interpolation] = sym__template_char_in_interpolation, - [ts_external_token_escape_sequence] = sym_escape_sequence, + [ts_external_token__quoted_template_start] = sym__quoted_template_start, + [ts_external_token__quoted_template_end] = sym__quoted_template_end, + [ts_external_token__template_literal_chunk] = sym__template_literal_chunk, + [ts_external_token__template_interpolation_start] = sym__template_interpolation_start, + [ts_external_token__template_interpolation_end] = sym__template_interpolation_end, }; -static const bool ts_external_scanner_states[4][EXTERNAL_TOKEN_COUNT] = { +static const bool ts_external_scanner_states[8][EXTERNAL_TOKEN_COUNT] = { [1] = { - [ts_external_token__template_char] = true, - [ts_external_token__template_char_in_interpolation] = true, - [ts_external_token_escape_sequence] = true, + [ts_external_token__quoted_template_start] = true, + [ts_external_token__quoted_template_end] = true, + [ts_external_token__template_literal_chunk] = true, + [ts_external_token__template_interpolation_start] = true, + [ts_external_token__template_interpolation_end] = true, }, [2] = { - [ts_external_token__template_char] = true, - [ts_external_token_escape_sequence] = true, + [ts_external_token__quoted_template_start] = true, }, [3] = { - [ts_external_token__template_char_in_interpolation] = true, - [ts_external_token_escape_sequence] = true, + [ts_external_token__template_interpolation_end] = true, + }, + [4] = { + [ts_external_token__quoted_template_end] = true, + [ts_external_token__template_literal_chunk] = true, + [ts_external_token__template_interpolation_start] = true, + }, + [5] = { + [ts_external_token__template_literal_chunk] = true, + }, + [6] = { + [ts_external_token__quoted_template_end] = true, + [ts_external_token__template_literal_chunk] = true, + }, + [7] = { + [ts_external_token__quoted_template_end] = true, }, }; @@ -2971,28 +3103,27 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_BANG_EQ] = ACTIONS(1), [anon_sym_AMP_AMP] = ACTIONS(1), [anon_sym_PIPE_PIPE] = ACTIONS(1), - [anon_sym_DQUOTE] = ACTIONS(1), - [anon_sym_DOLLAR_LBRACE] = ACTIONS(1), - [anon_sym_DOLLAR_LBRACE_TILDE] = ACTIONS(1), - [anon_sym_TILDE_RBRACE] = ACTIONS(1), + [sym_strip_marker] = ACTIONS(1), [sym_comment] = ACTIONS(3), - [sym__template_char] = ACTIONS(1), - [sym__template_char_in_interpolation] = ACTIONS(1), - [sym_escape_sequence] = ACTIONS(1), + [sym__quoted_template_start] = ACTIONS(1), + [sym__quoted_template_end] = ACTIONS(1), + [sym__template_literal_chunk] = ACTIONS(1), + [sym__template_interpolation_start] = ACTIONS(1), + [sym__template_interpolation_end] = ACTIONS(1), }, [1] = { - [sym_config_file] = STATE(220), - [sym_body] = STATE(218), - [sym_attribute] = STATE(143), - [sym_block] = STATE(143), - [aux_sym_body_repeat1] = STATE(143), + [sym_config_file] = STATE(311), + [sym_body] = STATE(310), + [sym_attribute] = STATE(207), + [sym_block] = STATE(207), + [aux_sym_body_repeat1] = STATE(207), [sym_identifier] = ACTIONS(5), [sym_comment] = ACTIONS(3), }, }; static const uint16_t ts_small_parse_table[] = { - [0] = 23, + [0] = 24, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3012,18 +3143,18 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(23), 1, anon_sym_for, ACTIONS(27), 1, - anon_sym_DQUOTE, - STATE(6), 1, - sym_expr_term, - STATE(20), 1, + sym__quoted_template_start, + STATE(4), 1, + sym__object_start, + STATE(39), 1, sym_for_intro, - STATE(42), 1, + STATE(73), 1, sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(180), 1, + STATE(167), 1, + sym__object_end, + STATE(221), 1, sym_object_elem, - STATE(182), 1, + STATE(257), 1, sym_expression, ACTIONS(17), 2, anon_sym_true, @@ -3031,26 +3162,30 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, + STATE(55), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, sym_unary_operation, sym_binary_operation, - STATE(48), 6, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, sym_template_expr, - [81] = 23, + [86] = 24, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3068,20 +3203,20 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(23), 1, anon_sym_for, ACTIONS(27), 1, - anon_sym_DQUOTE, + sym__quoted_template_start, ACTIONS(29), 1, anon_sym_RBRACE, - STATE(6), 1, - sym_expr_term, - STATE(27), 1, + STATE(4), 1, + sym__object_start, + STATE(25), 1, sym_for_intro, - STATE(42), 1, + STATE(73), 1, sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(173), 1, + STATE(130), 1, + sym__object_end, + STATE(235), 1, sym_object_elem, - STATE(182), 1, + STATE(257), 1, sym_expression, ACTIONS(17), 2, anon_sym_true, @@ -3089,55 +3224,61 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, + STATE(55), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [162] = 22, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(23), 1, - anon_sym_for, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - ACTIONS(33), 1, - anon_sym_RBRACK, - STATE(6), 1, - sym_expr_term, - STATE(19), 1, - sym_for_intro, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, sym_bool_lit, - STATE(167), 1, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [172] = 24, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(11), 1, + sym_identifier, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(23), 1, + anon_sym_for, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(31), 1, + anon_sym_RBRACE, + STATE(4), 1, + sym__object_start, + STATE(24), 1, + sym_for_intro, + STATE(62), 1, + sym__object_end, + STATE(73), 1, + sym_quoted_template, + STATE(236), 1, + sym_object_elem, + STATE(257), 1, sym_expression, ACTIONS(17), 2, anon_sym_true, @@ -3145,26 +3286,30 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, + STATE(55), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, sym_unary_operation, sym_binary_operation, - STATE(48), 6, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, sym_template_expr, - [240] = 22, + [258] = 22, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3180,20 +3325,18 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(23), 1, anon_sym_for, ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, + sym__quoted_template_start, + ACTIONS(33), 1, sym_identifier, ACTIONS(35), 1, anon_sym_RBRACK, - STATE(6), 1, - sym_expr_term, - STATE(25), 1, + STATE(4), 1, + sym__object_start, + STATE(43), 1, sym_for_intro, - STATE(42), 1, + STATE(73), 1, sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(165), 1, + STATE(231), 1, sym_expression, ACTIONS(17), 2, anon_sym_true, @@ -3201,63 +3344,943 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, + STATE(55), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, sym_unary_operation, sym_binary_operation, - STATE(48), 6, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, sym_template_expr, - [318] = 15, + [338] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(39), 1, - anon_sym_EQ, - ACTIONS(41), 1, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + ACTIONS(37), 1, + anon_sym_RPAREN, + STATE(4), 1, + sym__object_start, + STATE(69), 1, + sym__function_call_end, + STATE(73), 1, + sym_quoted_template, + STATE(212), 1, + sym_expression, + STATE(283), 1, + sym_function_arguments, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [418] = 22, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(23), 1, + anon_sym_for, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + ACTIONS(39), 1, + anon_sym_RBRACK, + STATE(4), 1, + sym__object_start, + STATE(33), 1, + sym_for_intro, + STATE(73), 1, + sym_quoted_template, + STATE(229), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [498] = 22, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + ACTIONS(41), 1, + anon_sym_RPAREN, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(170), 1, + sym__function_call_end, + STATE(212), 1, + sym_expression, + STATE(276), 1, + sym_function_arguments, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [578] = 22, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(23), 1, + anon_sym_for, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, ACTIONS(43), 1, - anon_sym_DOT, + anon_sym_RBRACK, + STATE(4), 1, + sym__object_start, + STATE(46), 1, + sym_for_intro, + STATE(73), 1, + sym_quoted_template, + STATE(224), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [658] = 22, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + ACTIONS(45), 1, + anon_sym_RPAREN, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(132), 1, + sym__function_call_end, + STATE(212), 1, + sym_expression, + STATE(264), 1, + sym_function_arguments, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [738] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(11), 1, + sym_identifier, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(257), 1, + sym_expression, + STATE(286), 1, + sym_object_elem, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [812] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + ACTIONS(47), 1, + anon_sym_RPAREN, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(215), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [886] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, ACTIONS(49), 1, - anon_sym_SLASH, + anon_sym_STAR, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(292), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [960] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + ACTIONS(51), 1, + anon_sym_STAR, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(278), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1034] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + ACTIONS(53), 1, + anon_sym_RPAREN, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(215), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1108] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 1, + anon_sym_LBRACE, ACTIONS(57), 1, - anon_sym_AMP_AMP, + sym_identifier, ACTIONS(59), 1, + anon_sym_LPAREN, + ACTIONS(61), 1, + sym_numeric_lit, + ACTIONS(65), 1, + sym_null_lit, + ACTIONS(67), 1, + anon_sym_LBRACK, + ACTIONS(71), 1, + sym_strip_marker, + ACTIONS(73), 1, + sym__quoted_template_start, + STATE(2), 1, + sym__object_start, + STATE(153), 1, + sym_quoted_template, + STATE(252), 1, + sym_expression, + ACTIONS(63), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(69), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(149), 2, + sym_tuple, + sym_object, + STATE(150), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(154), 2, + sym_bool_lit, + sym_string_lit, + STATE(241), 2, + sym_unary_operation, + sym_binary_operation, + STATE(242), 2, + sym_conditional, + sym_operation, + STATE(105), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1182] = 20, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + ACTIONS(75), 1, + anon_sym_STAR, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(279), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1256] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(292), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1327] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(277), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1398] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(275), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1469] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(77), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_identifier, + ACTIONS(81), 1, + anon_sym_LPAREN, + ACTIONS(83), 1, + sym_numeric_lit, + ACTIONS(87), 1, + sym_null_lit, + ACTIONS(89), 1, + anon_sym_LBRACK, + ACTIONS(93), 1, + sym__quoted_template_start, + STATE(3), 1, + sym__object_start, + STATE(113), 1, + sym_quoted_template, + STATE(206), 1, + sym_expression, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(91), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(114), 2, + sym_tuple, + sym_object, + STATE(119), 2, + sym_bool_lit, + sym_string_lit, + STATE(125), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(216), 2, + sym_conditional, + sym_operation, + STATE(217), 2, + sym_unary_operation, + sym_binary_operation, + STATE(80), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1540] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(97), 1, + anon_sym_EQ, + ACTIONS(99), 1, + anon_sym_LBRACK, + ACTIONS(101), 1, + anon_sym_DOT, + ACTIONS(107), 1, + anon_sym_SLASH, + ACTIONS(115), 1, + anon_sym_AMP_AMP, + ACTIONS(117), 1, anon_sym_PIPE_PIPE, - ACTIONS(45), 2, + ACTIONS(103), 2, anon_sym_STAR, anon_sym_PERCENT, - ACTIONS(47), 2, + ACTIONS(105), 2, anon_sym_DASH, anon_sym_PLUS, - ACTIONS(51), 2, + ACTIONS(109), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(53), 2, + ACTIONS(111), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, - ACTIONS(55), 2, + ACTIONS(113), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - STATE(58), 2, + STATE(59), 2, sym_attr_splat, sym_full_splat, - STATE(57), 3, + STATE(58), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(37), 10, + ACTIONS(95), 10, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -3268,7 +4291,59 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ_GT, sym_ellipsis, anon_sym_QMARK, - [381] = 21, + [1603] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(77), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_identifier, + ACTIONS(81), 1, + anon_sym_LPAREN, + ACTIONS(83), 1, + sym_numeric_lit, + ACTIONS(87), 1, + sym_null_lit, + ACTIONS(89), 1, + anon_sym_LBRACK, + ACTIONS(93), 1, + sym__quoted_template_start, + STATE(3), 1, + sym__object_start, + STATE(113), 1, + sym_quoted_template, + STATE(213), 1, + sym_expression, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(91), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(114), 2, + sym_tuple, + sym_object, + STATE(119), 2, + sym_bool_lit, + sym_string_lit, + STATE(125), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(216), 2, + sym_conditional, + sym_operation, + STATE(217), 2, + sym_unary_operation, + sym_binary_operation, + STATE(80), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1674] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3282,257 +4357,253 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(21), 1, anon_sym_LBRACK, ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, + sym__quoted_template_start, + ACTIONS(33), 1, sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(265), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1745] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(270), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1816] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(272), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1887] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(278), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1958] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 1, + anon_sym_LBRACE, + ACTIONS(57), 1, + sym_identifier, + ACTIONS(59), 1, + anon_sym_LPAREN, ACTIONS(61), 1, - anon_sym_RPAREN, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(153), 1, - sym_expression, - STATE(216), 1, - sym_function_arguments, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(25), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [456] = 21, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - ACTIONS(63), 1, - anon_sym_RPAREN, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(153), 1, - sym_expression, - STATE(202), 1, - sym_function_arguments, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(25), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [531] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, ACTIONS(65), 1, - anon_sym_RPAREN, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(156), 1, - sym_expression, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(25), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [603] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, ACTIONS(67), 1, - anon_sym_STAR, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(191), 1, - sym_expression, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(25), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [675] = 20, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(11), 1, - sym_identifier, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, + ACTIONS(73), 1, + sym__quoted_template_start, + STATE(2), 1, + sym__object_start, + STATE(153), 1, sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(182), 1, + STATE(250), 1, sym_expression, - STATE(194), 1, - sym_object_elem, - ACTIONS(17), 2, + ACTIONS(63), 2, anon_sym_true, anon_sym_false, - ACTIONS(25), 2, + ACTIONS(69), 2, anon_sym_DASH, anon_sym_BANG, - STATE(41), 2, + STATE(149), 2, sym_tuple, sym_object, - STATE(53), 2, + STATE(150), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, + STATE(154), 2, + sym_bool_lit, + sym_string_lit, + STATE(241), 2, sym_unary_operation, sym_binary_operation, - STATE(48), 6, + STATE(242), 2, + sym_conditional, + sym_operation, + STATE(105), 7, + sym__expr_term, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, sym_template_expr, - [747] = 20, + [2029] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3546,18 +4617,14 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(21), 1, anon_sym_LBRACK, ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, + sym__quoted_template_start, + ACTIONS(33), 1, sym_identifier, - ACTIONS(69), 1, - anon_sym_RPAREN, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, + STATE(4), 1, + sym__object_start, + STATE(73), 1, sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(156), 1, + STATE(279), 1, sym_expression, ACTIONS(17), 2, anon_sym_true, @@ -3565,26 +4632,82 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, + STATE(55), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, sym_unary_operation, sym_binary_operation, - STATE(48), 6, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, sym_template_expr, - [819] = 20, + [2100] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(77), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_identifier, + ACTIONS(81), 1, + anon_sym_LPAREN, + ACTIONS(83), 1, + sym_numeric_lit, + ACTIONS(87), 1, + sym_null_lit, + ACTIONS(89), 1, + anon_sym_LBRACK, + ACTIONS(93), 1, + sym__quoted_template_start, + STATE(3), 1, + sym__object_start, + STATE(113), 1, + sym_quoted_template, + STATE(209), 1, + sym_expression, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(91), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(114), 2, + sym_tuple, + sym_object, + STATE(119), 2, + sym_bool_lit, + sym_string_lit, + STATE(125), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(216), 2, + sym_conditional, + sym_operation, + STATE(217), 2, + sym_unary_operation, + sym_binary_operation, + STATE(80), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [2171] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3598,18 +4721,14 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(21), 1, anon_sym_LBRACK, ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, + sym__quoted_template_start, + ACTIONS(33), 1, sym_identifier, - ACTIONS(71), 1, - anon_sym_STAR, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, + STATE(4), 1, + sym__object_start, + STATE(73), 1, sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(195), 1, + STATE(215), 1, sym_expression, ACTIONS(17), 2, anon_sym_true, @@ -3617,26 +4736,30 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, + STATE(55), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, sym_unary_operation, sym_binary_operation, - STATE(48), 6, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, sym_template_expr, - [891] = 19, + [2242] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3650,15 +4773,481 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(21), 1, anon_sym_LBRACK, ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, + sym__quoted_template_start, + ACTIONS(33), 1, sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, + STATE(4), 1, + sym__object_start, + STATE(73), 1, sym_quoted_template, - STATE(60), 1, + STATE(273), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [2313] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(77), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_identifier, + ACTIONS(81), 1, + anon_sym_LPAREN, + ACTIONS(83), 1, + sym_numeric_lit, + ACTIONS(87), 1, + sym_null_lit, + ACTIONS(89), 1, + anon_sym_LBRACK, + ACTIONS(93), 1, + sym__quoted_template_start, + STATE(3), 1, + sym__object_start, + STATE(113), 1, + sym_quoted_template, + STATE(228), 1, + sym_expression, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(91), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(114), 2, + sym_tuple, + sym_object, + STATE(119), 2, + sym_bool_lit, + sym_string_lit, + STATE(125), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(216), 2, + sym_conditional, + sym_operation, + STATE(217), 2, + sym_unary_operation, + sym_binary_operation, + STATE(80), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [2384] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 1, + anon_sym_LBRACE, + ACTIONS(57), 1, + sym_identifier, + ACTIONS(59), 1, + anon_sym_LPAREN, + ACTIONS(61), 1, + sym_numeric_lit, + ACTIONS(65), 1, + sym_null_lit, + ACTIONS(67), 1, + anon_sym_LBRACK, + ACTIONS(73), 1, + sym__quoted_template_start, + STATE(2), 1, + sym__object_start, + STATE(153), 1, + sym_quoted_template, + STATE(249), 1, + sym_expression, + ACTIONS(63), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(69), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(149), 2, + sym_tuple, + sym_object, + STATE(150), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(154), 2, + sym_bool_lit, + sym_string_lit, + STATE(241), 2, + sym_unary_operation, + sym_binary_operation, + STATE(242), 2, + sym_conditional, + sym_operation, + STATE(105), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [2455] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(258), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [2526] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(289), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [2597] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(77), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_identifier, + ACTIONS(81), 1, + anon_sym_LPAREN, + ACTIONS(83), 1, + sym_numeric_lit, + ACTIONS(87), 1, + sym_null_lit, + ACTIONS(89), 1, + anon_sym_LBRACK, + ACTIONS(93), 1, + sym__quoted_template_start, + STATE(3), 1, + sym__object_start, + STATE(113), 1, + sym_quoted_template, + STATE(208), 1, + sym_expression, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(91), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(114), 2, + sym_tuple, + sym_object, + STATE(119), 2, + sym_bool_lit, + sym_string_lit, + STATE(125), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(216), 2, + sym_conditional, + sym_operation, + STATE(217), 2, + sym_unary_operation, + sym_binary_operation, + STATE(80), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [2668] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(222), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [2739] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(281), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [2810] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + STATE(291), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, + sym_unary_operation, + sym_binary_operation, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [2881] = 19, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, STATE(186), 1, sym_expression, ACTIONS(17), 2, @@ -3667,26 +5256,30 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, + STATE(55), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, sym_unary_operation, sym_binary_operation, - STATE(48), 6, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, sym_template_expr, - [960] = 19, + [2952] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3700,16 +5293,14 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(21), 1, anon_sym_LBRACK, ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, + sym__quoted_template_start, + ACTIONS(33), 1, sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, + STATE(4), 1, + sym__object_start, + STATE(73), 1, sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(164), 1, + STATE(243), 1, sym_expression, ACTIONS(17), 2, anon_sym_true, @@ -3717,226 +5308,82 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, + STATE(55), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [1029] = 19, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, sym_bool_lit, - STATE(192), 1, - sym_expression, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(25), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, + sym_string_lit, + STATE(185), 2, sym_unary_operation, sym_binary_operation, - STATE(48), 6, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, sym_template_expr, - [1098] = 19, + [3023] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(196), 1, - sym_expression, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(25), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [1167] = 19, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(185), 1, - sym_expression, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(25), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [1236] = 19, - ACTIONS(3), 1, - sym_comment, - ACTIONS(73), 1, - anon_sym_LBRACE, - ACTIONS(75), 1, - sym_identifier, ACTIONS(77), 1, - anon_sym_LPAREN, + anon_sym_LBRACE, ACTIONS(79), 1, - sym_numeric_lit, + sym_identifier, + ACTIONS(81), 1, + anon_sym_LPAREN, ACTIONS(83), 1, + sym_numeric_lit, + ACTIONS(87), 1, sym_null_lit, - ACTIONS(85), 1, - anon_sym_LBRACK, ACTIONS(89), 1, - anon_sym_DQUOTE, - STATE(67), 1, - sym_expr_term, - STATE(91), 1, + anon_sym_LBRACK, + ACTIONS(93), 1, + sym__quoted_template_start, + STATE(3), 1, + sym__object_start, + STATE(113), 1, sym_quoted_template, - STATE(96), 1, - sym_bool_lit, - STATE(162), 1, + STATE(220), 1, sym_expression, - ACTIONS(81), 2, + ACTIONS(85), 2, anon_sym_true, anon_sym_false, - ACTIONS(87), 2, + ACTIONS(91), 2, anon_sym_DASH, anon_sym_BANG, - STATE(92), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(93), 2, + STATE(114), 2, sym_tuple, sym_object, - STATE(147), 2, + STATE(119), 2, + sym_bool_lit, + sym_string_lit, + STATE(125), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(216), 2, sym_conditional, sym_operation, - STATE(148), 2, + STATE(217), 2, sym_unary_operation, sym_binary_operation, - STATE(94), 6, + STATE(80), 7, + sym__expr_term, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, sym_template_expr, - [1305] = 19, + [3094] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3950,16 +5397,14 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(21), 1, anon_sym_LBRACK, ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, + sym__quoted_template_start, + ACTIONS(33), 1, sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, + STATE(4), 1, + sym__object_start, + STATE(73), 1, sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(189), 1, + STATE(280), 1, sym_expression, ACTIONS(17), 2, anon_sym_true, @@ -3967,26 +5412,30 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, + STATE(55), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, sym_unary_operation, sym_binary_operation, - STATE(48), 6, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, sym_template_expr, - [1374] = 19, + [3165] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -4000,16 +5449,14 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(21), 1, anon_sym_LBRACK, ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, + sym__quoted_template_start, + ACTIONS(33), 1, sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, + STATE(4), 1, + sym__object_start, + STATE(73), 1, sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(193), 1, + STATE(287), 1, sym_expression, ACTIONS(17), 2, anon_sym_true, @@ -4017,142 +5464,98 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, + STATE(55), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(185), 2, sym_unary_operation, sym_binary_operation, - STATE(48), 6, + STATE(188), 2, + sym_conditional, + sym_operation, + STATE(22), 7, + sym__expr_term, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, sym_template_expr, - [1443] = 19, + [3236] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(73), 1, - anon_sym_LBRACE, - ACTIONS(75), 1, - sym_identifier, ACTIONS(77), 1, - anon_sym_LPAREN, - ACTIONS(79), 1, - sym_numeric_lit, - ACTIONS(83), 1, - sym_null_lit, - ACTIONS(85), 1, - anon_sym_LBRACK, - ACTIONS(89), 1, - anon_sym_DQUOTE, - STATE(67), 1, - sym_expr_term, - STATE(91), 1, - sym_quoted_template, - STATE(96), 1, - sym_bool_lit, - STATE(154), 1, - sym_expression, - ACTIONS(81), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(87), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(92), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(93), 2, - sym_tuple, - sym_object, - STATE(147), 2, - sym_conditional, - sym_operation, - STATE(148), 2, - sym_unary_operation, - sym_binary_operation, - STATE(94), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [1512] = 19, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, + ACTIONS(79), 1, sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, + ACTIONS(81), 1, + anon_sym_LPAREN, + ACTIONS(83), 1, + sym_numeric_lit, + ACTIONS(87), 1, + sym_null_lit, + ACTIONS(89), 1, + anon_sym_LBRACK, + ACTIONS(93), 1, + sym__quoted_template_start, + STATE(3), 1, + sym__object_start, + STATE(113), 1, sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(130), 1, + STATE(223), 1, sym_expression, - ACTIONS(17), 2, + ACTIONS(85), 2, anon_sym_true, anon_sym_false, - ACTIONS(25), 2, + ACTIONS(91), 2, anon_sym_DASH, anon_sym_BANG, - STATE(41), 2, + STATE(114), 2, sym_tuple, sym_object, - STATE(53), 2, + STATE(119), 2, + sym_bool_lit, + sym_string_lit, + STATE(125), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(131), 2, + STATE(216), 2, sym_conditional, sym_operation, - STATE(134), 2, + STATE(217), 2, sym_unary_operation, sym_binary_operation, - STATE(48), 6, + STATE(80), 7, + sym__expr_term, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, sym_template_expr, - [1581] = 6, + [3307] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(95), 1, + ACTIONS(123), 1, anon_sym_LBRACK, - ACTIONS(98), 1, + ACTIONS(126), 1, anon_sym_DOT, - STATE(29), 3, + STATE(49), 3, sym_index, sym_get_attr, aux_sym_full_splat_repeat1, - ACTIONS(93), 4, + ACTIONS(121), 4, anon_sym_EQ, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(91), 20, + ACTIONS(119), 20, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -4173,223 +5576,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [1624] = 19, + [3350] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(73), 1, - anon_sym_LBRACE, - ACTIONS(75), 1, - sym_identifier, - ACTIONS(77), 1, - anon_sym_LPAREN, - ACTIONS(79), 1, - sym_numeric_lit, - ACTIONS(83), 1, - sym_null_lit, - ACTIONS(85), 1, + ACTIONS(133), 1, anon_sym_LBRACK, - ACTIONS(89), 1, - anon_sym_DQUOTE, - STATE(67), 1, - sym_expr_term, - STATE(91), 1, - sym_quoted_template, - STATE(96), 1, - sym_bool_lit, - STATE(166), 1, - sym_expression, - ACTIONS(81), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(87), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(92), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(93), 2, - sym_tuple, - sym_object, - STATE(147), 2, - sym_conditional, - sym_operation, - STATE(148), 2, - sym_unary_operation, - sym_binary_operation, - STATE(94), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [1693] = 19, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(156), 1, - sym_expression, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(25), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [1762] = 19, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(190), 1, - sym_expression, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(25), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [1831] = 19, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(191), 1, - sym_expression, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(25), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [1900] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(105), 1, - anon_sym_LBRACK, - ACTIONS(108), 1, + ACTIONS(136), 1, anon_sym_DOT, - STATE(36), 3, + STATE(48), 3, sym_index, sym_get_attr, aux_sym_full_splat_repeat1, - ACTIONS(103), 4, + ACTIONS(131), 4, anon_sym_EQ, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(101), 20, + ACTIONS(129), 20, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -4410,460 +5613,57 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [1943] = 19, + [3393] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(73), 1, - anon_sym_LBRACE, - ACTIONS(75), 1, - sym_identifier, - ACTIONS(77), 1, - anon_sym_LPAREN, - ACTIONS(79), 1, - sym_numeric_lit, - ACTIONS(83), 1, - sym_null_lit, - ACTIONS(85), 1, + ACTIONS(143), 1, anon_sym_LBRACK, - ACTIONS(89), 1, - anon_sym_DQUOTE, - STATE(67), 1, - sym_expr_term, - STATE(91), 1, - sym_quoted_template, - STATE(96), 1, - sym_bool_lit, - STATE(152), 1, - sym_expression, - ACTIONS(81), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(87), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(92), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(93), 2, - sym_tuple, - sym_object, - STATE(147), 2, - sym_conditional, - sym_operation, - STATE(148), 2, - sym_unary_operation, - sym_binary_operation, - STATE(94), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [2012] = 19, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(195), 1, - sym_expression, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(25), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [2081] = 19, - ACTIONS(3), 1, - sym_comment, - ACTIONS(73), 1, - anon_sym_LBRACE, - ACTIONS(75), 1, - sym_identifier, - ACTIONS(77), 1, - anon_sym_LPAREN, - ACTIONS(79), 1, - sym_numeric_lit, - ACTIONS(83), 1, - sym_null_lit, - ACTIONS(85), 1, - anon_sym_LBRACK, - ACTIONS(89), 1, - anon_sym_DQUOTE, - STATE(67), 1, - sym_expr_term, - STATE(91), 1, - sym_quoted_template, - STATE(96), 1, - sym_bool_lit, - STATE(150), 1, - sym_expression, - ACTIONS(81), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(87), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(92), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(93), 2, - sym_tuple, - sym_object, - STATE(147), 2, - sym_conditional, - sym_operation, - STATE(148), 2, - sym_unary_operation, - sym_binary_operation, - STATE(94), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [2150] = 19, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(197), 1, - sym_expression, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(25), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [2219] = 19, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(172), 1, - sym_expression, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(25), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [2288] = 19, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(6), 1, - sym_expr_term, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(198), 1, - sym_expression, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(25), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(131), 2, - sym_conditional, - sym_operation, - STATE(134), 2, - sym_unary_operation, - sym_binary_operation, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [2357] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(115), 1, - anon_sym_LBRACK, - ACTIONS(118), 1, - anon_sym_DOT, - STATE(36), 3, - sym_index, - sym_get_attr, - aux_sym_full_splat_repeat1, - ACTIONS(113), 4, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(111), 20, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_COLON, - anon_sym_STAR, - anon_sym_EQ_GT, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [2400] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(125), 1, - anon_sym_DOT, - STATE(37), 2, - sym_get_attr, - aux_sym_attr_splat_repeat1, - ACTIONS(123), 4, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(121), 21, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - anon_sym_RPAREN, - anon_sym_LBRACK, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_COLON, - anon_sym_STAR, - anon_sym_EQ_GT, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [2440] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(132), 1, - anon_sym_DOT, - STATE(37), 2, - sym_get_attr, - aux_sym_attr_splat_repeat1, - ACTIONS(130), 4, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(128), 21, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - anon_sym_RPAREN, - anon_sym_LBRACK, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_COLON, - anon_sym_STAR, - anon_sym_EQ_GT, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [2480] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(139), 1, - anon_sym_DOT, - STATE(38), 2, - sym_get_attr, - aux_sym_attr_splat_repeat1, - ACTIONS(137), 4, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(135), 21, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - anon_sym_RPAREN, - anon_sym_LBRACK, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_COLON, - anon_sym_STAR, - anon_sym_EQ_GT, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [2520] = 4, - ACTIONS(3), 1, - sym_comment, ACTIONS(146), 1, - anon_sym_LPAREN, - ACTIONS(144), 5, - anon_sym_EQ, anon_sym_DOT, + STATE(48), 3, + sym_index, + sym_get_attr, + aux_sym_full_splat_repeat1, + ACTIONS(141), 4, + anon_sym_EQ, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(142), 21, + ACTIONS(139), 20, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_STAR, + anon_sym_EQ_GT, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [3436] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(153), 1, + anon_sym_DOT, + STATE(53), 2, + sym_get_attr, + aux_sym_attr_splat_repeat1, + ACTIONS(151), 4, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(149), 21, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -4885,74 +5685,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2557] = 3, + [3476] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(150), 5, - anon_sym_EQ, + ACTIONS(160), 1, anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(148), 21, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - anon_sym_RPAREN, - anon_sym_LBRACK, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_COLON, - anon_sym_STAR, - anon_sym_EQ_GT, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [2591] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(154), 5, + STATE(50), 2, + sym_get_attr, + aux_sym_attr_splat_repeat1, + ACTIONS(158), 4, anon_sym_EQ, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(152), 21, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - anon_sym_RPAREN, - anon_sym_LBRACK, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_COLON, - anon_sym_STAR, - anon_sym_EQ_GT, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [2625] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(158), 5, - anon_sym_EQ, - anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, @@ -4978,16 +5720,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2659] = 3, + [3516] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(162), 5, + ACTIONS(167), 1, + anon_sym_LPAREN, + STATE(6), 1, + sym__function_call_start, + ACTIONS(165), 5, anon_sym_EQ, anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(160), 21, + ACTIONS(163), 21, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -5009,16 +5755,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2693] = 3, + [3556] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(166), 5, - anon_sym_EQ, + ACTIONS(173), 1, anon_sym_DOT, + STATE(53), 2, + sym_get_attr, + aux_sym_attr_splat_repeat1, + ACTIONS(171), 4, + anon_sym_EQ, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(164), 21, + ACTIONS(169), 21, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -5040,69 +5790,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2727] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(170), 5, - anon_sym_EQ, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(168), 21, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - anon_sym_RPAREN, - anon_sym_LBRACK, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_COLON, - anon_sym_STAR, - anon_sym_EQ_GT, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [2761] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(174), 5, - anon_sym_EQ, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(172), 21, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - anon_sym_RPAREN, - anon_sym_LBRACK, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_COLON, - anon_sym_STAR, - anon_sym_EQ_GT, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [2795] = 3, + [3596] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(178), 5, @@ -5133,7 +5821,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2829] = 3, + [3630] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(182), 5, @@ -5164,7 +5852,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2863] = 3, + [3664] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(186), 5, @@ -5195,7 +5883,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2897] = 3, + [3698] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(190), 5, @@ -5226,7 +5914,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2931] = 3, + [3732] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(194), 5, @@ -5257,7 +5945,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2965] = 3, + [3766] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(198), 5, @@ -5288,7 +5976,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2999] = 3, + [3800] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(202), 5, @@ -5319,7 +6007,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3033] = 3, + [3834] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(206), 5, @@ -5350,7 +6038,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3067] = 3, + [3868] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(210), 5, @@ -5381,7 +6069,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3101] = 3, + [3902] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(214), 5, @@ -5412,7 +6100,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3135] = 3, + [3936] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(218), 5, @@ -5443,7 +6131,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3169] = 3, + [3970] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(222), 5, @@ -5474,7 +6162,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3203] = 3, + [4004] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(226), 5, @@ -5505,7 +6193,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3237] = 3, + [4038] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(230), 5, @@ -5536,7 +6224,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3271] = 3, + [4072] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(234), 5, @@ -5567,7 +6255,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3305] = 3, + [4106] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(238), 5, @@ -5598,7 +6286,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3339] = 3, + [4140] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(242), 5, @@ -5629,7 +6317,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3373] = 3, + [4174] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(246), 5, @@ -5660,7 +6348,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3407] = 3, + [4208] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(250), 5, @@ -5691,63 +6379,1141 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3441] = 14, + [4242] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(252), 1, - anon_sym_LBRACK, - ACTIONS(254), 1, + ACTIONS(254), 5, + anon_sym_EQ, anon_sym_DOT, - ACTIONS(260), 1, anon_sym_SLASH, - ACTIONS(268), 1, - anon_sym_AMP_AMP, - ACTIONS(270), 1, - anon_sym_PIPE_PIPE, - ACTIONS(256), 2, - anon_sym_STAR, - anon_sym_PERCENT, - ACTIONS(258), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(262), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(264), 2, + ACTIONS(252), 21, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_STAR, + anon_sym_EQ_GT, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, anon_sym_GT_EQ, anon_sym_LT_EQ, - ACTIONS(266), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - STATE(114), 2, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [4276] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(258), 5, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(256), 21, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_STAR, + anon_sym_EQ_GT, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [4310] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(262), 5, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(260), 21, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_STAR, + anon_sym_EQ_GT, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [4344] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(266), 5, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(264), 21, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_STAR, + anon_sym_EQ_GT, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [4378] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(270), 5, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(268), 21, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_STAR, + anon_sym_EQ_GT, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [4412] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(274), 5, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(272), 21, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_STAR, + anon_sym_EQ_GT, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [4446] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(278), 5, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(276), 21, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_STAR, + anon_sym_EQ_GT, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [4480] = 14, + ACTIONS(3), 1, + sym_comment, + ACTIONS(280), 1, + anon_sym_LBRACK, + ACTIONS(282), 1, + anon_sym_DOT, + ACTIONS(288), 1, + anon_sym_SLASH, + ACTIONS(296), 1, + anon_sym_AMP_AMP, + ACTIONS(298), 1, + anon_sym_PIPE_PIPE, + ACTIONS(284), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(286), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(290), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(292), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(294), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + STATE(129), 2, sym_attr_splat, sym_full_splat, - STATE(102), 3, + STATE(128), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(37), 5, + ACTIONS(95), 5, anon_sym_RBRACE, anon_sym_RBRACK, anon_sym_if, sym_ellipsis, anon_sym_QMARK, - [3496] = 6, + [4535] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(272), 1, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, anon_sym_LBRACK, - ACTIONS(275), 1, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(148), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4591] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(147), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4647] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(155), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4703] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 1, + anon_sym_LBRACE, + ACTIONS(57), 1, + sym_identifier, + ACTIONS(59), 1, + anon_sym_LPAREN, + ACTIONS(61), 1, + sym_numeric_lit, + ACTIONS(65), 1, + sym_null_lit, + ACTIONS(67), 1, + anon_sym_LBRACK, + ACTIONS(73), 1, + sym__quoted_template_start, + STATE(2), 1, + sym__object_start, + STATE(153), 1, + sym_quoted_template, + ACTIONS(63), 2, + anon_sym_true, + anon_sym_false, + STATE(149), 2, + sym_tuple, + sym_object, + STATE(150), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(154), 2, + sym_bool_lit, + sym_string_lit, + STATE(189), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4759] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 1, + anon_sym_LBRACE, + ACTIONS(57), 1, + sym_identifier, + ACTIONS(59), 1, + anon_sym_LPAREN, + ACTIONS(61), 1, + sym_numeric_lit, + ACTIONS(65), 1, + sym_null_lit, + ACTIONS(67), 1, + anon_sym_LBRACK, + ACTIONS(73), 1, + sym__quoted_template_start, + STATE(2), 1, + sym__object_start, + STATE(153), 1, + sym_quoted_template, + ACTIONS(63), 2, + anon_sym_true, + anon_sym_false, + STATE(149), 2, + sym_tuple, + sym_object, + STATE(150), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(154), 2, + sym_bool_lit, + sym_string_lit, + STATE(191), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4815] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(77), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_identifier, + ACTIONS(81), 1, + anon_sym_LPAREN, + ACTIONS(83), 1, + sym_numeric_lit, + ACTIONS(87), 1, + sym_null_lit, + ACTIONS(89), 1, + anon_sym_LBRACK, + ACTIONS(93), 1, + sym__quoted_template_start, + STATE(3), 1, + sym__object_start, + STATE(113), 1, + sym_quoted_template, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(114), 2, + sym_tuple, + sym_object, + STATE(119), 2, + sym_bool_lit, + sym_string_lit, + STATE(125), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(180), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4871] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(157), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4927] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(151), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4983] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 1, + anon_sym_LBRACE, + ACTIONS(57), 1, + sym_identifier, + ACTIONS(59), 1, + anon_sym_LPAREN, + ACTIONS(61), 1, + sym_numeric_lit, + ACTIONS(65), 1, + sym_null_lit, + ACTIONS(67), 1, + anon_sym_LBRACK, + ACTIONS(73), 1, + sym__quoted_template_start, + STATE(2), 1, + sym__object_start, + STATE(153), 1, + sym_quoted_template, + ACTIONS(63), 2, + anon_sym_true, + anon_sym_false, + STATE(149), 2, + sym_tuple, + sym_object, + STATE(150), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(154), 2, + sym_bool_lit, + sym_string_lit, + STATE(193), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [5039] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(77), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_identifier, + ACTIONS(81), 1, + anon_sym_LPAREN, + ACTIONS(83), 1, + sym_numeric_lit, + ACTIONS(87), 1, + sym_null_lit, + ACTIONS(89), 1, + anon_sym_LBRACK, + ACTIONS(93), 1, + sym__quoted_template_start, + STATE(3), 1, + sym__object_start, + STATE(113), 1, + sym_quoted_template, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(114), 2, + sym_tuple, + sym_object, + STATE(119), 2, + sym_bool_lit, + sym_string_lit, + STATE(125), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(179), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [5095] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(77), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_identifier, + ACTIONS(81), 1, + anon_sym_LPAREN, + ACTIONS(83), 1, + sym_numeric_lit, + ACTIONS(87), 1, + sym_null_lit, + ACTIONS(89), 1, + anon_sym_LBRACK, + ACTIONS(93), 1, + sym__quoted_template_start, + STATE(3), 1, + sym__object_start, + STATE(113), 1, + sym_quoted_template, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(114), 2, + sym_tuple, + sym_object, + STATE(119), 2, + sym_bool_lit, + sym_string_lit, + STATE(125), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(181), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [5151] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(77), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_identifier, + ACTIONS(81), 1, + anon_sym_LPAREN, + ACTIONS(83), 1, + sym_numeric_lit, + ACTIONS(87), 1, + sym_null_lit, + ACTIONS(89), 1, + anon_sym_LBRACK, + ACTIONS(93), 1, + sym__quoted_template_start, + STATE(3), 1, + sym__object_start, + STATE(113), 1, + sym_quoted_template, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(114), 2, + sym_tuple, + sym_object, + STATE(119), 2, + sym_bool_lit, + sym_string_lit, + STATE(125), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(177), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [5207] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(77), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_identifier, + ACTIONS(81), 1, + anon_sym_LPAREN, + ACTIONS(83), 1, + sym_numeric_lit, + ACTIONS(87), 1, + sym_null_lit, + ACTIONS(89), 1, + anon_sym_LBRACK, + ACTIONS(93), 1, + sym__quoted_template_start, + STATE(3), 1, + sym__object_start, + STATE(113), 1, + sym_quoted_template, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(114), 2, + sym_tuple, + sym_object, + STATE(119), 2, + sym_bool_lit, + sym_string_lit, + STATE(125), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(182), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [5263] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(77), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_identifier, + ACTIONS(81), 1, + anon_sym_LPAREN, + ACTIONS(83), 1, + sym_numeric_lit, + ACTIONS(87), 1, + sym_null_lit, + ACTIONS(89), 1, + anon_sym_LBRACK, + ACTIONS(93), 1, + sym__quoted_template_start, + STATE(3), 1, + sym__object_start, + STATE(113), 1, + sym_quoted_template, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(114), 2, + sym_tuple, + sym_object, + STATE(119), 2, + sym_bool_lit, + sym_string_lit, + STATE(125), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(183), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [5319] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(77), 1, + anon_sym_LBRACE, + ACTIONS(79), 1, + sym_identifier, + ACTIONS(81), 1, + anon_sym_LPAREN, + ACTIONS(83), 1, + sym_numeric_lit, + ACTIONS(87), 1, + sym_null_lit, + ACTIONS(89), 1, + anon_sym_LBRACK, + ACTIONS(93), 1, + sym__quoted_template_start, + STATE(3), 1, + sym__object_start, + STATE(113), 1, + sym_quoted_template, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(114), 2, + sym_tuple, + sym_object, + STATE(119), 2, + sym_bool_lit, + sym_string_lit, + STATE(125), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(178), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [5375] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(152), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [5431] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 1, + anon_sym_LBRACE, + ACTIONS(57), 1, + sym_identifier, + ACTIONS(59), 1, + anon_sym_LPAREN, + ACTIONS(61), 1, + sym_numeric_lit, + ACTIONS(65), 1, + sym_null_lit, + ACTIONS(67), 1, + anon_sym_LBRACK, + ACTIONS(73), 1, + sym__quoted_template_start, + STATE(2), 1, + sym__object_start, + STATE(153), 1, + sym_quoted_template, + ACTIONS(63), 2, + anon_sym_true, + anon_sym_false, + STATE(149), 2, + sym_tuple, + sym_object, + STATE(150), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(154), 2, + sym_bool_lit, + sym_string_lit, + STATE(190), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [5487] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(7), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + anon_sym_LPAREN, + ACTIONS(15), 1, + sym_numeric_lit, + ACTIONS(19), 1, + sym_null_lit, + ACTIONS(21), 1, + anon_sym_LBRACK, + ACTIONS(27), 1, + sym__quoted_template_start, + ACTIONS(33), 1, + sym_identifier, + STATE(4), 1, + sym__object_start, + STATE(73), 1, + sym_quoted_template, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + STATE(55), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(74), 2, + sym_tuple, + sym_object, + STATE(75), 2, + sym_bool_lit, + sym_string_lit, + STATE(145), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [5543] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 1, + anon_sym_LBRACE, + ACTIONS(57), 1, + sym_identifier, + ACTIONS(59), 1, + anon_sym_LPAREN, + ACTIONS(61), 1, + sym_numeric_lit, + ACTIONS(65), 1, + sym_null_lit, + ACTIONS(67), 1, + anon_sym_LBRACK, + ACTIONS(73), 1, + sym__quoted_template_start, + STATE(2), 1, + sym__object_start, + STATE(153), 1, + sym_quoted_template, + ACTIONS(63), 2, + anon_sym_true, + anon_sym_false, + STATE(149), 2, + sym_tuple, + sym_object, + STATE(150), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(154), 2, + sym_bool_lit, + sym_string_lit, + STATE(194), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [5599] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 1, + anon_sym_LBRACE, + ACTIONS(57), 1, + sym_identifier, + ACTIONS(59), 1, + anon_sym_LPAREN, + ACTIONS(61), 1, + sym_numeric_lit, + ACTIONS(65), 1, + sym_null_lit, + ACTIONS(67), 1, + anon_sym_LBRACK, + ACTIONS(73), 1, + sym__quoted_template_start, + STATE(2), 1, + sym__object_start, + STATE(153), 1, + sym_quoted_template, + ACTIONS(63), 2, + anon_sym_true, + anon_sym_false, + STATE(149), 2, + sym_tuple, + sym_object, + STATE(150), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(154), 2, + sym_bool_lit, + sym_string_lit, + STATE(192), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [5655] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(55), 1, + anon_sym_LBRACE, + ACTIONS(57), 1, + sym_identifier, + ACTIONS(59), 1, + anon_sym_LPAREN, + ACTIONS(61), 1, + sym_numeric_lit, + ACTIONS(65), 1, + sym_null_lit, + ACTIONS(67), 1, + anon_sym_LBRACK, + ACTIONS(73), 1, + sym__quoted_template_start, + STATE(2), 1, + sym__object_start, + STATE(153), 1, + sym_quoted_template, + ACTIONS(63), 2, + anon_sym_true, + anon_sym_false, + STATE(149), 2, + sym_tuple, + sym_object, + STATE(150), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(154), 2, + sym_bool_lit, + sym_string_lit, + STATE(195), 7, + sym__expr_term, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [5711] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(300), 1, + anon_sym_LBRACK, + ACTIONS(303), 1, anon_sym_DOT, - ACTIONS(93), 3, + ACTIONS(141), 3, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - STATE(69), 3, + STATE(103), 3, sym_index, sym_get_attr, aux_sym_full_splat_repeat1, - ACTIONS(91), 15, + ACTIONS(139), 15, anon_sym_RBRACE, anon_sym_RBRACK, anon_sym_STAR, @@ -5763,22 +7529,22 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3533] = 6, + [5748] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(278), 1, + ACTIONS(306), 1, anon_sym_LBRACK, - ACTIONS(281), 1, + ACTIONS(309), 1, anon_sym_DOT, - ACTIONS(103), 3, + ACTIONS(131), 3, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - STATE(70), 3, + STATE(103), 3, sym_index, sym_get_attr, aux_sym_full_splat_repeat1, - ACTIONS(101), 15, + ACTIONS(129), 15, anon_sym_RBRACE, anon_sym_RBRACK, anon_sym_STAR, @@ -5794,22 +7560,22 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3570] = 6, + [5785] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(284), 1, + ACTIONS(312), 1, anon_sym_LBRACK, - ACTIONS(287), 1, + ACTIONS(315), 1, anon_sym_DOT, - ACTIONS(113), 3, + ACTIONS(121), 3, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - STATE(70), 3, + STATE(102), 3, sym_index, sym_get_attr, aux_sym_full_splat_repeat1, - ACTIONS(111), 15, + ACTIONS(119), 15, anon_sym_RBRACE, anon_sym_RBRACK, anon_sym_STAR, @@ -5825,58 +7591,58 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3607] = 15, + [5822] = 14, ACTIONS(3), 1, sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, + ACTIONS(318), 1, anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(119), 1, - sym_expr_term, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [3661] = 5, + ACTIONS(320), 1, + anon_sym_DOT, + ACTIONS(326), 1, + anon_sym_SLASH, + ACTIONS(334), 1, + anon_sym_AMP_AMP, + ACTIONS(336), 1, + anon_sym_PIPE_PIPE, + ACTIONS(322), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(324), 2, + anon_sym_DASH, + anon_sym_PLUS, + ACTIONS(328), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(330), 2, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + STATE(166), 2, + sym_attr_splat, + sym_full_splat, + ACTIONS(95), 3, + sym__template_interpolation_end, + anon_sym_QMARK, + sym_strip_marker, + STATE(165), 3, + sym_index, + sym_get_attr, + sym_splat, + [5875] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(290), 1, + ACTIONS(338), 1, anon_sym_DOT, - STATE(73), 2, + STATE(107), 2, sym_get_attr, aux_sym_attr_splat_repeat1, - ACTIONS(137), 3, + ACTIONS(151), 3, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(135), 16, + ACTIONS(149), 16, anon_sym_RBRACE, anon_sym_LBRACK, anon_sym_RBRACK, @@ -5893,19 +7659,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3695] = 5, + [5909] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(293), 1, + ACTIONS(341), 1, anon_sym_DOT, - STATE(77), 2, + STATE(107), 2, sym_get_attr, aux_sym_attr_splat_repeat1, - ACTIONS(130), 3, + ACTIONS(171), 3, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(128), 16, + ACTIONS(169), 16, anon_sym_RBRACE, anon_sym_LBRACK, anon_sym_RBRACK, @@ -5922,799 +7688,44 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3729] = 15, + [5943] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(73), 1, - anon_sym_LBRACE, - ACTIONS(75), 1, - sym_identifier, - ACTIONS(77), 1, + ACTIONS(344), 1, anon_sym_LPAREN, - ACTIONS(79), 1, - sym_numeric_lit, - ACTIONS(83), 1, - sym_null_lit, - ACTIONS(85), 1, - anon_sym_LBRACK, - ACTIONS(89), 1, - anon_sym_DQUOTE, - STATE(91), 1, - sym_quoted_template, - STATE(96), 1, - sym_bool_lit, - STATE(123), 1, - sym_expr_term, - ACTIONS(81), 2, - anon_sym_true, - anon_sym_false, - STATE(92), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(93), 2, - sym_tuple, - sym_object, - STATE(94), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [3783] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(73), 1, - anon_sym_LBRACE, - ACTIONS(75), 1, - sym_identifier, - ACTIONS(77), 1, - anon_sym_LPAREN, - ACTIONS(79), 1, - sym_numeric_lit, - ACTIONS(83), 1, - sym_null_lit, - ACTIONS(85), 1, - anon_sym_LBRACK, - ACTIONS(89), 1, - anon_sym_DQUOTE, - STATE(91), 1, - sym_quoted_template, - STATE(96), 1, - sym_bool_lit, - STATE(126), 1, - sym_expr_term, - ACTIONS(81), 2, - anon_sym_true, - anon_sym_false, - STATE(92), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(93), 2, - sym_tuple, - sym_object, - STATE(94), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [3837] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(73), 1, - anon_sym_LBRACE, - ACTIONS(75), 1, - sym_identifier, - ACTIONS(77), 1, - anon_sym_LPAREN, - ACTIONS(79), 1, - sym_numeric_lit, - ACTIONS(83), 1, - sym_null_lit, - ACTIONS(85), 1, - anon_sym_LBRACK, - ACTIONS(89), 1, - anon_sym_DQUOTE, - STATE(91), 1, - sym_quoted_template, - STATE(96), 1, - sym_bool_lit, - STATE(125), 1, - sym_expr_term, - ACTIONS(81), 2, - anon_sym_true, - anon_sym_false, - STATE(92), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(93), 2, - sym_tuple, - sym_object, - STATE(94), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [3891] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(296), 1, + STATE(10), 1, + sym__function_call_start, + ACTIONS(165), 4, anon_sym_DOT, - STATE(77), 2, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(163), 16, + anon_sym_RBRACE, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_STAR, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [5977] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(346), 1, + anon_sym_DOT, + STATE(106), 2, sym_get_attr, aux_sym_attr_splat_repeat1, - ACTIONS(123), 3, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(121), 16, - anon_sym_RBRACE, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [3925] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(73), 1, - anon_sym_LBRACE, - ACTIONS(75), 1, - sym_identifier, - ACTIONS(77), 1, - anon_sym_LPAREN, - ACTIONS(79), 1, - sym_numeric_lit, - ACTIONS(83), 1, - sym_null_lit, - ACTIONS(85), 1, - anon_sym_LBRACK, - ACTIONS(89), 1, - anon_sym_DQUOTE, - STATE(91), 1, - sym_quoted_template, - STATE(96), 1, - sym_bool_lit, - STATE(124), 1, - sym_expr_term, - ACTIONS(81), 2, - anon_sym_true, - anon_sym_false, - STATE(92), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(93), 2, - sym_tuple, - sym_object, - STATE(94), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [3979] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(122), 1, - sym_expr_term, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [4033] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(121), 1, - sym_expr_term, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [4087] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(120), 1, - sym_expr_term, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [4141] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(73), 1, - anon_sym_LBRACE, - ACTIONS(75), 1, - sym_identifier, - ACTIONS(77), 1, - anon_sym_LPAREN, - ACTIONS(79), 1, - sym_numeric_lit, - ACTIONS(83), 1, - sym_null_lit, - ACTIONS(85), 1, - anon_sym_LBRACK, - ACTIONS(89), 1, - anon_sym_DQUOTE, - STATE(91), 1, - sym_quoted_template, - STATE(96), 1, - sym_bool_lit, - STATE(129), 1, - sym_expr_term, - ACTIONS(81), 2, - anon_sym_true, - anon_sym_false, - STATE(92), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(93), 2, - sym_tuple, - sym_object, - STATE(94), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [4195] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(118), 1, - sym_expr_term, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [4249] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(117), 1, - sym_expr_term, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [4303] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(19), 1, - sym_null_lit, - ACTIONS(21), 1, - anon_sym_LBRACK, - ACTIONS(27), 1, - anon_sym_DQUOTE, - ACTIONS(31), 1, - sym_identifier, - STATE(42), 1, - sym_quoted_template, - STATE(60), 1, - sym_bool_lit, - STATE(116), 1, - sym_expr_term, - ACTIONS(17), 2, - anon_sym_true, - anon_sym_false, - STATE(41), 2, - sym_tuple, - sym_object, - STATE(53), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(48), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [4357] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(73), 1, - anon_sym_LBRACE, - ACTIONS(75), 1, - sym_identifier, - ACTIONS(77), 1, - anon_sym_LPAREN, - ACTIONS(79), 1, - sym_numeric_lit, - ACTIONS(83), 1, - sym_null_lit, - ACTIONS(85), 1, - anon_sym_LBRACK, - ACTIONS(89), 1, - anon_sym_DQUOTE, - STATE(91), 1, - sym_quoted_template, - STATE(96), 1, - sym_bool_lit, - STATE(127), 1, - sym_expr_term, - ACTIONS(81), 2, - anon_sym_true, - anon_sym_false, - STATE(92), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(93), 2, - sym_tuple, - sym_object, - STATE(94), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [4411] = 15, - ACTIONS(3), 1, - sym_comment, - ACTIONS(73), 1, - anon_sym_LBRACE, - ACTIONS(75), 1, - sym_identifier, - ACTIONS(77), 1, - anon_sym_LPAREN, - ACTIONS(79), 1, - sym_numeric_lit, - ACTIONS(83), 1, - sym_null_lit, - ACTIONS(85), 1, - anon_sym_LBRACK, - ACTIONS(89), 1, - anon_sym_DQUOTE, - STATE(91), 1, - sym_quoted_template, - STATE(96), 1, - sym_bool_lit, - STATE(128), 1, - sym_expr_term, - ACTIONS(81), 2, - anon_sym_true, - anon_sym_false, - STATE(92), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(93), 2, - sym_tuple, - sym_object, - STATE(94), 6, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - sym_template_expr, - [4465] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(299), 1, - anon_sym_LPAREN, - ACTIONS(144), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(142), 16, - anon_sym_RBRACE, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [4496] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(242), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(240), 16, - anon_sym_RBRACE, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [4524] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(210), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(208), 16, - anon_sym_RBRACE, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [4552] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(154), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(152), 16, - anon_sym_RBRACE, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [4580] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(198), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(196), 16, - anon_sym_RBRACE, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [4608] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(150), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(148), 16, - anon_sym_RBRACE, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [4636] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(178), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(176), 16, - anon_sym_RBRACE, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [4664] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(166), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(164), 16, - anon_sym_RBRACE, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [4692] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(226), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(224), 16, - anon_sym_RBRACE, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [4720] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(194), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(192), 16, - anon_sym_RBRACE, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [4748] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(158), 4, - anon_sym_DOT, + ACTIONS(158), 3, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, @@ -6735,15 +7746,102 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4776] = 3, + [6011] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(190), 4, + ACTIONS(349), 1, + anon_sym_LBRACK, + ACTIONS(352), 1, + anon_sym_DOT, + ACTIONS(121), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + STATE(111), 3, + sym_index, + sym_get_attr, + aux_sym_full_splat_repeat1, + ACTIONS(119), 13, + sym__template_interpolation_end, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [6046] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(355), 1, + anon_sym_LBRACK, + ACTIONS(358), 1, + anon_sym_DOT, + ACTIONS(141), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + STATE(112), 3, + sym_index, + sym_get_attr, + aux_sym_full_splat_repeat1, + ACTIONS(139), 13, + sym__template_interpolation_end, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [6081] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(361), 1, + anon_sym_LBRACK, + ACTIONS(364), 1, + anon_sym_DOT, + ACTIONS(131), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + STATE(112), 3, + sym_index, + sym_get_attr, + aux_sym_full_splat_repeat1, + ACTIONS(129), 13, + sym__template_interpolation_end, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [6116] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(254), 4, anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(188), 16, + ACTIONS(252), 16, anon_sym_RBRACE, anon_sym_LBRACK, anon_sym_RBRACK, @@ -6760,15 +7858,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4804] = 3, + [6144] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(202), 4, + ACTIONS(258), 4, anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(200), 16, + ACTIONS(256), 16, anon_sym_RBRACE, anon_sym_LBRACK, anon_sym_RBRACK, @@ -6785,7 +7883,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4832] = 3, + [6172] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(234), 4, @@ -6810,15 +7908,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4860] = 3, + [6200] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(214), 4, + ACTIONS(274), 4, anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(212), 16, + ACTIONS(272), 16, anon_sym_RBRACE, anon_sym_LBRACK, anon_sym_RBRACK, @@ -6835,15 +7933,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4888] = 3, + [6228] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(162), 4, + ACTIONS(270), 4, anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(160), 16, + ACTIONS(268), 16, anon_sym_RBRACE, anon_sym_LBRACK, anon_sym_RBRACK, @@ -6860,15 +7958,42 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4916] = 3, + [6256] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(230), 4, + ACTIONS(367), 1, + anon_sym_DOT, + STATE(118), 2, + sym_get_attr, + aux_sym_attr_splat_repeat1, + ACTIONS(171), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(169), 14, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [6288] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(262), 4, anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(228), 16, + ACTIONS(260), 16, anon_sym_RBRACE, anon_sym_LBRACK, anon_sym_RBRACK, @@ -6885,7 +8010,140 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4944] = 3, + [6316] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(266), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(264), 16, + anon_sym_RBRACE, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_STAR, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [6344] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(370), 1, + anon_sym_DOT, + STATE(118), 2, + sym_get_attr, + aux_sym_attr_splat_repeat1, + ACTIONS(151), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(149), 14, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [6376] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(167), 1, + anon_sym_LPAREN, + ACTIONS(373), 1, + anon_sym_EQ, + ACTIONS(376), 1, + anon_sym_COLON, + STATE(6), 1, + sym__function_call_start, + ACTIONS(165), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(163), 13, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [6412] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(242), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(240), 16, + anon_sym_RBRACE, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_STAR, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [6440] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(379), 1, + anon_sym_DOT, + STATE(121), 2, + sym_get_attr, + aux_sym_attr_splat_repeat1, + ACTIONS(158), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(156), 14, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [6472] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(182), 4, @@ -6910,32 +8168,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4972] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(206), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(204), 16, - anon_sym_RBRACE, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [5000] = 3, + [6500] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(250), 4, @@ -6960,15 +8193,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [5028] = 3, + [6528] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(222), 4, + ACTIONS(190), 4, anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(220), 16, + ACTIONS(188), 16, anon_sym_RBRACE, anon_sym_LBRACK, anon_sym_RBRACK, @@ -6985,15 +8218,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [5056] = 3, + [6556] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(186), 4, + ACTIONS(194), 4, anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(184), 16, + ACTIONS(192), 16, anon_sym_RBRACE, anon_sym_LBRACK, anon_sym_RBRACK, @@ -7010,15 +8243,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [5084] = 3, + [6584] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(170), 4, + ACTIONS(198), 4, anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(168), 16, + ACTIONS(196), 16, anon_sym_RBRACE, anon_sym_LBRACK, anon_sym_RBRACK, @@ -7035,7 +8268,57 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [5112] = 3, + [6612] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(210), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(208), 16, + anon_sym_RBRACE, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_STAR, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [6640] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(230), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(228), 16, + anon_sym_RBRACE, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_STAR, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [6668] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(238), 4, @@ -7060,32 +8343,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [5140] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(174), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(172), 16, - anon_sym_RBRACE, - anon_sym_LBRACK, - anon_sym_RBRACK, - anon_sym_STAR, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - anon_sym_DASH, - anon_sym_PERCENT, - anon_sym_PLUS, - anon_sym_GT_EQ, - anon_sym_LT_EQ, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_AMP_AMP, - anon_sym_PIPE_PIPE, - [5168] = 3, + [6696] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(246), 4, @@ -7110,7 +8368,109 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [5196] = 3, + [6724] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(178), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(176), 16, + anon_sym_RBRACE, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_STAR, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [6752] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(382), 1, + anon_sym_LPAREN, + STATE(8), 1, + sym__function_call_start, + ACTIONS(165), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(163), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [6784] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(278), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(276), 16, + anon_sym_RBRACE, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_STAR, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [6812] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(226), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(224), 16, + anon_sym_RBRACE, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_STAR, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [6840] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(218), 4, @@ -7135,20 +8495,140 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [5224] = 6, + [6868] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(146), 1, - anon_sym_LPAREN, - ACTIONS(301), 1, - anon_sym_EQ, - ACTIONS(304), 1, - anon_sym_COLON, - ACTIONS(144), 3, + ACTIONS(214), 4, + anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(142), 13, + ACTIONS(212), 16, + anon_sym_RBRACE, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_STAR, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [6896] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(206), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(204), 16, + anon_sym_RBRACE, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_STAR, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [6924] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(202), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(200), 16, + anon_sym_RBRACE, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_STAR, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [6952] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(186), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(184), 16, + anon_sym_RBRACE, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_STAR, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [6980] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(222), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(220), 16, + anon_sym_RBRACE, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_STAR, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [7008] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(190), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(188), 15, + sym__template_interpolation_end, anon_sym_LBRACK, anon_sym_DOT, anon_sym_STAR, @@ -7162,23 +8642,24 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [5257] = 7, + sym_strip_marker, + [7034] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(41), 1, + ACTIONS(99), 1, anon_sym_LBRACK, - ACTIONS(43), 1, + ACTIONS(101), 1, anon_sym_DOT, - ACTIONS(309), 1, + ACTIONS(386), 1, anon_sym_EQ, - STATE(58), 2, + STATE(59), 2, sym_attr_splat, sym_full_splat, - STATE(57), 3, + STATE(58), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(307), 10, + ACTIONS(384), 10, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -7189,23 +8670,46 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ_GT, sym_ellipsis, anon_sym_QMARK, - [5291] = 7, + [7068] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(41), 1, + ACTIONS(234), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(232), 15, + sym__template_interpolation_end, anon_sym_LBRACK, - ACTIONS(43), 1, anon_sym_DOT, - ACTIONS(313), 1, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7094] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(99), 1, + anon_sym_LBRACK, + ACTIONS(101), 1, + anon_sym_DOT, + ACTIONS(390), 1, anon_sym_EQ, - STATE(58), 2, + STATE(59), 2, sym_attr_splat, sym_full_splat, - STATE(57), 3, + STATE(58), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(311), 10, + ACTIONS(388), 10, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -7216,23 +8720,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ_GT, sym_ellipsis, anon_sym_QMARK, - [5325] = 7, + [7128] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(41), 1, + ACTIONS(99), 1, anon_sym_LBRACK, - ACTIONS(43), 1, + ACTIONS(101), 1, anon_sym_DOT, - ACTIONS(313), 1, + ACTIONS(386), 1, anon_sym_EQ, - STATE(58), 2, + STATE(59), 2, sym_attr_splat, sym_full_splat, - STATE(57), 3, + STATE(58), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(311), 10, + ACTIONS(384), 10, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -7243,23 +8747,69 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ_GT, sym_ellipsis, anon_sym_QMARK, - [5359] = 7, + [7162] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(41), 1, + ACTIONS(258), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(256), 15, + sym__template_interpolation_end, anon_sym_LBRACK, - ACTIONS(43), 1, anon_sym_DOT, - ACTIONS(313), 1, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7188] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(182), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(180), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7214] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(99), 1, + anon_sym_LBRACK, + ACTIONS(101), 1, + anon_sym_DOT, + ACTIONS(386), 1, anon_sym_EQ, - STATE(58), 2, + STATE(59), 2, sym_attr_splat, sym_full_splat, - STATE(57), 3, + STATE(58), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(311), 10, + ACTIONS(384), 10, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -7270,23 +8820,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ_GT, sym_ellipsis, anon_sym_QMARK, - [5393] = 7, + [7248] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(41), 1, + ACTIONS(99), 1, anon_sym_LBRACK, - ACTIONS(43), 1, + ACTIONS(101), 1, anon_sym_DOT, - ACTIONS(313), 1, + ACTIONS(386), 1, anon_sym_EQ, - STATE(58), 2, + STATE(59), 2, sym_attr_splat, sym_full_splat, - STATE(57), 3, + STATE(58), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(311), 10, + ACTIONS(384), 10, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -7297,23 +8847,69 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ_GT, sym_ellipsis, anon_sym_QMARK, - [5427] = 7, + [7282] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(41), 1, + ACTIONS(254), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(252), 15, + sym__template_interpolation_end, anon_sym_LBRACK, - ACTIONS(43), 1, anon_sym_DOT, - ACTIONS(313), 1, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7308] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(262), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(260), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7334] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(99), 1, + anon_sym_LBRACK, + ACTIONS(101), 1, + anon_sym_DOT, + ACTIONS(386), 1, anon_sym_EQ, - STATE(58), 2, + STATE(59), 2, sym_attr_splat, sym_full_splat, - STATE(57), 3, + STATE(58), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(311), 10, + ACTIONS(384), 10, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -7324,23 +8920,46 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ_GT, sym_ellipsis, anon_sym_QMARK, - [5461] = 7, + [7368] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(41), 1, + ACTIONS(250), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(248), 15, + sym__template_interpolation_end, anon_sym_LBRACK, - ACTIONS(43), 1, anon_sym_DOT, - ACTIONS(313), 1, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7394] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(99), 1, + anon_sym_LBRACK, + ACTIONS(101), 1, + anon_sym_DOT, + ACTIONS(386), 1, anon_sym_EQ, - STATE(58), 2, + STATE(59), 2, sym_attr_splat, sym_full_splat, - STATE(57), 3, + STATE(58), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(311), 10, + ACTIONS(384), 10, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -7351,1462 +8970,2457 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ_GT, sym_ellipsis, anon_sym_QMARK, - [5495] = 6, + [7428] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(252), 1, + ACTIONS(242), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(240), 15, + sym__template_interpolation_end, anon_sym_LBRACK, - ACTIONS(254), 1, anon_sym_DOT, - STATE(114), 2, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7454] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(266), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(264), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7480] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(270), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(268), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7506] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(274), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(272), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7532] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(222), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(220), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7558] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(186), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(184), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7584] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(202), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(200), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7610] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(194), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(192), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7636] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(198), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(196), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7662] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(210), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(208), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7688] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(206), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(204), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7714] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(230), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(228), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7740] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(238), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(236), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7766] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(214), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(212), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7792] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(246), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(244), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7818] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(178), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(176), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7844] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(278), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(276), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7870] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(218), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(216), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7896] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(226), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(224), 15, + sym__template_interpolation_end, + anon_sym_LBRACK, + anon_sym_DOT, + anon_sym_STAR, + anon_sym_QMARK, + anon_sym_DASH, + anon_sym_PERCENT, + anon_sym_PLUS, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + sym_strip_marker, + [7922] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(280), 1, + anon_sym_LBRACK, + ACTIONS(282), 1, + anon_sym_DOT, + STATE(129), 2, sym_attr_splat, sym_full_splat, - STATE(102), 3, + STATE(128), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(311), 5, + ACTIONS(384), 5, anon_sym_RBRACE, anon_sym_RBRACK, anon_sym_if, sym_ellipsis, anon_sym_QMARK, - [5521] = 6, + [7948] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(252), 1, + ACTIONS(280), 1, anon_sym_LBRACK, - ACTIONS(254), 1, + ACTIONS(282), 1, anon_sym_DOT, - STATE(114), 2, + STATE(129), 2, sym_attr_splat, sym_full_splat, - STATE(102), 3, + STATE(128), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(311), 5, + ACTIONS(388), 5, anon_sym_RBRACE, anon_sym_RBRACK, anon_sym_if, sym_ellipsis, anon_sym_QMARK, - [5547] = 6, + [7974] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(252), 1, + ACTIONS(280), 1, anon_sym_LBRACK, - ACTIONS(254), 1, + ACTIONS(282), 1, anon_sym_DOT, - STATE(114), 2, + STATE(129), 2, sym_attr_splat, sym_full_splat, - STATE(102), 3, + STATE(128), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(311), 5, + ACTIONS(384), 5, anon_sym_RBRACE, anon_sym_RBRACK, anon_sym_if, sym_ellipsis, anon_sym_QMARK, - [5573] = 6, + [8000] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(252), 1, + ACTIONS(280), 1, anon_sym_LBRACK, - ACTIONS(254), 1, + ACTIONS(282), 1, anon_sym_DOT, - STATE(114), 2, + STATE(129), 2, sym_attr_splat, sym_full_splat, - STATE(102), 3, + STATE(128), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(311), 5, + ACTIONS(384), 5, anon_sym_RBRACE, anon_sym_RBRACK, anon_sym_if, sym_ellipsis, anon_sym_QMARK, - [5599] = 6, + [8026] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(252), 1, + ACTIONS(280), 1, anon_sym_LBRACK, - ACTIONS(254), 1, + ACTIONS(282), 1, anon_sym_DOT, - STATE(114), 2, + STATE(129), 2, sym_attr_splat, sym_full_splat, - STATE(102), 3, + STATE(128), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(307), 5, + ACTIONS(384), 5, anon_sym_RBRACE, anon_sym_RBRACK, anon_sym_if, sym_ellipsis, anon_sym_QMARK, - [5625] = 6, + [8052] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(252), 1, + ACTIONS(280), 1, anon_sym_LBRACK, - ACTIONS(254), 1, + ACTIONS(282), 1, anon_sym_DOT, - STATE(114), 2, + STATE(129), 2, sym_attr_splat, sym_full_splat, - STATE(102), 3, + STATE(128), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(311), 5, + ACTIONS(384), 5, anon_sym_RBRACE, anon_sym_RBRACK, anon_sym_if, sym_ellipsis, anon_sym_QMARK, - [5651] = 6, + [8078] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(252), 1, + ACTIONS(280), 1, anon_sym_LBRACK, - ACTIONS(254), 1, + ACTIONS(282), 1, anon_sym_DOT, - STATE(114), 2, + STATE(129), 2, sym_attr_splat, sym_full_splat, - STATE(102), 3, + STATE(128), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(311), 5, + ACTIONS(384), 5, anon_sym_RBRACE, anon_sym_RBRACK, anon_sym_if, sym_ellipsis, anon_sym_QMARK, - [5677] = 4, + [8104] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(317), 1, - anon_sym_EQ, - ACTIONS(319), 1, - anon_sym_QMARK, - ACTIONS(315), 9, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_COLON, - anon_sym_EQ_GT, - sym_ellipsis, - [5698] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(39), 1, - anon_sym_EQ, - ACTIONS(37), 10, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_COLON, - anon_sym_EQ_GT, - sym_ellipsis, - anon_sym_QMARK, - [5717] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(324), 4, + ACTIONS(394), 4, sym_identifier, anon_sym_true, anon_sym_false, sym_null_lit, - ACTIONS(322), 7, + ACTIONS(392), 7, + sym__quoted_template_start, anon_sym_LBRACE, anon_sym_LPAREN, sym_numeric_lit, anon_sym_LBRACK, anon_sym_DASH, anon_sym_BANG, - anon_sym_DQUOTE, - [5736] = 3, + [8123] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(328), 4, - sym_identifier, - anon_sym_true, - anon_sym_false, - sym_null_lit, - ACTIONS(326), 7, - anon_sym_LBRACE, - anon_sym_LPAREN, - sym_numeric_lit, - anon_sym_LBRACK, - anon_sym_DASH, - anon_sym_BANG, - anon_sym_DQUOTE, - [5755] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(332), 1, - anon_sym_EQ, - ACTIONS(330), 10, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - anon_sym_COLON, - anon_sym_EQ_GT, - sym_ellipsis, - anon_sym_QMARK, - [5774] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(334), 1, - anon_sym_DQUOTE, - ACTIONS(336), 1, - anon_sym_DOLLAR_LBRACE, - ACTIONS(338), 1, - anon_sym_DOLLAR_LBRACE_TILDE, - ACTIONS(340), 2, - sym__template_char, - sym_escape_sequence, - STATE(136), 2, - sym_template_interpolation, - aux_sym_quoted_template_repeat1, - [5795] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(342), 1, - anon_sym_DQUOTE, - ACTIONS(344), 1, - anon_sym_DOLLAR_LBRACE, - ACTIONS(347), 1, - anon_sym_DOLLAR_LBRACE_TILDE, - ACTIONS(350), 2, - sym__template_char, - sym_escape_sequence, - STATE(136), 2, - sym_template_interpolation, - aux_sym_quoted_template_repeat1, - [5816] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(336), 1, - anon_sym_DOLLAR_LBRACE, - ACTIONS(338), 1, - anon_sym_DOLLAR_LBRACE_TILDE, - ACTIONS(353), 1, - anon_sym_DQUOTE, - ACTIONS(355), 2, - sym__template_char, - sym_escape_sequence, - STATE(135), 2, - sym_template_interpolation, - aux_sym_quoted_template_repeat1, - [5837] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(336), 1, - anon_sym_DOLLAR_LBRACE, - ACTIONS(338), 1, - anon_sym_DOLLAR_LBRACE_TILDE, - ACTIONS(357), 1, - anon_sym_DQUOTE, - ACTIONS(340), 2, - sym__template_char, - sym_escape_sequence, - STATE(136), 2, - sym_template_interpolation, - aux_sym_quoted_template_repeat1, - [5858] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(336), 1, - anon_sym_DOLLAR_LBRACE, - ACTIONS(338), 1, - anon_sym_DOLLAR_LBRACE_TILDE, - ACTIONS(359), 1, - anon_sym_DQUOTE, - ACTIONS(361), 2, - sym__template_char, - sym_escape_sequence, - STATE(138), 2, - sym_template_interpolation, - aux_sym_quoted_template_repeat1, - [5879] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(5), 1, - sym_identifier, - ACTIONS(363), 1, - anon_sym_RBRACE, - STATE(211), 1, - sym_body, - STATE(143), 3, - sym_attribute, - sym_block, - aux_sym_body_repeat1, - [5897] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(367), 1, - sym_identifier, - ACTIONS(365), 2, - ts_builtin_sym_end, - anon_sym_RBRACE, - STATE(141), 3, - sym_attribute, - sym_block, - aux_sym_body_repeat1, - [5913] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(370), 1, - anon_sym_EQ, - ACTIONS(372), 1, - anon_sym_LBRACE, - ACTIONS(374), 1, - sym_identifier, - ACTIONS(376), 1, - anon_sym_DQUOTE, - STATE(149), 2, - sym_string_lit, - aux_sym_block_repeat1, - [5933] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(5), 1, - sym_identifier, - ACTIONS(378), 2, - ts_builtin_sym_end, - anon_sym_RBRACE, - STATE(141), 3, - sym_attribute, - sym_block, - aux_sym_body_repeat1, - [5949] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(5), 1, - sym_identifier, - ACTIONS(380), 1, - anon_sym_RBRACE, - STATE(219), 1, - sym_body, - STATE(143), 3, - sym_attribute, - sym_block, - aux_sym_body_repeat1, - [5967] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(384), 1, - anon_sym_COMMA, - STATE(145), 1, - aux_sym_tuple_repeat1, - ACTIONS(382), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - sym_ellipsis, - [5982] = 4, - ACTIONS(3), 1, - sym_comment, - STATE(146), 1, - aux_sym_template_interpolation_repeat1, - ACTIONS(387), 2, - anon_sym_RBRACE, - anon_sym_TILDE_RBRACE, - ACTIONS(389), 2, - sym__template_char_in_interpolation, - sym_escape_sequence, - [5997] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(37), 5, - anon_sym_RBRACE, - anon_sym_RBRACK, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - [6008] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(330), 5, - anon_sym_RBRACE, - anon_sym_RBRACK, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - [6019] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(376), 1, - anon_sym_DQUOTE, - ACTIONS(392), 1, - anon_sym_LBRACE, - ACTIONS(394), 1, - sym_identifier, - STATE(155), 2, - sym_string_lit, - aux_sym_block_repeat1, - [6036] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(396), 1, - anon_sym_RBRACE, ACTIONS(398), 1, - anon_sym_if, - ACTIONS(400), 1, - sym_ellipsis, - ACTIONS(402), 1, - anon_sym_QMARK, - STATE(212), 1, - sym_for_cond, - [6055] = 4, - ACTIONS(3), 1, - sym_comment, - STATE(159), 1, - aux_sym_template_interpolation_repeat1, - ACTIONS(404), 2, - anon_sym_RBRACE, - anon_sym_TILDE_RBRACE, - ACTIONS(406), 2, - sym__template_char_in_interpolation, - sym_escape_sequence, - [6070] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(408), 1, - anon_sym_QMARK, - ACTIONS(315), 4, + anon_sym_EQ, + ACTIONS(396), 10, + ts_builtin_sym_end, anon_sym_RBRACE, + sym_identifier, + anon_sym_RPAREN, + anon_sym_COMMA, anon_sym_RBRACK, - anon_sym_if, + anon_sym_COLON, + anon_sym_EQ_GT, sym_ellipsis, - [6083] = 6, + anon_sym_QMARK, + [8142] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(402), 1, + anon_sym_EQ, + ACTIONS(404), 1, + anon_sym_QMARK, + ACTIONS(400), 9, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_EQ_GT, + sym_ellipsis, + [8163] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(409), 4, + sym_identifier, + anon_sym_true, + anon_sym_false, + sym_null_lit, + ACTIONS(407), 7, + sym__quoted_template_start, + anon_sym_LBRACE, + anon_sym_LPAREN, + sym_numeric_lit, + anon_sym_LBRACK, + anon_sym_DASH, + anon_sym_BANG, + [8182] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(97), 1, + anon_sym_EQ, + ACTIONS(95), 10, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + anon_sym_RPAREN, + anon_sym_COMMA, + anon_sym_RBRACK, + anon_sym_COLON, + anon_sym_EQ_GT, + sym_ellipsis, + anon_sym_QMARK, + [8201] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(318), 1, + anon_sym_LBRACK, + ACTIONS(320), 1, + anon_sym_DOT, + STATE(166), 2, + sym_attr_splat, + sym_full_splat, + ACTIONS(384), 3, + sym__template_interpolation_end, + anon_sym_QMARK, + sym_strip_marker, + STATE(165), 3, + sym_index, + sym_get_attr, + sym_splat, + [8225] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(318), 1, + anon_sym_LBRACK, + ACTIONS(320), 1, + anon_sym_DOT, + STATE(166), 2, + sym_attr_splat, + sym_full_splat, + ACTIONS(384), 3, + sym__template_interpolation_end, + anon_sym_QMARK, + sym_strip_marker, + STATE(165), 3, + sym_index, + sym_get_attr, + sym_splat, + [8249] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(318), 1, + anon_sym_LBRACK, + ACTIONS(320), 1, + anon_sym_DOT, + STATE(166), 2, + sym_attr_splat, + sym_full_splat, + ACTIONS(384), 3, + sym__template_interpolation_end, + anon_sym_QMARK, + sym_strip_marker, + STATE(165), 3, + sym_index, + sym_get_attr, + sym_splat, + [8273] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(318), 1, + anon_sym_LBRACK, + ACTIONS(320), 1, + anon_sym_DOT, + STATE(166), 2, + sym_attr_splat, + sym_full_splat, + ACTIONS(388), 3, + sym__template_interpolation_end, + anon_sym_QMARK, + sym_strip_marker, + STATE(165), 3, + sym_index, + sym_get_attr, + sym_splat, + [8297] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(318), 1, + anon_sym_LBRACK, + ACTIONS(320), 1, + anon_sym_DOT, + STATE(166), 2, + sym_attr_splat, + sym_full_splat, + ACTIONS(384), 3, + sym__template_interpolation_end, + anon_sym_QMARK, + sym_strip_marker, + STATE(165), 3, + sym_index, + sym_get_attr, + sym_splat, + [8321] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(318), 1, + anon_sym_LBRACK, + ACTIONS(320), 1, + anon_sym_DOT, + STATE(166), 2, + sym_attr_splat, + sym_full_splat, + ACTIONS(384), 3, + sym__template_interpolation_end, + anon_sym_QMARK, + sym_strip_marker, + STATE(165), 3, + sym_index, + sym_get_attr, + sym_splat, + [8345] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(318), 1, + anon_sym_LBRACK, + ACTIONS(320), 1, + anon_sym_DOT, + STATE(166), 2, + sym_attr_splat, + sym_full_splat, + ACTIONS(384), 3, + sym__template_interpolation_end, + anon_sym_QMARK, + sym_strip_marker, + STATE(165), 3, + sym_index, + sym_get_attr, + sym_splat, + [8369] = 7, ACTIONS(3), 1, sym_comment, ACTIONS(411), 1, - anon_sym_RPAREN, + sym__quoted_template_end, ACTIONS(413), 1, - anon_sym_COMMA, + sym__template_literal_chunk, ACTIONS(415), 1, - sym_ellipsis, - ACTIONS(417), 1, - anon_sym_QMARK, - STATE(163), 1, - aux_sym_tuple_repeat1, - [6102] = 6, + sym__template_interpolation_start, + STATE(227), 1, + aux_sym_template_literal_repeat1, + STATE(247), 1, + sym_template_literal, + STATE(197), 3, + sym_template_interpolation, + sym_template_directive, + aux_sym_quoted_template_repeat1, + [8393] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(398), 1, - anon_sym_if, - ACTIONS(402), 1, - anon_sym_QMARK, + ACTIONS(413), 1, + sym__template_literal_chunk, + ACTIONS(415), 1, + sym__template_interpolation_start, + ACTIONS(417), 1, + sym__quoted_template_end, + STATE(227), 1, + aux_sym_template_literal_repeat1, + STATE(200), 4, + sym_template_literal, + sym_template_interpolation, + sym_template_directive, + aux_sym_quoted_template_repeat1, + [8415] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(413), 1, + sym__template_literal_chunk, + ACTIONS(415), 1, + sym__template_interpolation_start, ACTIONS(419), 1, - anon_sym_RBRACE, + sym__quoted_template_end, + STATE(227), 1, + aux_sym_template_literal_repeat1, + STATE(261), 1, + sym_template_literal, + STATE(201), 3, + sym_template_interpolation, + sym_template_directive, + aux_sym_quoted_template_repeat1, + [8439] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(413), 1, + sym__template_literal_chunk, + ACTIONS(415), 1, + sym__template_interpolation_start, ACTIONS(421), 1, - sym_ellipsis, - STATE(201), 1, - sym_for_cond, - [6121] = 5, + sym__quoted_template_end, + STATE(227), 1, + aux_sym_template_literal_repeat1, + STATE(200), 4, + sym_template_literal, + sym_template_interpolation, + sym_template_directive, + aux_sym_quoted_template_repeat1, + [8461] = 6, ACTIONS(3), 1, sym_comment, ACTIONS(423), 1, - anon_sym_LBRACE, + sym__quoted_template_end, ACTIONS(425), 1, - sym_identifier, + sym__template_literal_chunk, ACTIONS(428), 1, - anon_sym_DQUOTE, - STATE(155), 2, + sym__template_interpolation_start, + STATE(227), 1, + aux_sym_template_literal_repeat1, + STATE(200), 4, + sym_template_literal, + sym_template_interpolation, + sym_template_directive, + aux_sym_quoted_template_repeat1, + [8483] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(413), 1, + sym__template_literal_chunk, + ACTIONS(415), 1, + sym__template_interpolation_start, + ACTIONS(431), 1, + sym__quoted_template_end, + STATE(227), 1, + aux_sym_template_literal_repeat1, + STATE(200), 4, + sym_template_literal, + sym_template_interpolation, + sym_template_directive, + aux_sym_quoted_template_repeat1, + [8505] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(413), 1, + sym__template_literal_chunk, + ACTIONS(415), 1, + sym__template_interpolation_start, + ACTIONS(433), 1, + sym__quoted_template_end, + STATE(227), 1, + aux_sym_template_literal_repeat1, + STATE(259), 1, + sym_template_literal, + STATE(199), 3, + sym_template_interpolation, + sym_template_directive, + aux_sym_quoted_template_repeat1, + [8529] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(435), 1, + anon_sym_EQ, + ACTIONS(437), 1, + anon_sym_LBRACE, + ACTIONS(439), 1, + sym_identifier, + ACTIONS(441), 1, + sym__quoted_template_start, + STATE(205), 1, + sym__block_start, + STATE(211), 2, sym_string_lit, aux_sym_block_repeat1, - [6138] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, - anon_sym_QMARK, - ACTIONS(382), 4, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - sym_ellipsis, - [6151] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(433), 1, - anon_sym_DOLLAR_LBRACE, - ACTIONS(431), 4, - sym__template_char, - sym_escape_sequence, - anon_sym_DQUOTE, - anon_sym_DOLLAR_LBRACE_TILDE, - [6164] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(437), 1, - anon_sym_DOLLAR_LBRACE, - ACTIONS(435), 4, - sym__template_char, - sym_escape_sequence, - anon_sym_DQUOTE, - anon_sym_DOLLAR_LBRACE_TILDE, - [6177] = 4, - ACTIONS(3), 1, - sym_comment, - STATE(146), 1, - aux_sym_template_interpolation_repeat1, - ACTIONS(439), 2, - anon_sym_RBRACE, - anon_sym_TILDE_RBRACE, - ACTIONS(441), 2, - sym__template_char_in_interpolation, - sym_escape_sequence, - [6192] = 4, + [8552] = 6, ACTIONS(3), 1, sym_comment, + ACTIONS(5), 1, + sym_identifier, ACTIONS(443), 1, - anon_sym_DQUOTE, - STATE(168), 1, - aux_sym_string_lit_repeat1, - ACTIONS(445), 2, - sym__template_char, - sym_escape_sequence, - [6206] = 4, + anon_sym_RBRACE, + STATE(255), 1, + sym__block_end, + STATE(288), 1, + sym_body, + STATE(207), 3, + sym_attribute, + sym_block, + aux_sym_body_repeat1, + [8573] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_identifier, + ACTIONS(445), 1, + anon_sym_RBRACE, + STATE(248), 1, + sym__block_end, + STATE(285), 1, + sym_body, + STATE(207), 3, + sym_attribute, + sym_block, + aux_sym_body_repeat1, + [8594] = 7, ACTIONS(3), 1, sym_comment, ACTIONS(447), 1, - anon_sym_DQUOTE, - STATE(161), 1, - aux_sym_string_lit_repeat1, - ACTIONS(449), 2, - sym__template_char, - sym_escape_sequence, - [6220] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(398), 1, + anon_sym_RBRACE, + ACTIONS(449), 1, anon_sym_if, - ACTIONS(402), 1, - anon_sym_QMARK, - ACTIONS(452), 1, - anon_sym_RBRACK, - STATE(203), 1, - sym_for_cond, - [6236] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(65), 1, - anon_sym_RPAREN, - ACTIONS(454), 1, - anon_sym_COMMA, - ACTIONS(456), 1, + ACTIONS(451), 1, sym_ellipsis, - STATE(145), 1, - aux_sym_tuple_repeat1, - [6252] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, + ACTIONS(453), 1, anon_sym_QMARK, - ACTIONS(458), 3, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - [6264] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, - anon_sym_QMARK, - ACTIONS(460), 1, - anon_sym_COMMA, - ACTIONS(462), 1, - anon_sym_RBRACK, - STATE(177), 1, - aux_sym_tuple_repeat1, - [6280] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(398), 1, - anon_sym_if, - ACTIONS(402), 1, - anon_sym_QMARK, - ACTIONS(464), 1, - anon_sym_RBRACK, - STATE(208), 1, + STATE(116), 1, + sym__object_end, + STATE(269), 1, sym_for_cond, - [6296] = 5, + [8616] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(417), 1, + ACTIONS(5), 1, + sym_identifier, + ACTIONS(455), 2, + ts_builtin_sym_end, + anon_sym_RBRACE, + STATE(210), 3, + sym_attribute, + sym_block, + aux_sym_body_repeat1, + [8632] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(449), 1, + anon_sym_if, + ACTIONS(453), 1, anon_sym_QMARK, - ACTIONS(460), 1, - anon_sym_COMMA, - ACTIONS(466), 1, - anon_sym_RBRACK, - STATE(170), 1, - aux_sym_tuple_repeat1, - [6312] = 4, + ACTIONS(457), 1, + anon_sym_RBRACE, + ACTIONS(459), 1, + sym_ellipsis, + STATE(78), 1, + sym__object_end, + STATE(282), 1, + sym_for_cond, + [8654] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(468), 1, - anon_sym_DQUOTE, + ACTIONS(449), 1, + anon_sym_if, + ACTIONS(453), 1, + anon_sym_QMARK, + ACTIONS(461), 1, + anon_sym_RBRACE, + ACTIONS(463), 1, + sym_ellipsis, STATE(161), 1, - aux_sym_string_lit_repeat1, - ACTIONS(470), 2, - sym__template_char, - sym_escape_sequence, - [6326] = 2, + sym__object_end, + STATE(268), 1, + sym_for_cond, + [8676] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(472), 3, + ACTIONS(467), 1, + sym_identifier, + ACTIONS(465), 2, ts_builtin_sym_end, anon_sym_RBRACE, - sym_identifier, - [6335] = 4, + STATE(210), 3, + sym_attribute, + sym_block, + aux_sym_body_repeat1, + [8692] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(441), 1, + sym__quoted_template_start, + ACTIONS(470), 1, + anon_sym_LBRACE, + ACTIONS(472), 1, + sym_identifier, + STATE(204), 1, + sym__block_start, + STATE(218), 2, + sym_string_lit, + aux_sym_block_repeat1, + [8712] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(460), 1, - anon_sym_COMMA, ACTIONS(474), 1, - anon_sym_RBRACK, - STATE(145), 1, - aux_sym_tuple_repeat1, - [6348] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(476), 3, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - [6357] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, - anon_sym_QMARK, - ACTIONS(478), 2, - anon_sym_RBRACE, + anon_sym_RPAREN, + ACTIONS(476), 1, anon_sym_COMMA, - [6368] = 4, + ACTIONS(478), 1, + sym_ellipsis, + ACTIONS(480), 1, + anon_sym_QMARK, + STATE(225), 1, + aux_sym_tuple_repeat1, + [8731] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(482), 1, + anon_sym_QMARK, + ACTIONS(400), 4, + anon_sym_RBRACE, + anon_sym_RBRACK, + anon_sym_if, + sym_ellipsis, + [8744] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(487), 1, + anon_sym_COMMA, + STATE(214), 1, + aux_sym_tuple_repeat1, + ACTIONS(485), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + sym_ellipsis, + [8759] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(480), 1, - anon_sym_RBRACE, - ACTIONS(482), 1, + anon_sym_QMARK, + ACTIONS(485), 4, + anon_sym_RPAREN, anon_sym_COMMA, - STATE(184), 1, - aux_sym_object_repeat1, - [6381] = 4, + anon_sym_RBRACK, + sym_ellipsis, + [8772] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(398), 1, + ACTIONS(95), 5, + anon_sym_RBRACE, + anon_sym_RBRACK, anon_sym_if, - ACTIONS(484), 1, - anon_sym_RBRACE, - STATE(213), 1, - sym_for_cond, - [6394] = 4, + sym_ellipsis, + anon_sym_QMARK, + [8783] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(486), 1, + ACTIONS(396), 5, anon_sym_RBRACE, - ACTIONS(488), 1, + anon_sym_RBRACK, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + [8794] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(490), 1, + anon_sym_LBRACE, + ACTIONS(492), 1, + sym_identifier, + ACTIONS(495), 1, + sym__quoted_template_start, + STATE(218), 2, + sym_string_lit, + aux_sym_block_repeat1, + [8811] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(498), 1, + anon_sym_RBRACE, + ACTIONS(500), 1, anon_sym_COMMA, - STATE(175), 1, + STATE(142), 1, + sym__object_end, + STATE(251), 1, aux_sym_object_repeat1, - [6407] = 2, + [8827] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(491), 3, + ACTIONS(449), 1, + anon_sym_if, + ACTIONS(453), 1, + anon_sym_QMARK, + ACTIONS(502), 1, + anon_sym_RBRACK, + STATE(299), 1, + sym_for_cond, + [8843] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(500), 1, + anon_sym_COMMA, + ACTIONS(504), 1, + anon_sym_RBRACE, + STATE(176), 1, + sym__object_end, + STATE(237), 1, + aux_sym_object_repeat1, + [8859] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(506), 3, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, - [6416] = 4, + [8871] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(460), 1, - anon_sym_COMMA, - ACTIONS(493), 1, - anon_sym_RBRACK, - STATE(145), 1, - aux_sym_tuple_repeat1, - [6429] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(495), 3, - anon_sym_LBRACE, - sym_identifier, - anon_sym_DQUOTE, - [6438] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(482), 1, - anon_sym_COMMA, - ACTIONS(497), 1, - anon_sym_RBRACE, - STATE(175), 1, - aux_sym_object_repeat1, - [6451] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(482), 1, - anon_sym_COMMA, - ACTIONS(499), 1, - anon_sym_RBRACE, - STATE(179), 1, - aux_sym_object_repeat1, - [6464] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(398), 1, + ACTIONS(449), 1, anon_sym_if, - ACTIONS(501), 1, - anon_sym_RBRACE, - STATE(204), 1, + ACTIONS(453), 1, + anon_sym_QMARK, + ACTIONS(508), 1, + anon_sym_RBRACK, + STATE(297), 1, sym_for_cond, - [6477] = 3, + [8887] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(417), 1, + ACTIONS(480), 1, anon_sym_QMARK, - ACTIONS(503), 2, - anon_sym_EQ, - anon_sym_COLON, - [6488] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(505), 3, - anon_sym_LBRACE, - sym_identifier, - anon_sym_DQUOTE, - [6497] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(482), 1, + ACTIONS(510), 1, anon_sym_COMMA, - ACTIONS(507), 1, + ACTIONS(512), 1, + anon_sym_RBRACK, + STATE(245), 1, + aux_sym_tuple_repeat1, + [8903] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(47), 1, + anon_sym_RPAREN, + ACTIONS(514), 1, + anon_sym_COMMA, + ACTIONS(516), 1, + sym_ellipsis, + STATE(214), 1, + aux_sym_tuple_repeat1, + [8919] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(449), 1, + anon_sym_if, + ACTIONS(518), 1, anon_sym_RBRACE, - STATE(175), 1, + STATE(77), 1, + sym__object_end, + STATE(263), 1, + sym_for_cond, + [8935] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(522), 1, + sym__template_literal_chunk, + STATE(233), 1, + aux_sym_template_literal_repeat1, + ACTIONS(520), 2, + sym__quoted_template_end, + sym__template_interpolation_start, + [8949] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(449), 1, + anon_sym_if, + ACTIONS(453), 1, + anon_sym_QMARK, + ACTIONS(524), 1, + anon_sym_RBRACK, + STATE(307), 1, + sym_for_cond, + [8965] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(510), 1, + anon_sym_COMMA, + ACTIONS(526), 1, + anon_sym_RBRACK, + STATE(253), 1, + aux_sym_tuple_repeat1, + [8981] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(449), 1, + anon_sym_if, + ACTIONS(528), 1, + anon_sym_RBRACE, + STATE(160), 1, + sym__object_end, + STATE(267), 1, + sym_for_cond, + [8997] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(510), 1, + anon_sym_COMMA, + ACTIONS(530), 1, + anon_sym_RBRACK, + STATE(238), 1, + aux_sym_tuple_repeat1, + [9013] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(500), 1, + anon_sym_COMMA, + ACTIONS(532), 1, + anon_sym_RBRACE, + STATE(56), 1, + sym__object_end, + STATE(251), 1, aux_sym_object_repeat1, - [6510] = 3, + [9029] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(417), 1, - anon_sym_QMARK, - ACTIONS(509), 2, - anon_sym_RBRACE, - anon_sym_RBRACK, - [6521] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, - anon_sym_QMARK, - ACTIONS(511), 1, - anon_sym_COLON, - [6531] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(513), 1, - sym_identifier, - ACTIONS(515), 1, - anon_sym_STAR, - [6541] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(517), 1, - anon_sym_COMMA, - ACTIONS(519), 1, - anon_sym_in, - [6551] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, - anon_sym_QMARK, - ACTIONS(521), 1, - anon_sym_EQ_GT, - [6561] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, - anon_sym_QMARK, - ACTIONS(523), 1, - anon_sym_EQ_GT, - [6571] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, - anon_sym_QMARK, - ACTIONS(525), 1, - anon_sym_RBRACK, - [6581] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, - anon_sym_QMARK, - ACTIONS(527), 1, - anon_sym_RPAREN, - [6591] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, - anon_sym_QMARK, - ACTIONS(529), 1, - anon_sym_COLON, - [6601] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(486), 2, - anon_sym_RBRACE, - anon_sym_COMMA, - [6609] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, - anon_sym_QMARK, - ACTIONS(531), 1, - anon_sym_RBRACK, - [6619] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, - anon_sym_QMARK, - ACTIONS(533), 1, - anon_sym_COLON, - [6629] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, - anon_sym_QMARK, - ACTIONS(535), 1, - anon_sym_RPAREN, - [6639] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(417), 1, - anon_sym_QMARK, - ACTIONS(537), 1, - anon_sym_COLON, - [6649] = 3, + ACTIONS(536), 1, + sym__template_literal_chunk, + STATE(233), 1, + aux_sym_template_literal_repeat1, + ACTIONS(534), 2, + sym__quoted_template_end, + sym__template_interpolation_start, + [9043] = 5, ACTIONS(3), 1, sym_comment, + ACTIONS(449), 1, + anon_sym_if, ACTIONS(539), 1, - sym_identifier, - ACTIONS(541), 1, - anon_sym_STAR, - [6659] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(543), 1, - sym_identifier, - [6666] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(501), 1, anon_sym_RBRACE, - [6673] = 2, + STATE(117), 1, + sym__object_end, + STATE(271), 1, + sym_for_cond, + [9059] = 5, ACTIONS(3), 1, sym_comment, + ACTIONS(500), 1, + anon_sym_COMMA, + ACTIONS(541), 1, + anon_sym_RBRACE, + STATE(137), 1, + sym__object_end, + STATE(219), 1, + aux_sym_object_repeat1, + [9075] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(500), 1, + anon_sym_COMMA, + ACTIONS(543), 1, + anon_sym_RBRACE, + STATE(66), 1, + sym__object_end, + STATE(232), 1, + aux_sym_object_repeat1, + [9091] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(500), 1, + anon_sym_COMMA, ACTIONS(545), 1, - anon_sym_RPAREN, - [6680] = 2, + anon_sym_RBRACE, + STATE(163), 1, + sym__object_end, + STATE(251), 1, + aux_sym_object_repeat1, + [9107] = 4, ACTIONS(3), 1, sym_comment, + ACTIONS(510), 1, + anon_sym_COMMA, ACTIONS(547), 1, anon_sym_RBRACK, - [6687] = 2, + STATE(214), 1, + aux_sym_tuple_repeat1, + [9120] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(240), 3, + sym__quoted_template_start, + anon_sym_LBRACE, + sym_identifier, + [9129] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(549), 1, + sym__template_literal_chunk, + STATE(244), 1, + aux_sym_template_literal_repeat1, + STATE(302), 1, + sym_template_literal, + [9142] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(396), 3, + sym__template_interpolation_end, + anon_sym_QMARK, + sym_strip_marker, + [9151] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(95), 3, + sym__template_interpolation_end, + anon_sym_QMARK, + sym_strip_marker, + [9160] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(551), 2, anon_sym_RBRACE, - [6694] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(513), 1, - sym_identifier, - [6701] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(551), 1, anon_sym_RBRACK, - [6708] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(539), 1, - sym_identifier, - [6715] = 2, + [9171] = 4, ACTIONS(3), 1, sym_comment, + ACTIONS(520), 1, + sym__quoted_template_end, ACTIONS(553), 1, - anon_sym_RBRACK, - [6722] = 2, + sym__template_literal_chunk, + STATE(260), 1, + aux_sym_template_literal_repeat1, + [9184] = 4, ACTIONS(3), 1, sym_comment, + ACTIONS(510), 1, + anon_sym_COMMA, ACTIONS(555), 1, - anon_sym_in, - [6729] = 2, + anon_sym_RBRACK, + STATE(214), 1, + aux_sym_tuple_repeat1, + [9197] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(65), 1, - anon_sym_RPAREN, - [6736] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(557), 1, - anon_sym_RBRACE, - [6743] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(484), 1, - anon_sym_RBRACE, - [6750] = 2, + ACTIONS(557), 3, + sym__quoted_template_end, + sym__template_literal_chunk, + sym__template_interpolation_start, + [9206] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(559), 1, - anon_sym_RBRACE, - [6757] = 2, + sym__quoted_template_end, + ACTIONS(562), 2, + sym__template_literal_chunk, + sym__template_interpolation_start, + [9217] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(561), 1, - sym_identifier, - [6764] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(69), 1, - anon_sym_RPAREN, - [6771] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(563), 1, - anon_sym_RPAREN, - [6778] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(565), 1, - anon_sym_RBRACK, - [6785] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(567), 1, + ACTIONS(564), 3, ts_builtin_sym_end, - [6792] = 2, + anon_sym_RBRACE, + sym_identifier, + [9226] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(363), 1, - anon_sym_RBRACE, - [6799] = 2, + ACTIONS(566), 1, + anon_sym_QMARK, + ACTIONS(400), 2, + sym__template_interpolation_end, + sym_strip_marker, + [9237] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(569), 1, + anon_sym_QMARK, + ACTIONS(571), 1, + sym_strip_marker, + ACTIONS(573), 1, + sym__template_interpolation_end, + [9250] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(575), 1, + anon_sym_RBRACE, + ACTIONS(577), 1, + anon_sym_COMMA, + STATE(251), 1, + aux_sym_object_repeat1, + [9263] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(569), 1, + anon_sym_QMARK, + ACTIONS(580), 1, + sym_strip_marker, + ACTIONS(582), 1, + sym__template_interpolation_end, + [9276] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(510), 1, + anon_sym_COMMA, + ACTIONS(584), 1, + anon_sym_RBRACK, + STATE(214), 1, + aux_sym_tuple_repeat1, + [9289] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(586), 3, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + [9298] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(588), 3, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + [9307] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(590), 3, + sym__quoted_template_end, + sym__template_literal_chunk, + sym__template_interpolation_start, + [9316] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(592), 2, + anon_sym_EQ, + anon_sym_COLON, + [9327] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(594), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [9338] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(596), 1, + sym__quoted_template_end, + ACTIONS(562), 2, + sym__template_literal_chunk, + sym__template_interpolation_start, + [9349] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(534), 1, + sym__quoted_template_end, + ACTIONS(599), 1, + sym__template_literal_chunk, + STATE(260), 1, + aux_sym_template_literal_repeat1, + [9362] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(602), 1, + sym__quoted_template_end, + ACTIONS(562), 2, + sym__template_literal_chunk, + sym__template_interpolation_start, + [9373] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(605), 3, + sym__quoted_template_end, + sym__template_literal_chunk, + sym__template_interpolation_start, + [9382] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(607), 1, + anon_sym_RBRACE, + STATE(76), 1, + sym__object_end, + [9392] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(609), 1, + anon_sym_RPAREN, + STATE(138), 1, + sym__function_call_end, + [9402] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(611), 1, + anon_sym_EQ_GT, + [9412] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(613), 1, + sym_identifier, + ACTIONS(615), 1, + anon_sym_STAR, + [9422] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(617), 1, + anon_sym_RBRACE, + STATE(159), 1, + sym__object_end, + [9432] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(528), 1, + anon_sym_RBRACE, + STATE(160), 1, + sym__object_end, + [9442] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(539), 1, + anon_sym_RBRACE, + STATE(117), 1, + sym__object_end, + [9452] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(619), 1, + anon_sym_EQ_GT, + [9462] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(621), 1, + anon_sym_RBRACE, + STATE(120), 1, + sym__object_end, + [9472] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(623), 1, + anon_sym_RPAREN, + [9482] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(625), 1, + anon_sym_RPAREN, + [9492] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(627), 1, + sym_identifier, + ACTIONS(629), 1, + anon_sym_STAR, + [9502] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(631), 1, + anon_sym_COLON, + [9512] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(633), 1, + anon_sym_RPAREN, + STATE(175), 1, + sym__function_call_end, + [9522] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(635), 1, + anon_sym_COLON, + [9532] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(637), 1, + anon_sym_RBRACK, + [9542] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(639), 1, + anon_sym_RBRACK, + [9552] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(641), 1, + anon_sym_COLON, + [9562] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(643), 1, + anon_sym_EQ_GT, + [9572] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(518), 1, + anon_sym_RBRACE, + STATE(77), 1, + sym__object_end, + [9582] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(645), 1, + anon_sym_RPAREN, + STATE(64), 1, + sym__function_call_end, + [9592] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(647), 1, + anon_sym_COMMA, + ACTIONS(649), 1, + anon_sym_in, + [9602] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(443), 1, + anon_sym_RBRACE, + STATE(255), 1, + sym__block_end, + [9612] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(575), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [9620] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(651), 1, + anon_sym_COLON, + [9630] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(653), 1, + anon_sym_RBRACE, + STATE(254), 1, + sym__block_end, + [9640] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(655), 1, + anon_sym_RPAREN, + [9650] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(657), 1, + sym_identifier, + ACTIONS(659), 1, + anon_sym_STAR, + [9660] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(661), 1, + anon_sym_COLON, + [9670] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(480), 1, + anon_sym_QMARK, + ACTIONS(663), 1, + anon_sym_RBRACK, + [9680] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(573), 1, + sym__template_interpolation_end, + [9687] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(47), 1, + anon_sym_RPAREN, + [9694] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(665), 1, + anon_sym_RBRACK, + [9701] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(667), 1, + anon_sym_RBRACK, + [9708] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(669), 1, + anon_sym_RBRACK, + [9715] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(671), 1, + anon_sym_in, + [9722] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(673), 1, + anon_sym_RBRACK, + [9729] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(627), 1, + sym_identifier, + [9736] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(675), 1, + sym_identifier, + [9743] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(677), 1, + sym__quoted_template_end, + [9750] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(679), 1, + sym_identifier, + [9757] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(53), 1, + anon_sym_RPAREN, + [9764] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(681), 1, + sym__template_interpolation_end, + [9771] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(613), 1, + sym_identifier, + [9778] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(683), 1, + anon_sym_RBRACK, + [9785] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(685), 1, + anon_sym_RBRACK, + [9792] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(657), 1, + sym_identifier, + [9799] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(687), 1, + ts_builtin_sym_end, + [9806] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(689), 1, ts_builtin_sym_end, }; static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(2)] = 0, - [SMALL_STATE(3)] = 81, - [SMALL_STATE(4)] = 162, - [SMALL_STATE(5)] = 240, - [SMALL_STATE(6)] = 318, - [SMALL_STATE(7)] = 381, - [SMALL_STATE(8)] = 456, - [SMALL_STATE(9)] = 531, - [SMALL_STATE(10)] = 603, - [SMALL_STATE(11)] = 675, - [SMALL_STATE(12)] = 747, - [SMALL_STATE(13)] = 819, - [SMALL_STATE(14)] = 891, - [SMALL_STATE(15)] = 960, - [SMALL_STATE(16)] = 1029, - [SMALL_STATE(17)] = 1098, - [SMALL_STATE(18)] = 1167, - [SMALL_STATE(19)] = 1236, - [SMALL_STATE(20)] = 1305, - [SMALL_STATE(21)] = 1374, - [SMALL_STATE(22)] = 1443, - [SMALL_STATE(23)] = 1512, - [SMALL_STATE(24)] = 1581, - [SMALL_STATE(25)] = 1624, - [SMALL_STATE(26)] = 1693, - [SMALL_STATE(27)] = 1762, - [SMALL_STATE(28)] = 1831, - [SMALL_STATE(29)] = 1900, - [SMALL_STATE(30)] = 1943, - [SMALL_STATE(31)] = 2012, - [SMALL_STATE(32)] = 2081, - [SMALL_STATE(33)] = 2150, - [SMALL_STATE(34)] = 2219, - [SMALL_STATE(35)] = 2288, - [SMALL_STATE(36)] = 2357, - [SMALL_STATE(37)] = 2400, - [SMALL_STATE(38)] = 2440, - [SMALL_STATE(39)] = 2480, - [SMALL_STATE(40)] = 2520, - [SMALL_STATE(41)] = 2557, - [SMALL_STATE(42)] = 2591, - [SMALL_STATE(43)] = 2625, - [SMALL_STATE(44)] = 2659, - [SMALL_STATE(45)] = 2693, - [SMALL_STATE(46)] = 2727, - [SMALL_STATE(47)] = 2761, - [SMALL_STATE(48)] = 2795, - [SMALL_STATE(49)] = 2829, - [SMALL_STATE(50)] = 2863, - [SMALL_STATE(51)] = 2897, - [SMALL_STATE(52)] = 2931, - [SMALL_STATE(53)] = 2965, - [SMALL_STATE(54)] = 2999, - [SMALL_STATE(55)] = 3033, - [SMALL_STATE(56)] = 3067, - [SMALL_STATE(57)] = 3101, - [SMALL_STATE(58)] = 3135, - [SMALL_STATE(59)] = 3169, - [SMALL_STATE(60)] = 3203, - [SMALL_STATE(61)] = 3237, - [SMALL_STATE(62)] = 3271, - [SMALL_STATE(63)] = 3305, - [SMALL_STATE(64)] = 3339, - [SMALL_STATE(65)] = 3373, - [SMALL_STATE(66)] = 3407, - [SMALL_STATE(67)] = 3441, - [SMALL_STATE(68)] = 3496, - [SMALL_STATE(69)] = 3533, - [SMALL_STATE(70)] = 3570, - [SMALL_STATE(71)] = 3607, - [SMALL_STATE(72)] = 3661, - [SMALL_STATE(73)] = 3695, - [SMALL_STATE(74)] = 3729, - [SMALL_STATE(75)] = 3783, - [SMALL_STATE(76)] = 3837, - [SMALL_STATE(77)] = 3891, - [SMALL_STATE(78)] = 3925, - [SMALL_STATE(79)] = 3979, - [SMALL_STATE(80)] = 4033, - [SMALL_STATE(81)] = 4087, - [SMALL_STATE(82)] = 4141, - [SMALL_STATE(83)] = 4195, - [SMALL_STATE(84)] = 4249, - [SMALL_STATE(85)] = 4303, - [SMALL_STATE(86)] = 4357, - [SMALL_STATE(87)] = 4411, - [SMALL_STATE(88)] = 4465, - [SMALL_STATE(89)] = 4496, - [SMALL_STATE(90)] = 4524, - [SMALL_STATE(91)] = 4552, - [SMALL_STATE(92)] = 4580, - [SMALL_STATE(93)] = 4608, - [SMALL_STATE(94)] = 4636, - [SMALL_STATE(95)] = 4664, - [SMALL_STATE(96)] = 4692, - [SMALL_STATE(97)] = 4720, - [SMALL_STATE(98)] = 4748, - [SMALL_STATE(99)] = 4776, - [SMALL_STATE(100)] = 4804, - [SMALL_STATE(101)] = 4832, - [SMALL_STATE(102)] = 4860, - [SMALL_STATE(103)] = 4888, - [SMALL_STATE(104)] = 4916, - [SMALL_STATE(105)] = 4944, - [SMALL_STATE(106)] = 4972, - [SMALL_STATE(107)] = 5000, - [SMALL_STATE(108)] = 5028, - [SMALL_STATE(109)] = 5056, - [SMALL_STATE(110)] = 5084, - [SMALL_STATE(111)] = 5112, - [SMALL_STATE(112)] = 5140, - [SMALL_STATE(113)] = 5168, - [SMALL_STATE(114)] = 5196, - [SMALL_STATE(115)] = 5224, - [SMALL_STATE(116)] = 5257, - [SMALL_STATE(117)] = 5291, - [SMALL_STATE(118)] = 5325, - [SMALL_STATE(119)] = 5359, - [SMALL_STATE(120)] = 5393, - [SMALL_STATE(121)] = 5427, - [SMALL_STATE(122)] = 5461, - [SMALL_STATE(123)] = 5495, - [SMALL_STATE(124)] = 5521, - [SMALL_STATE(125)] = 5547, - [SMALL_STATE(126)] = 5573, - [SMALL_STATE(127)] = 5599, - [SMALL_STATE(128)] = 5625, - [SMALL_STATE(129)] = 5651, - [SMALL_STATE(130)] = 5677, - [SMALL_STATE(131)] = 5698, - [SMALL_STATE(132)] = 5717, - [SMALL_STATE(133)] = 5736, - [SMALL_STATE(134)] = 5755, - [SMALL_STATE(135)] = 5774, - [SMALL_STATE(136)] = 5795, - [SMALL_STATE(137)] = 5816, - [SMALL_STATE(138)] = 5837, - [SMALL_STATE(139)] = 5858, - [SMALL_STATE(140)] = 5879, - [SMALL_STATE(141)] = 5897, - [SMALL_STATE(142)] = 5913, - [SMALL_STATE(143)] = 5933, - [SMALL_STATE(144)] = 5949, - [SMALL_STATE(145)] = 5967, - [SMALL_STATE(146)] = 5982, - [SMALL_STATE(147)] = 5997, - [SMALL_STATE(148)] = 6008, - [SMALL_STATE(149)] = 6019, - [SMALL_STATE(150)] = 6036, - [SMALL_STATE(151)] = 6055, - [SMALL_STATE(152)] = 6070, - [SMALL_STATE(153)] = 6083, - [SMALL_STATE(154)] = 6102, - [SMALL_STATE(155)] = 6121, - [SMALL_STATE(156)] = 6138, - [SMALL_STATE(157)] = 6151, - [SMALL_STATE(158)] = 6164, - [SMALL_STATE(159)] = 6177, - [SMALL_STATE(160)] = 6192, - [SMALL_STATE(161)] = 6206, - [SMALL_STATE(162)] = 6220, - [SMALL_STATE(163)] = 6236, - [SMALL_STATE(164)] = 6252, - [SMALL_STATE(165)] = 6264, - [SMALL_STATE(166)] = 6280, - [SMALL_STATE(167)] = 6296, - [SMALL_STATE(168)] = 6312, - [SMALL_STATE(169)] = 6326, - [SMALL_STATE(170)] = 6335, - [SMALL_STATE(171)] = 6348, - [SMALL_STATE(172)] = 6357, - [SMALL_STATE(173)] = 6368, - [SMALL_STATE(174)] = 6381, - [SMALL_STATE(175)] = 6394, - [SMALL_STATE(176)] = 6407, - [SMALL_STATE(177)] = 6416, - [SMALL_STATE(178)] = 6429, - [SMALL_STATE(179)] = 6438, - [SMALL_STATE(180)] = 6451, - [SMALL_STATE(181)] = 6464, - [SMALL_STATE(182)] = 6477, - [SMALL_STATE(183)] = 6488, - [SMALL_STATE(184)] = 6497, - [SMALL_STATE(185)] = 6510, - [SMALL_STATE(186)] = 6521, - [SMALL_STATE(187)] = 6531, - [SMALL_STATE(188)] = 6541, - [SMALL_STATE(189)] = 6551, - [SMALL_STATE(190)] = 6561, - [SMALL_STATE(191)] = 6571, - [SMALL_STATE(192)] = 6581, - [SMALL_STATE(193)] = 6591, - [SMALL_STATE(194)] = 6601, - [SMALL_STATE(195)] = 6609, - [SMALL_STATE(196)] = 6619, - [SMALL_STATE(197)] = 6629, - [SMALL_STATE(198)] = 6639, - [SMALL_STATE(199)] = 6649, - [SMALL_STATE(200)] = 6659, - [SMALL_STATE(201)] = 6666, - [SMALL_STATE(202)] = 6673, - [SMALL_STATE(203)] = 6680, - [SMALL_STATE(204)] = 6687, - [SMALL_STATE(205)] = 6694, - [SMALL_STATE(206)] = 6701, - [SMALL_STATE(207)] = 6708, - [SMALL_STATE(208)] = 6715, - [SMALL_STATE(209)] = 6722, - [SMALL_STATE(210)] = 6729, - [SMALL_STATE(211)] = 6736, - [SMALL_STATE(212)] = 6743, - [SMALL_STATE(213)] = 6750, - [SMALL_STATE(214)] = 6757, - [SMALL_STATE(215)] = 6764, - [SMALL_STATE(216)] = 6771, - [SMALL_STATE(217)] = 6778, - [SMALL_STATE(218)] = 6785, - [SMALL_STATE(219)] = 6792, - [SMALL_STATE(220)] = 6799, + [SMALL_STATE(3)] = 86, + [SMALL_STATE(4)] = 172, + [SMALL_STATE(5)] = 258, + [SMALL_STATE(6)] = 338, + [SMALL_STATE(7)] = 418, + [SMALL_STATE(8)] = 498, + [SMALL_STATE(9)] = 578, + [SMALL_STATE(10)] = 658, + [SMALL_STATE(11)] = 738, + [SMALL_STATE(12)] = 812, + [SMALL_STATE(13)] = 886, + [SMALL_STATE(14)] = 960, + [SMALL_STATE(15)] = 1034, + [SMALL_STATE(16)] = 1108, + [SMALL_STATE(17)] = 1182, + [SMALL_STATE(18)] = 1256, + [SMALL_STATE(19)] = 1327, + [SMALL_STATE(20)] = 1398, + [SMALL_STATE(21)] = 1469, + [SMALL_STATE(22)] = 1540, + [SMALL_STATE(23)] = 1603, + [SMALL_STATE(24)] = 1674, + [SMALL_STATE(25)] = 1745, + [SMALL_STATE(26)] = 1816, + [SMALL_STATE(27)] = 1887, + [SMALL_STATE(28)] = 1958, + [SMALL_STATE(29)] = 2029, + [SMALL_STATE(30)] = 2100, + [SMALL_STATE(31)] = 2171, + [SMALL_STATE(32)] = 2242, + [SMALL_STATE(33)] = 2313, + [SMALL_STATE(34)] = 2384, + [SMALL_STATE(35)] = 2455, + [SMALL_STATE(36)] = 2526, + [SMALL_STATE(37)] = 2597, + [SMALL_STATE(38)] = 2668, + [SMALL_STATE(39)] = 2739, + [SMALL_STATE(40)] = 2810, + [SMALL_STATE(41)] = 2881, + [SMALL_STATE(42)] = 2952, + [SMALL_STATE(43)] = 3023, + [SMALL_STATE(44)] = 3094, + [SMALL_STATE(45)] = 3165, + [SMALL_STATE(46)] = 3236, + [SMALL_STATE(47)] = 3307, + [SMALL_STATE(48)] = 3350, + [SMALL_STATE(49)] = 3393, + [SMALL_STATE(50)] = 3436, + [SMALL_STATE(51)] = 3476, + [SMALL_STATE(52)] = 3516, + [SMALL_STATE(53)] = 3556, + [SMALL_STATE(54)] = 3596, + [SMALL_STATE(55)] = 3630, + [SMALL_STATE(56)] = 3664, + [SMALL_STATE(57)] = 3698, + [SMALL_STATE(58)] = 3732, + [SMALL_STATE(59)] = 3766, + [SMALL_STATE(60)] = 3800, + [SMALL_STATE(61)] = 3834, + [SMALL_STATE(62)] = 3868, + [SMALL_STATE(63)] = 3902, + [SMALL_STATE(64)] = 3936, + [SMALL_STATE(65)] = 3970, + [SMALL_STATE(66)] = 4004, + [SMALL_STATE(67)] = 4038, + [SMALL_STATE(68)] = 4072, + [SMALL_STATE(69)] = 4106, + [SMALL_STATE(70)] = 4140, + [SMALL_STATE(71)] = 4174, + [SMALL_STATE(72)] = 4208, + [SMALL_STATE(73)] = 4242, + [SMALL_STATE(74)] = 4276, + [SMALL_STATE(75)] = 4310, + [SMALL_STATE(76)] = 4344, + [SMALL_STATE(77)] = 4378, + [SMALL_STATE(78)] = 4412, + [SMALL_STATE(79)] = 4446, + [SMALL_STATE(80)] = 4480, + [SMALL_STATE(81)] = 4535, + [SMALL_STATE(82)] = 4591, + [SMALL_STATE(83)] = 4647, + [SMALL_STATE(84)] = 4703, + [SMALL_STATE(85)] = 4759, + [SMALL_STATE(86)] = 4815, + [SMALL_STATE(87)] = 4871, + [SMALL_STATE(88)] = 4927, + [SMALL_STATE(89)] = 4983, + [SMALL_STATE(90)] = 5039, + [SMALL_STATE(91)] = 5095, + [SMALL_STATE(92)] = 5151, + [SMALL_STATE(93)] = 5207, + [SMALL_STATE(94)] = 5263, + [SMALL_STATE(95)] = 5319, + [SMALL_STATE(96)] = 5375, + [SMALL_STATE(97)] = 5431, + [SMALL_STATE(98)] = 5487, + [SMALL_STATE(99)] = 5543, + [SMALL_STATE(100)] = 5599, + [SMALL_STATE(101)] = 5655, + [SMALL_STATE(102)] = 5711, + [SMALL_STATE(103)] = 5748, + [SMALL_STATE(104)] = 5785, + [SMALL_STATE(105)] = 5822, + [SMALL_STATE(106)] = 5875, + [SMALL_STATE(107)] = 5909, + [SMALL_STATE(108)] = 5943, + [SMALL_STATE(109)] = 5977, + [SMALL_STATE(110)] = 6011, + [SMALL_STATE(111)] = 6046, + [SMALL_STATE(112)] = 6081, + [SMALL_STATE(113)] = 6116, + [SMALL_STATE(114)] = 6144, + [SMALL_STATE(115)] = 6172, + [SMALL_STATE(116)] = 6200, + [SMALL_STATE(117)] = 6228, + [SMALL_STATE(118)] = 6256, + [SMALL_STATE(119)] = 6288, + [SMALL_STATE(120)] = 6316, + [SMALL_STATE(121)] = 6344, + [SMALL_STATE(122)] = 6376, + [SMALL_STATE(123)] = 6412, + [SMALL_STATE(124)] = 6440, + [SMALL_STATE(125)] = 6472, + [SMALL_STATE(126)] = 6500, + [SMALL_STATE(127)] = 6528, + [SMALL_STATE(128)] = 6556, + [SMALL_STATE(129)] = 6584, + [SMALL_STATE(130)] = 6612, + [SMALL_STATE(131)] = 6640, + [SMALL_STATE(132)] = 6668, + [SMALL_STATE(133)] = 6696, + [SMALL_STATE(134)] = 6724, + [SMALL_STATE(135)] = 6752, + [SMALL_STATE(136)] = 6784, + [SMALL_STATE(137)] = 6812, + [SMALL_STATE(138)] = 6840, + [SMALL_STATE(139)] = 6868, + [SMALL_STATE(140)] = 6896, + [SMALL_STATE(141)] = 6924, + [SMALL_STATE(142)] = 6952, + [SMALL_STATE(143)] = 6980, + [SMALL_STATE(144)] = 7008, + [SMALL_STATE(145)] = 7034, + [SMALL_STATE(146)] = 7068, + [SMALL_STATE(147)] = 7094, + [SMALL_STATE(148)] = 7128, + [SMALL_STATE(149)] = 7162, + [SMALL_STATE(150)] = 7188, + [SMALL_STATE(151)] = 7214, + [SMALL_STATE(152)] = 7248, + [SMALL_STATE(153)] = 7282, + [SMALL_STATE(154)] = 7308, + [SMALL_STATE(155)] = 7334, + [SMALL_STATE(156)] = 7368, + [SMALL_STATE(157)] = 7394, + [SMALL_STATE(158)] = 7428, + [SMALL_STATE(159)] = 7454, + [SMALL_STATE(160)] = 7480, + [SMALL_STATE(161)] = 7506, + [SMALL_STATE(162)] = 7532, + [SMALL_STATE(163)] = 7558, + [SMALL_STATE(164)] = 7584, + [SMALL_STATE(165)] = 7610, + [SMALL_STATE(166)] = 7636, + [SMALL_STATE(167)] = 7662, + [SMALL_STATE(168)] = 7688, + [SMALL_STATE(169)] = 7714, + [SMALL_STATE(170)] = 7740, + [SMALL_STATE(171)] = 7766, + [SMALL_STATE(172)] = 7792, + [SMALL_STATE(173)] = 7818, + [SMALL_STATE(174)] = 7844, + [SMALL_STATE(175)] = 7870, + [SMALL_STATE(176)] = 7896, + [SMALL_STATE(177)] = 7922, + [SMALL_STATE(178)] = 7948, + [SMALL_STATE(179)] = 7974, + [SMALL_STATE(180)] = 8000, + [SMALL_STATE(181)] = 8026, + [SMALL_STATE(182)] = 8052, + [SMALL_STATE(183)] = 8078, + [SMALL_STATE(184)] = 8104, + [SMALL_STATE(185)] = 8123, + [SMALL_STATE(186)] = 8142, + [SMALL_STATE(187)] = 8163, + [SMALL_STATE(188)] = 8182, + [SMALL_STATE(189)] = 8201, + [SMALL_STATE(190)] = 8225, + [SMALL_STATE(191)] = 8249, + [SMALL_STATE(192)] = 8273, + [SMALL_STATE(193)] = 8297, + [SMALL_STATE(194)] = 8321, + [SMALL_STATE(195)] = 8345, + [SMALL_STATE(196)] = 8369, + [SMALL_STATE(197)] = 8393, + [SMALL_STATE(198)] = 8415, + [SMALL_STATE(199)] = 8439, + [SMALL_STATE(200)] = 8461, + [SMALL_STATE(201)] = 8483, + [SMALL_STATE(202)] = 8505, + [SMALL_STATE(203)] = 8529, + [SMALL_STATE(204)] = 8552, + [SMALL_STATE(205)] = 8573, + [SMALL_STATE(206)] = 8594, + [SMALL_STATE(207)] = 8616, + [SMALL_STATE(208)] = 8632, + [SMALL_STATE(209)] = 8654, + [SMALL_STATE(210)] = 8676, + [SMALL_STATE(211)] = 8692, + [SMALL_STATE(212)] = 8712, + [SMALL_STATE(213)] = 8731, + [SMALL_STATE(214)] = 8744, + [SMALL_STATE(215)] = 8759, + [SMALL_STATE(216)] = 8772, + [SMALL_STATE(217)] = 8783, + [SMALL_STATE(218)] = 8794, + [SMALL_STATE(219)] = 8811, + [SMALL_STATE(220)] = 8827, + [SMALL_STATE(221)] = 8843, + [SMALL_STATE(222)] = 8859, + [SMALL_STATE(223)] = 8871, + [SMALL_STATE(224)] = 8887, + [SMALL_STATE(225)] = 8903, + [SMALL_STATE(226)] = 8919, + [SMALL_STATE(227)] = 8935, + [SMALL_STATE(228)] = 8949, + [SMALL_STATE(229)] = 8965, + [SMALL_STATE(230)] = 8981, + [SMALL_STATE(231)] = 8997, + [SMALL_STATE(232)] = 9013, + [SMALL_STATE(233)] = 9029, + [SMALL_STATE(234)] = 9043, + [SMALL_STATE(235)] = 9059, + [SMALL_STATE(236)] = 9075, + [SMALL_STATE(237)] = 9091, + [SMALL_STATE(238)] = 9107, + [SMALL_STATE(239)] = 9120, + [SMALL_STATE(240)] = 9129, + [SMALL_STATE(241)] = 9142, + [SMALL_STATE(242)] = 9151, + [SMALL_STATE(243)] = 9160, + [SMALL_STATE(244)] = 9171, + [SMALL_STATE(245)] = 9184, + [SMALL_STATE(246)] = 9197, + [SMALL_STATE(247)] = 9206, + [SMALL_STATE(248)] = 9217, + [SMALL_STATE(249)] = 9226, + [SMALL_STATE(250)] = 9237, + [SMALL_STATE(251)] = 9250, + [SMALL_STATE(252)] = 9263, + [SMALL_STATE(253)] = 9276, + [SMALL_STATE(254)] = 9289, + [SMALL_STATE(255)] = 9298, + [SMALL_STATE(256)] = 9307, + [SMALL_STATE(257)] = 9316, + [SMALL_STATE(258)] = 9327, + [SMALL_STATE(259)] = 9338, + [SMALL_STATE(260)] = 9349, + [SMALL_STATE(261)] = 9362, + [SMALL_STATE(262)] = 9373, + [SMALL_STATE(263)] = 9382, + [SMALL_STATE(264)] = 9392, + [SMALL_STATE(265)] = 9402, + [SMALL_STATE(266)] = 9412, + [SMALL_STATE(267)] = 9422, + [SMALL_STATE(268)] = 9432, + [SMALL_STATE(269)] = 9442, + [SMALL_STATE(270)] = 9452, + [SMALL_STATE(271)] = 9462, + [SMALL_STATE(272)] = 9472, + [SMALL_STATE(273)] = 9482, + [SMALL_STATE(274)] = 9492, + [SMALL_STATE(275)] = 9502, + [SMALL_STATE(276)] = 9512, + [SMALL_STATE(277)] = 9522, + [SMALL_STATE(278)] = 9532, + [SMALL_STATE(279)] = 9542, + [SMALL_STATE(280)] = 9552, + [SMALL_STATE(281)] = 9562, + [SMALL_STATE(282)] = 9572, + [SMALL_STATE(283)] = 9582, + [SMALL_STATE(284)] = 9592, + [SMALL_STATE(285)] = 9602, + [SMALL_STATE(286)] = 9612, + [SMALL_STATE(287)] = 9620, + [SMALL_STATE(288)] = 9630, + [SMALL_STATE(289)] = 9640, + [SMALL_STATE(290)] = 9650, + [SMALL_STATE(291)] = 9660, + [SMALL_STATE(292)] = 9670, + [SMALL_STATE(293)] = 9680, + [SMALL_STATE(294)] = 9687, + [SMALL_STATE(295)] = 9694, + [SMALL_STATE(296)] = 9701, + [SMALL_STATE(297)] = 9708, + [SMALL_STATE(298)] = 9715, + [SMALL_STATE(299)] = 9722, + [SMALL_STATE(300)] = 9729, + [SMALL_STATE(301)] = 9736, + [SMALL_STATE(302)] = 9743, + [SMALL_STATE(303)] = 9750, + [SMALL_STATE(304)] = 9757, + [SMALL_STATE(305)] = 9764, + [SMALL_STATE(306)] = 9771, + [SMALL_STATE(307)] = 9778, + [SMALL_STATE(308)] = 9785, + [SMALL_STATE(309)] = 9792, + [SMALL_STATE(310)] = 9799, + [SMALL_STATE(311)] = 9806, }; 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(142), - [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), - [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(115), - [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), - [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), - [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(45), - [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(60), - [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(214), - [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), - [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(139), - [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), - [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40), - [33] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), - [35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), - [37] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1), - [39] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression, 1), - [41] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), - [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(187), - [45] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), - [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), - [49] = {.entry = {.count = 1, .reusable = false}}, SHIFT(84), - [51] = {.entry = {.count = 1, .reusable = false}}, SHIFT(71), - [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), - [55] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), - [57] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), - [59] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), - [61] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), - [63] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), - [65] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_arguments, 2), - [67] = {.entry = {.count = 1, .reusable = true}}, SHIFT(217), - [69] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_arguments, 3), - [71] = {.entry = {.count = 1, .reusable = true}}, SHIFT(206), - [73] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), - [75] = {.entry = {.count = 1, .reusable = false}}, SHIFT(88), - [77] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), - [79] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), - [81] = {.entry = {.count = 1, .reusable = false}}, SHIFT(95), - [83] = {.entry = {.count = 1, .reusable = false}}, SHIFT(96), - [85] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), - [87] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), - [89] = {.entry = {.count = 1, .reusable = true}}, SHIFT(137), - [91] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_full_splat, 3), - [93] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_full_splat, 3), - [95] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 3), SHIFT(28), - [98] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 3), SHIFT(205), - [101] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_full_splat, 4), - [103] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_full_splat, 4), - [105] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 4), SHIFT(28), - [108] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 4), SHIFT(205), - [111] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_full_splat_repeat1, 2), - [113] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_full_splat_repeat1, 2), - [115] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(28), - [118] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(205), - [121] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_attr_splat_repeat1, 2), - [123] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_attr_splat_repeat1, 2), - [125] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_attr_splat_repeat1, 2), SHIFT_REPEAT(205), - [128] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attr_splat, 3), - [130] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attr_splat, 3), - [132] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 3), SHIFT(205), - [135] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attr_splat, 2), - [137] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attr_splat, 2), - [139] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 2), SHIFT(205), - [142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable_expr, 1), - [144] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable_expr, 1), - [146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), - [148] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_collection_value, 1), - [150] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_collection_value, 1), - [152] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_expr, 1), - [154] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_expr, 1), - [156] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 4, .production_id = 1), - [158] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 4, .production_id = 1), - [160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 2), - [162] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 2), - [164] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bool_lit, 1), - [166] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bool_lit, 1), - [168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_term, 3), - [170] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_term, 3), - [172] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoted_template, 2), - [174] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quoted_template, 2), - [176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_term, 1), - [178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_term, 1), - [180] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_get_attr, 2), - [182] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_get_attr, 2), - [184] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_object_expr, 8), - [186] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_object_expr, 8), - [188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 4), - [190] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 4), - [192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 4), - [194] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object, 4), - [196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_expr, 1), - [198] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_expr, 1), - [200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_tuple_expr, 4), - [202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_tuple_expr, 4), - [204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoted_template, 3), - [206] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quoted_template, 3), - [208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_tuple_expr, 5), - [210] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_tuple_expr, 5), - [212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_term, 2), - [214] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_term, 2), - [216] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_splat, 1), - [218] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_splat, 1), - [220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_object_expr, 7), - [222] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_object_expr, 7), - [224] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_literal_value, 1), - [226] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_literal_value, 1), - [228] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_object_expr, 6), - [230] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_object_expr, 6), - [232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index, 3), - [234] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_index, 3), + [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(203), + [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(167), + [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(122), + [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(68), + [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(75), + [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), + [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(303), + [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), + [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(202), + [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130), + [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), + [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(52), + [35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [37] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), + [39] = {.entry = {.count = 1, .reusable = true}}, SHIFT(144), + [41] = {.entry = {.count = 1, .reusable = true}}, SHIFT(170), + [43] = {.entry = {.count = 1, .reusable = true}}, SHIFT(127), + [45] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), + [47] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_arguments, 2), + [49] = {.entry = {.count = 1, .reusable = true}}, SHIFT(295), + [51] = {.entry = {.count = 1, .reusable = true}}, SHIFT(296), + [53] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_arguments, 3), + [55] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), + [57] = {.entry = {.count = 1, .reusable = false}}, SHIFT(135), + [59] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [61] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154), + [63] = {.entry = {.count = 1, .reusable = false}}, SHIFT(146), + [65] = {.entry = {.count = 1, .reusable = false}}, SHIFT(154), + [67] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), + [69] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), + [71] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [73] = {.entry = {.count = 1, .reusable = true}}, SHIFT(198), + [75] = {.entry = {.count = 1, .reusable = true}}, SHIFT(308), + [77] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [79] = {.entry = {.count = 1, .reusable = false}}, SHIFT(108), + [81] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), + [85] = {.entry = {.count = 1, .reusable = false}}, SHIFT(115), + [87] = {.entry = {.count = 1, .reusable = false}}, SHIFT(119), + [89] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), + [91] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), + [93] = {.entry = {.count = 1, .reusable = true}}, SHIFT(196), + [95] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1), + [97] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression, 1), + [99] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [101] = {.entry = {.count = 1, .reusable = false}}, SHIFT(266), + [103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), + [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), + [107] = {.entry = {.count = 1, .reusable = false}}, SHIFT(81), + [109] = {.entry = {.count = 1, .reusable = false}}, SHIFT(96), + [111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), + [113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [115] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), + [117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), + [119] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_full_splat, 3), + [121] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_full_splat, 3), + [123] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 3), SHIFT(27), + [126] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 3), SHIFT(306), + [129] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_full_splat_repeat1, 2), + [131] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_full_splat_repeat1, 2), + [133] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(27), + [136] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(306), + [139] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_full_splat, 4), + [141] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_full_splat, 4), + [143] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 4), SHIFT(27), + [146] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 4), SHIFT(306), + [149] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attr_splat, 3), + [151] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attr_splat, 3), + [153] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 3), SHIFT(306), + [156] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attr_splat, 2), + [158] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attr_splat, 2), + [160] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 2), SHIFT(306), + [163] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable_expr, 1), + [165] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable_expr, 1), + [167] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [169] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_attr_splat_repeat1, 2), + [171] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_attr_splat_repeat1, 2), + [173] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_attr_splat_repeat1, 2), SHIFT_REPEAT(306), + [176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 3), + [178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 3), + [180] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_expr, 1), + [182] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_expr, 1), + [184] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 4), + [186] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object, 4), + [188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 2), + [190] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 2), + [192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr_term, 2), + [194] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expr_term, 2), + [196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_splat, 1), + [198] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_splat, 1), + [200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index, 3), + [202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_index, 3), + [204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_tuple_expr, 4), + [206] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_tuple_expr, 4), + [208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 2), + [210] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object, 2), + [212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 4), + [214] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 4), + [216] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 4, .production_id = 1), + [218] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 4, .production_id = 1), + [220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_tuple_expr, 5), + [222] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_tuple_expr, 5), + [224] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 3), + [226] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object, 3), + [228] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoted_template, 3), + [230] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quoted_template, 3), + [232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bool_lit, 1), + [234] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bool_lit, 1), [236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 3, .production_id = 1), [238] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 3, .production_id = 1), - [240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 3), - [242] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 3), - [244] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 3), - [246] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object, 3), - [248] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 2), - [250] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object, 2), - [252] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), - [254] = {.entry = {.count = 1, .reusable = false}}, SHIFT(199), - [256] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), - [258] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), - [260] = {.entry = {.count = 1, .reusable = false}}, SHIFT(87), - [262] = {.entry = {.count = 1, .reusable = false}}, SHIFT(82), - [264] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), - [266] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), - [268] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), - [270] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), - [272] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 3), SHIFT(31), - [275] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 3), SHIFT(207), - [278] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 4), SHIFT(31), - [281] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 4), SHIFT(207), - [284] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(31), - [287] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(207), - [290] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 2), SHIFT(207), - [293] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 3), SHIFT(207), - [296] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_attr_splat_repeat1, 2), SHIFT_REPEAT(207), - [299] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), - [301] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_variable_expr, 1), SHIFT(34), - [304] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_variable_expr, 1), SHIFT(34), - [307] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_operation, 2), - [309] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_operation, 2), - [311] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_operation, 3), - [313] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_operation, 3), - [315] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_conditional, 5), - [317] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_conditional, 5), - [319] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_conditional, 5), SHIFT(21), - [322] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_intro, 5), - [324] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_intro, 5), - [326] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_intro, 7), - [328] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_intro, 7), - [330] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_operation, 1), - [332] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_operation, 1), - [334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), - [336] = {.entry = {.count = 1, .reusable = false}}, SHIFT(151), - [338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(151), - [340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(136), - [342] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_quoted_template_repeat1, 2), - [344] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_quoted_template_repeat1, 2), SHIFT_REPEAT(151), - [347] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_quoted_template_repeat1, 2), SHIFT_REPEAT(151), - [350] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_quoted_template_repeat1, 2), SHIFT_REPEAT(136), - [353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), - [355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135), - [357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), - [359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), - [361] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138), - [363] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), - [365] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_body_repeat1, 2), - [367] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_body_repeat1, 2), SHIFT_REPEAT(142), - [370] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [372] = {.entry = {.count = 1, .reusable = true}}, SHIFT(144), - [374] = {.entry = {.count = 1, .reusable = true}}, SHIFT(149), - [376] = {.entry = {.count = 1, .reusable = true}}, SHIFT(160), - [378] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_body, 1), - [380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(169), - [382] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), - [384] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), SHIFT_REPEAT(26), - [387] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_template_interpolation_repeat1, 2), - [389] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_template_interpolation_repeat1, 2), SHIFT_REPEAT(146), - [392] = {.entry = {.count = 1, .reusable = true}}, SHIFT(140), - [394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(155), - [396] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), - [398] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), - [400] = {.entry = {.count = 1, .reusable = true}}, SHIFT(174), - [402] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [404] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), - [406] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159), - [408] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_conditional, 5), SHIFT(17), - [411] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_arguments, 1), - [413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), - [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(210), - [417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), - [419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), - [421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(181), - [423] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), - [425] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(155), - [428] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(160), - [431] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_interpolation, 3), - [433] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_interpolation, 3), - [435] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_interpolation, 2), - [437] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_interpolation, 2), - [439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), - [441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(146), - [443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(183), - [445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(168), - [447] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_string_lit_repeat1, 2), - [449] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_lit_repeat1, 2), SHIFT_REPEAT(161), - [452] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), - [454] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), - [456] = {.entry = {.count = 1, .reusable = true}}, SHIFT(215), - [458] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3, .production_id = 1), - [460] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), - [462] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), - [464] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), - [466] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), - [468] = {.entry = {.count = 1, .reusable = true}}, SHIFT(178), - [470] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), - [472] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 3, .production_id = 1), - [474] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), - [476] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 5, .production_id = 1), - [478] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_elem, 3), - [480] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), - [482] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), - [484] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), - [486] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_object_repeat1, 2), - [488] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_object_repeat1, 2), SHIFT_REPEAT(11), - [491] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 4, .production_id = 1), - [493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), - [495] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 3), - [497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), - [499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), - [501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), - [503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), - [505] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 2), - [507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), - [509] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_cond, 2), - [511] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), - [513] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), - [515] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), - [517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(200), - [519] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), - [521] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), - [523] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), - [525] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), - [527] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), - [529] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [531] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), - [533] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), - [535] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), - [537] = {.entry = {.count = 1, .reusable = true}}, SHIFT(133), - [539] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), - [541] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), - [543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(209), - [545] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), - [547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), - [549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), - [551] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), - [553] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), - [555] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), - [557] = {.entry = {.count = 1, .reusable = true}}, SHIFT(171), - [559] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), - [561] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), - [563] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), - [565] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [567] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_config_file, 1), - [569] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 3), + [242] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_lit, 3), + [244] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr_term, 3), + [246] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expr_term, 3), + [248] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoted_template, 2), + [250] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quoted_template, 2), + [252] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_expr, 1), + [254] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_expr, 1), + [256] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_collection_value, 1), + [258] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_collection_value, 1), + [260] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_literal_value, 1), + [262] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_literal_value, 1), + [264] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_object_expr, 8), + [266] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_object_expr, 8), + [268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_object_expr, 7), + [270] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_object_expr, 7), + [272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_object_expr, 6), + [274] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_object_expr, 6), + [276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_get_attr, 2), + [278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_get_attr, 2), + [280] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [282] = {.entry = {.count = 1, .reusable = false}}, SHIFT(290), + [284] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), + [286] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), + [288] = {.entry = {.count = 1, .reusable = false}}, SHIFT(94), + [290] = {.entry = {.count = 1, .reusable = false}}, SHIFT(92), + [292] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), + [294] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), + [296] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), + [298] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [300] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 4), SHIFT(18), + [303] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 4), SHIFT(309), + [306] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(18), + [309] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(309), + [312] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 3), SHIFT(18), + [315] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 3), SHIFT(309), + [318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [320] = {.entry = {.count = 1, .reusable = true}}, SHIFT(274), + [322] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [324] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [326] = {.entry = {.count = 1, .reusable = false}}, SHIFT(85), + [328] = {.entry = {.count = 1, .reusable = false}}, SHIFT(99), + [330] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), + [332] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), + [334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), + [336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), + [338] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 3), SHIFT(309), + [341] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_attr_splat_repeat1, 2), SHIFT_REPEAT(309), + [344] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), + [346] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 2), SHIFT(309), + [349] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 3), SHIFT(29), + [352] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 3), SHIFT(300), + [355] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 4), SHIFT(29), + [358] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 4), SHIFT(300), + [361] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(29), + [364] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(300), + [367] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attr_splat_repeat1, 2), SHIFT_REPEAT(300), + [370] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_attr_splat, 3), SHIFT(300), + [373] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_variable_expr, 1), SHIFT(35), + [376] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_variable_expr, 1), SHIFT(35), + [379] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_attr_splat, 2), SHIFT(300), + [382] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [384] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_operation, 3), + [386] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_operation, 3), + [388] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_operation, 2), + [390] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_operation, 2), + [392] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_intro, 7), + [394] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_intro, 7), + [396] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_operation, 1), + [398] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_operation, 1), + [400] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_conditional, 5), + [402] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_conditional, 5), + [404] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_conditional, 5), SHIFT(45), + [407] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_intro, 5), + [409] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_intro, 5), + [411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), + [413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(227), + [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), + [417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(131), + [419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156), + [421] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), + [423] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_quoted_template_repeat1, 2), + [425] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_quoted_template_repeat1, 2), SHIFT_REPEAT(227), + [428] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_quoted_template_repeat1, 2), SHIFT_REPEAT(16), + [431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(169), + [433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), + [435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205), + [439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(211), + [441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(240), + [443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(255), + [445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(248), + [447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(116), + [449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), + [451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(234), + [453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), + [455] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_body, 1), + [457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(226), + [461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), + [463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(230), + [465] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_body_repeat1, 2), + [467] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_body_repeat1, 2), SHIFT_REPEAT(203), + [470] = {.entry = {.count = 1, .reusable = true}}, SHIFT(204), + [472] = {.entry = {.count = 1, .reusable = true}}, SHIFT(218), + [474] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_arguments, 1), + [476] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [478] = {.entry = {.count = 1, .reusable = true}}, SHIFT(294), + [480] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), + [482] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_conditional, 5), SHIFT(40), + [485] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), + [487] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), SHIFT_REPEAT(31), + [490] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), + [492] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(218), + [495] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(240), + [498] = {.entry = {.count = 1, .reusable = true}}, SHIFT(142), + [500] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), + [502] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), + [504] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), + [506] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3, .production_id = 1), + [508] = {.entry = {.count = 1, .reusable = true}}, SHIFT(140), + [510] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [512] = {.entry = {.count = 1, .reusable = true}}, SHIFT(134), + [514] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [516] = {.entry = {.count = 1, .reusable = true}}, SHIFT(304), + [518] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), + [520] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_literal, 1), + [522] = {.entry = {.count = 1, .reusable = true}}, SHIFT(233), + [524] = {.entry = {.count = 1, .reusable = true}}, SHIFT(168), + [526] = {.entry = {.count = 1, .reusable = true}}, SHIFT(173), + [528] = {.entry = {.count = 1, .reusable = true}}, SHIFT(160), + [530] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), + [532] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [534] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_template_literal_repeat1, 2), + [536] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_template_literal_repeat1, 2), SHIFT_REPEAT(233), + [539] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), + [541] = {.entry = {.count = 1, .reusable = true}}, SHIFT(137), + [543] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), + [545] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163), + [547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), + [549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(244), + [551] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_cond, 2), + [553] = {.entry = {.count = 1, .reusable = true}}, SHIFT(260), + [555] = {.entry = {.count = 1, .reusable = true}}, SHIFT(139), + [557] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_interpolation, 3), + [559] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_quoted_template_repeat1, 1), SHIFT(123), + [562] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_quoted_template_repeat1, 1), + [564] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 3, .production_id = 1), + [566] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_conditional, 5), SHIFT(19), + [569] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), + [571] = {.entry = {.count = 1, .reusable = true}}, SHIFT(305), + [573] = {.entry = {.count = 1, .reusable = true}}, SHIFT(262), + [575] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_object_repeat1, 2), + [577] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_object_repeat1, 2), SHIFT_REPEAT(11), + [580] = {.entry = {.count = 1, .reusable = true}}, SHIFT(293), + [582] = {.entry = {.count = 1, .reusable = true}}, SHIFT(246), + [584] = {.entry = {.count = 1, .reusable = true}}, SHIFT(171), + [586] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 5, .production_id = 1), + [588] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 4, .production_id = 1), + [590] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_interpolation, 5), + [592] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [594] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_elem, 3), + [596] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_quoted_template_repeat1, 1), SHIFT(70), + [599] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_template_literal_repeat1, 2), SHIFT_REPEAT(260), + [602] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_quoted_template_repeat1, 1), SHIFT(158), + [605] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_interpolation, 4), + [607] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), + [609] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138), + [611] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [613] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), + [615] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [617] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159), + [619] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [621] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), + [623] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), + [625] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172), + [627] = {.entry = {.count = 1, .reusable = true}}, SHIFT(174), + [629] = {.entry = {.count = 1, .reusable = true}}, SHIFT(124), + [631] = {.entry = {.count = 1, .reusable = true}}, SHIFT(184), + [633] = {.entry = {.count = 1, .reusable = true}}, SHIFT(175), + [635] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [637] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), + [639] = {.entry = {.count = 1, .reusable = true}}, SHIFT(164), + [641] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187), + [643] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [645] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), + [647] = {.entry = {.count = 1, .reusable = true}}, SHIFT(301), + [649] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), + [651] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), + [653] = {.entry = {.count = 1, .reusable = true}}, SHIFT(254), + [655] = {.entry = {.count = 1, .reusable = true}}, SHIFT(133), + [657] = {.entry = {.count = 1, .reusable = true}}, SHIFT(136), + [659] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), + [661] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [663] = {.entry = {.count = 1, .reusable = true}}, SHIFT(141), + [665] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), + [667] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [669] = {.entry = {.count = 1, .reusable = true}}, SHIFT(143), + [671] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), + [673] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), + [675] = {.entry = {.count = 1, .reusable = true}}, SHIFT(298), + [677] = {.entry = {.count = 1, .reusable = true}}, SHIFT(239), + [679] = {.entry = {.count = 1, .reusable = true}}, SHIFT(284), + [681] = {.entry = {.count = 1, .reusable = true}}, SHIFT(256), + [683] = {.entry = {.count = 1, .reusable = true}}, SHIFT(162), + [685] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), + [687] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_config_file, 1), + [689] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), }; #ifdef __cplusplus diff --git a/src/scanner.c b/src/scanner.c index 8ac65f0..fce9584 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -1,144 +1,204 @@ #include + #include +#include +#include enum TokenType { - TEMPLATE_CHAR, - TEMPLATE_CHAR_IN_INTERPOLATION, - ESCAPE_SEQUENCE + QUOTED_TEMPLATE_START, + QUOTED_TEMPLATE_END, + TEMPLATE_LITERAL_CHUNK, + TEMPLATE_INTERPOLATION_START, + TEMPLATE_INTERPOLATION_END, }; static void advance(TSLexer *lexer) { lexer->advance(lexer, false); } -static bool accept_template_char_inplace(TSLexer *lexer) { - lexer->result_symbol = TEMPLATE_CHAR; - return true; +static void skip(TSLexer *lexer) { lexer->advance(lexer, true); } + +static bool accept_inplace(TSLexer *lexer, enum TokenType token) { + lexer->result_symbol = token; + return true; } -static bool advance_and_accept_template_char(TSLexer *lexer) { - advance(lexer); - return accept_template_char_inplace(lexer); -} - -static bool advance_and_accept_escape_sequence(TSLexer *lexer) { - advance(lexer); - lexer->result_symbol = ESCAPE_SEQUENCE; - return true; -} - -static bool advance_and_accept_template_char_in_interpolation(TSLexer *lexer) { - advance(lexer); - lexer->result_symbol = TEMPLATE_CHAR_IN_INTERPOLATION; - return true; +static bool accept_and_advance(TSLexer *lexer, enum TokenType token) { + advance(lexer); + return accept_inplace(lexer, token); } static bool consume_wxdigit(TSLexer *lexer) { - advance(lexer); - return iswxdigit(lexer->lookahead); + advance(lexer); + return iswxdigit(lexer->lookahead); } -// scan escape sequences \n \t \r \\ \" \uHHHH or \UHHHHHHHHA where H is a hex digit -// assumes that the leading character is '\' -static bool scan_backslash_escape_sequence(TSLexer *lexer) { - advance(lexer); - switch (lexer->lookahead) { - case '"': - case 'n': - case 'r': - case 't': - case '\\': - return advance_and_accept_escape_sequence(lexer); - case 'u': - for (int i = 0; i < 4; i++) { - if (!consume_wxdigit(lexer)) return false; - } - return advance_and_accept_escape_sequence(lexer); - case 'U': - for (int i = 0; i < 8; i++) { - if (!consume_wxdigit(lexer)) return false; - } - return advance_and_accept_escape_sequence(lexer); - default: - return false; +typedef struct Scanner { + bool in_template_interpolation; + bool in_quoted_context; + int template_interpolation_depth; + int quoted_context_depth; +} Scanner; + +void print_debug_info(Scanner *scanner, TSLexer *lexer, const bool *valid_symbols) { + printf("\nDEBUG INFO START\n\n"); + printf("currently at: '%c'\n\n", lexer->lookahead); + printf("could be one of\n"); + printf("quoted_template_start: %x\n", valid_symbols[QUOTED_TEMPLATE_START]); + printf("quoted_template_end: %x\n", valid_symbols[QUOTED_TEMPLATE_END]); + printf("template_literal_chunk: %x", valid_symbols[TEMPLATE_LITERAL_CHUNK]); + printf("template_interpolation_start: %x\n", valid_symbols[TEMPLATE_INTERPOLATION_START]); + printf("template_interpolation_end: %x\n", valid_symbols[TEMPLATE_INTERPOLATION_END]); + printf("\n"); + printf("scanner state:\n"); + printf("in_template_interpolation %x\n", scanner->in_template_interpolation); + printf("in_quoted_context %x\n", scanner->in_quoted_context); + printf("template_interpolation_depth %x\n", scanner->template_interpolation_depth); + printf("quoted_context_depth %x\n", scanner->quoted_context_depth); + printf("\nDEBUG INFO END\n\n"); +} + +// some helpers to keep track of template depth +void scanner_enter_interpolation_context(Scanner *scanner) { + scanner->template_interpolation_depth++; + scanner->in_template_interpolation = true; + scanner->in_quoted_context = false; +} + +void scanner_exit_interpolation_context(Scanner *scanner) { + scanner->template_interpolation_depth--; + scanner->in_template_interpolation = false; + scanner->in_quoted_context = true; +} + +void scanner_enter_quoted_context(Scanner *scanner) { + scanner->quoted_context_depth++; + scanner->in_quoted_context = true; + scanner->in_template_interpolation = false; +} + +void scanner_exit_quoted_context(Scanner *scanner) { + scanner->quoted_context_depth--; + scanner->in_quoted_context = false; + // check if we are reentering a nested template interpolation + if (scanner->template_interpolation_depth > 0) { + scanner->in_template_interpolation = true; } } -// may accept multiple characters like %% as a 'template literal chunk' -// assumes that the leading character is '%' or '$' -static bool scan_template_literal_chunk_or_template_escape_sequence(TSLexer *lexer) { - const leading_char = lexer->lookahead; - - advance(lexer); - // reject %{ because its the start of template directives - if (lexer->lookahead == '{') return false; - if (lexer->lookahead == leading_char) { - advance(lexer); - // accept %%{ as escape sequence - if (lexer->lookahead == '{') return advance_and_accept_escape_sequence(lexer); - } - // accept % and %% as template chars - return accept_template_char_inplace(lexer); -} - -static bool scan_template_char_or_escape_sequence(TSLexer *lexer) { - switch (lexer->lookahead) { - case '"': +bool must_escape_in_nested_quoted_context(char c) { + switch (c) { case '\n': case '\r': case '\t': - return false; - case '\\': - return scan_backslash_escape_sequence(lexer); - case '$': - case '%': - return scan_template_literal_chunk_or_template_escape_sequence(lexer); + return true; default: - return advance_and_accept_template_char(lexer); + return false; } } -static bool scan_template_char_in_interpolation_or_escape_sequence(TSLexer *lexer) { - switch (lexer->lookahead) { - case '"': - case '\n': - case '\r': - case '\t': - // no template interpolation chars are allowed in template interpolations ( even escaped ) - case '$': - case '%': - case '~': - return false; - // '}' ends the template interpolation - case '}': - return false; - case '\\': - return scan_backslash_escape_sequence(lexer); - default: - return advance_and_accept_template_char_in_interpolation(lexer); +bool scanner_scan(Scanner *scanner, TSLexer *lexer, const bool *valid_symbols) { + // literal newlines are not allowed inside a quoted context + if (must_escape_in_nested_quoted_context(lexer->lookahead) && scanner->quoted_context_depth > 0) { + return false; } -} + while (iswspace(lexer->lookahead) && !scanner->in_quoted_context) skip(lexer); -// scanner - -void *tree_sitter_hcl_external_scanner_create() { return NULL; } -void tree_sitter_hcl_external_scanner_destroy(void *p) {} -void tree_sitter_hcl_external_scanner_reset(void *p) {} -unsigned tree_sitter_hcl_external_scanner_serialize(void *p, char *b) { return 0; } -void tree_sitter_hcl_external_scanner_deserialize(void *p, const char *b, unsigned n) {} - - -bool tree_sitter_hcl_external_scanner_scan( - void *p, - TSLexer *lexer, - const bool *valid_symbols -) { - // when scanning string literals or quoted template literals that are not in an template directive - if (valid_symbols[TEMPLATE_CHAR] && valid_symbols[ESCAPE_SEQUENCE]) { - return scan_template_char_or_escape_sequence(lexer); + // manage quoted context + if (valid_symbols[QUOTED_TEMPLATE_START] && lexer->lookahead == '"') { + scanner_enter_quoted_context(scanner); + return accept_and_advance(lexer, QUOTED_TEMPLATE_START); } - // quoted template literals currently inside a template directive - if (valid_symbols[TEMPLATE_CHAR_IN_INTERPOLATION] && valid_symbols[ESCAPE_SEQUENCE]) { - return scan_template_char_in_interpolation_or_escape_sequence(lexer); + if (valid_symbols[QUOTED_TEMPLATE_END] && lexer->lookahead == '"') { + scanner_exit_quoted_context(scanner); + return accept_and_advance(lexer, QUOTED_TEMPLATE_END); + } + + if (valid_symbols[TEMPLATE_INTERPOLATION_START] && lexer->lookahead == '$') { + advance(lexer); + if (lexer->lookahead == '{') { + scanner_enter_interpolation_context(scanner); + return accept_and_advance(lexer, TEMPLATE_INTERPOLATION_START); + } + if (valid_symbols[TEMPLATE_LITERAL_CHUNK]) { + // try to scan escape sequence + if (lexer->lookahead == '$') { + advance(lexer); + if (lexer->lookahead == '{') { + // $${ + return accept_and_advance(lexer, TEMPLATE_LITERAL_CHUNK); + } + } + return accept_inplace(lexer, TEMPLATE_LITERAL_CHUNK); + } + } + + if (valid_symbols[TEMPLATE_INTERPOLATION_END] && lexer->lookahead == '}') { + scanner_exit_interpolation_context(scanner); + return accept_and_advance(lexer, TEMPLATE_INTERPOLATION_END); + } + + // handle escape sequences in direct surrounding quoted contexts + if (valid_symbols[TEMPLATE_LITERAL_CHUNK] && scanner->quoted_context_depth > 0) { + switch (lexer->lookahead) { + case '"': + case '\n': + case '\r': + case '\t': + return false; + case '\\': + advance(lexer); + switch (lexer->lookahead) { + case '"': + case 'n': + case 'r': + case 't': + case '\\': + return accept_and_advance(lexer, TEMPLATE_LITERAL_CHUNK); + case 'u': + for (int i = 0; i < 4; i++) { + if (!consume_wxdigit(lexer)) return false; + } + return accept_and_advance(lexer, TEMPLATE_LITERAL_CHUNK); + case 'U': + for (int i = 0; i < 8; i++) { + if (!consume_wxdigit(lexer)) return false; + } + return accept_and_advance(lexer, TEMPLATE_LITERAL_CHUNK); + default: + return false; + } + case '$': + // handled above + default: + return accept_and_advance(lexer, TEMPLATE_LITERAL_CHUNK); + } } return false; } +void *tree_sitter_hcl_external_scanner_create() { + Scanner *scanner = (Scanner*)malloc(sizeof(Scanner)); + if (scanner) { + scanner->in_template_interpolation = false; + scanner->in_quoted_context = false; + scanner->template_interpolation_depth = 0; + scanner->quoted_context_depth = 0; + } + return scanner; +} + +void tree_sitter_hcl_external_scanner_destroy(void *p) { + free(p); +} + +unsigned tree_sitter_hcl_external_scanner_serialize(void *p, char *b) { + memcpy(b, p, sizeof(Scanner)); return sizeof(Scanner); +} + +void tree_sitter_hcl_external_scanner_deserialize(void *p, const char *b, unsigned n) { + memcpy(p, b, n); +} + +bool tree_sitter_hcl_external_scanner_scan(void *p, TSLexer *lexer, const bool *valid_symbols) { + return scanner_scan((Scanner*)p, lexer, valid_symbols); +} + diff --git a/test/corpus/attributes.txt b/test/corpus/attributes.txt index 6f12059..41bbec3 100644 --- a/test/corpus/attributes.txt +++ b/test/corpus/attributes.txt @@ -1,28 +1,32 @@ -================== +================================================================================ attribute with literal -================== +================================================================================ foo = "bar" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template))))))) + (expression + (literal_value + (string_lit + (template_literal))))))) -================== +================================================================================ attribute with variable -================== +================================================================================ foo = bar ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (variable_expr (identifier))))))) - + (expression + (variable_expr + (identifier)))))) diff --git a/test/corpus/blocks.txt b/test/corpus/blocks.txt index 4ee66e0..3194fae 100644 --- a/test/corpus/blocks.txt +++ b/test/corpus/blocks.txt @@ -1,61 +1,66 @@ -================== +================================================================================ basic block -================== +================================================================================ block_1 { } ---- +-------------------------------------------------------------------------------- (config_file (body (block (identifier)))) -================== +================================================================================ basic block on one line -================== +================================================================================ block_1 {} ---- +-------------------------------------------------------------------------------- (config_file (body (block (identifier)))) -================== +================================================================================ block with attribute -================== +================================================================================ block_1 "strlit1" "strlit2" { attr1 = "val1" } ---- +-------------------------------------------------------------------------------- (config_file (body (block (identifier) - (string_lit) - (string_lit) + (string_lit + (template_literal)) + (string_lit + (template_literal)) (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template))))))))) + (expression + (literal_value + (string_lit + (template_literal))))))))) -================== +================================================================================ nested block -================== +================================================================================ block_1 { block_2 { } } ---- +-------------------------------------------------------------------------------- (config_file (body @@ -65,15 +70,15 @@ block_1 { (block (identifier)))))) -================== +================================================================================ nested block on one line -================== +================================================================================ block_1 { block_2 {} } ---- +-------------------------------------------------------------------------------- (config_file (body @@ -83,16 +88,16 @@ block_1 { (block (identifier)))))) -================== +================================================================================ nested blocks -================== +================================================================================ block_1 { block_2 {} block_3 {} } ---- +-------------------------------------------------------------------------------- (config_file (body diff --git a/test/corpus/collections.txt b/test/corpus/collections.txt index 5a207be..496e88e 100644 --- a/test/corpus/collections.txt +++ b/test/corpus/collections.txt @@ -1,43 +1,57 @@ -================== +================================================================================ collection value tuple -================== +================================================================================ foo = [1, 2, "foo"] ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) (expression - (expr_term - (collection_value - (tuple - (expression (expr_term (literal_value (numeric_lit)))) - (expression (expr_term (literal_value (numeric_lit)))) - (expression (expr_term (template_expr (quoted_template))))))))))) + (collection_value + (tuple + (expression + (literal_value + (numeric_lit))) + (expression + (literal_value + (numeric_lit))) + (expression + (literal_value + (string_lit + (template_literal)))))))))) -================== +================================================================================ collection value object -================== +================================================================================ foo = {1: 2, "foo"="bar"} ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) (expression - (expr_term - (collection_value - (object - (object_elem - (expression (expr_term (literal_value (numeric_lit)))) - (expression (expr_term (literal_value (numeric_lit))))) - (object_elem - (expression (expr_term (template_expr (quoted_template)))) - (expression (expr_term (template_expr (quoted_template)))))))))))) - + (collection_value + (object + (object_elem + (expression + (literal_value + (numeric_lit))) + (expression + (literal_value + (numeric_lit)))) + (object_elem + (expression + (literal_value + (string_lit + (template_literal)))) + (expression + (literal_value + (string_lit + (template_literal))))))))))) diff --git a/test/corpus/conditionals.txt b/test/corpus/conditionals.txt index 9a95f17..9035801 100644 --- a/test/corpus/conditionals.txt +++ b/test/corpus/conditionals.txt @@ -1,10 +1,10 @@ -================== +================================================================================ simple conditional expression -================== +================================================================================ foo = predicate() ? 1: 2 ---- +-------------------------------------------------------------------------------- (config_file (body @@ -12,7 +12,12 @@ foo = predicate() ? 1: 2 (identifier) (expression (conditional - (expression (expr_term (function_call (identifier)))) - (expression (expr_term (literal_value (numeric_lit)))) - (expression (expr_term (literal_value (numeric_lit))))))))) - + (expression + (function_call + (identifier))) + (expression + (literal_value + (numeric_lit))) + (expression + (literal_value + (numeric_lit)))))))) diff --git a/test/corpus/for_expressions.txt b/test/corpus/for_expressions.txt index 7e3c187..3b3aa00 100644 --- a/test/corpus/for_expressions.txt +++ b/test/corpus/for_expressions.txt @@ -1,143 +1,182 @@ -================== +================================================================================ for tuple expression -================== +================================================================================ foo = [for v in ["a", "b"]: v] ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) (expression - (expr_term - (for_expr - (for_tuple_expr - (for_intro + (for_expr + (for_tuple_expr + (for_intro (identifier) (expression - (expr_term - (collection_value - (tuple - (expression (expr_term (template_expr (quoted_template)))) - (expression (expr_term (template_expr (quoted_template))))))))) - (expression (expr_term (variable_expr (identifier))))))))))) + (collection_value + (tuple + (expression + (literal_value + (string_lit + (template_literal)))) + (expression + (literal_value + (string_lit + (template_literal)))))))) + (expression + (variable_expr + (identifier))))))))) -================== +================================================================================ for tuple expression with index -================== +================================================================================ foo = [for i, v in ["a", "b"]: i] ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) (expression - (expr_term - (for_expr - (for_tuple_expr - (for_intro + (for_expr + (for_tuple_expr + (for_intro (identifier) (identifier) (expression - (expr_term - (collection_value - (tuple - (expression (expr_term (template_expr (quoted_template)))) - (expression (expr_term (template_expr (quoted_template))))))))) - (expression (expr_term (variable_expr (identifier))))))))))) + (collection_value + (tuple + (expression + (literal_value + (string_lit + (template_literal)))) + (expression + (literal_value + (string_lit + (template_literal)))))))) + (expression + (variable_expr + (identifier))))))))) -================== +================================================================================ for tuple expression with predicate -================== +================================================================================ foo = [for i, v in ["a", "b", "c"]: v if pred(i)] ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression - (expr_term - (for_expr - (for_tuple_expr - (for_intro - (identifier) - (identifier) + (expression + (for_expr + (for_tuple_expr + (for_intro + (identifier) + (identifier) + (expression + (collection_value + (tuple (expression - (expr_term - (collection_value - (tuple - (expression (expr_term (template_expr (quoted_template)))) - (expression (expr_term (template_expr (quoted_template)))) - (expression (expr_term (template_expr (quoted_template))))))))) - (expression (expr_term (variable_expr (identifier)))) - (for_cond - (expression - (expr_term - (function_call - (identifier) - (function_arguments (expression (expr_term (variable_expr (identifier)))))))))))))))) + (literal_value + (string_lit + (template_literal)))) + (expression + (literal_value + (string_lit + (template_literal)))) + (expression + (literal_value + (string_lit + (template_literal)))))))) + (expression + (variable_expr + (identifier))) + (for_cond + (expression + (function_call + (identifier) + (function_arguments + (expression + (variable_expr + (identifier))))))))))))) - -================== +================================================================================ for object expression -================== +================================================================================ foo = {for i, v in ["a", "b"]: v => i} ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) (expression - (expr_term - (for_expr - (for_object_expr - (for_intro - (identifier) - (identifier) - (expression - (expr_term - (collection_value - (tuple - (expression (expr_term (template_expr (quoted_template)))) - (expression (expr_term (template_expr (quoted_template))))))))) - (expression (expr_term (variable_expr (identifier)))) - (expression (expr_term (variable_expr (identifier))))))))))) + (for_expr + (for_object_expr + (for_intro + (identifier) + (identifier) + (expression + (collection_value + (tuple + (expression + (literal_value + (string_lit + (template_literal)))) + (expression + (literal_value + (string_lit + (template_literal)))))))) + (expression + (variable_expr + (identifier))) + (expression + (variable_expr + (identifier))))))))) -================== +================================================================================ for object expression 2 -================== +================================================================================ foo = {for i, v in ["a", "b"]: v => i...} ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) (expression - (expr_term - (for_expr - (for_object_expr - (for_intro - (identifier) - (identifier) - (expression - (expr_term - (collection_value - (tuple - (expression (expr_term (template_expr (quoted_template)))) - (expression (expr_term (template_expr (quoted_template))))))))) - (expression (expr_term (variable_expr (identifier)))) - (expression (expr_term (variable_expr (identifier)))) (ellipsis)))))))) + (for_expr + (for_object_expr + (for_intro + (identifier) + (identifier) + (expression + (collection_value + (tuple + (expression + (literal_value + (string_lit + (template_literal)))) + (expression + (literal_value + (string_lit + (template_literal)))))))) + (expression + (variable_expr + (identifier))) + (expression + (variable_expr + (identifier))) + (ellipsis))))))) diff --git a/test/corpus/function_calls.txt b/test/corpus/function_calls.txt index fbffc02..985e628 100644 --- a/test/corpus/function_calls.txt +++ b/test/corpus/function_calls.txt @@ -1,58 +1,64 @@ -================== +================================================================================ nonary function call -================== +================================================================================ foo = bar() ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (function_call (identifier))))))) + (expression + (function_call + (identifier)))))) -================== +================================================================================ unary function call -================== +================================================================================ foo = bar("foo") ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) (expression - (expr_term - (function_call - (identifier) - (function_arguments - (expression (expr_term (template_expr (quoted_template))))))))))) + (function_call + (identifier) + (function_arguments + (expression + (literal_value + (string_lit + (template_literal)))))))))) -================== +================================================================================ variadic function call -================== +================================================================================ foo = bar(x...) ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) (expression - (expr_term - (function_call - (identifier) - (function_arguments - (expression (expr_term (variable_expr (identifier)))) (ellipsis)))))))) + (function_call + (identifier) + (function_arguments + (expression + (variable_expr + (identifier))) + (ellipsis))))))) -================== +================================================================================ multiline function call -================== +================================================================================ foo = bar( "a", @@ -60,18 +66,25 @@ foo = bar( "c" ) ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) (expression - (expr_term - (function_call - (identifier) - (function_arguments - (expression (expr_term (template_expr (quoted_template)))) - (expression (expr_term (template_expr (quoted_template)))) - (expression (expr_term (template_expr (quoted_template))))))))))) - + (function_call + (identifier) + (function_arguments + (expression + (literal_value + (string_lit + (template_literal)))) + (expression + (literal_value + (string_lit + (template_literal)))) + (expression + (literal_value + (string_lit + (template_literal)))))))))) diff --git a/test/corpus/literals.txt b/test/corpus/literals.txt index 27fc76f..5381740 100644 --- a/test/corpus/literals.txt +++ b/test/corpus/literals.txt @@ -1,128 +1,143 @@ -================== +================================================================================ numeric literal scientific notation 1 -================== +================================================================================ pi = 3 ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (literal_value (numeric_lit))))))) + (expression + (literal_value + (numeric_lit)))))) -================== +================================================================================ numeric literal scientific notation 2 -================== +================================================================================ pi = 3.14 ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (literal_value (numeric_lit))))))) + (expression + (literal_value + (numeric_lit)))))) -================== +================================================================================ numeric literal scientific notation 3 -================== +================================================================================ big_pi = 3.14e+10 ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (literal_value (numeric_lit))))))) + (expression + (literal_value + (numeric_lit)))))) -================== +================================================================================ numeric literal scientific notation 4 -================== +================================================================================ big_pi = 3.14E+10 ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (literal_value (numeric_lit))))))) + (expression + (literal_value + (numeric_lit)))))) -================== +================================================================================ numeric literal scientific notation 5 -================== +================================================================================ small_pi = 3.14e-10 ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (literal_value (numeric_lit))))))) + (expression + (literal_value + (numeric_lit)))))) - -================== +================================================================================ numeric literal scientific notation 6 -================== +================================================================================ small_pi = 3.14E-10 ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (literal_value (numeric_lit))))))) + (expression + (literal_value + (numeric_lit)))))) -================== +================================================================================ bool literal true -================== +================================================================================ foo = true ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (literal_value (bool_lit))))))) + (expression + (literal_value + (bool_lit)))))) -================== +================================================================================ bool literal false -================== +================================================================================ foo = false ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (literal_value (bool_lit))))))) + (expression + (literal_value + (bool_lit)))))) -================== +================================================================================ null literal -================== +================================================================================ foo = null ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (literal_value (null_lit))))))) - - + (expression + (literal_value + (null_lit)))))) diff --git a/test/corpus/operators.txt b/test/corpus/operators.txt index c9510c6..b667833 100644 --- a/test/corpus/operators.txt +++ b/test/corpus/operators.txt @@ -1,10 +1,10 @@ -================== +================================================================================ unary operator - -================== +================================================================================ foo = -3 ---- +-------------------------------------------------------------------------------- (config_file (body @@ -12,39 +12,44 @@ foo = -3 (identifier) (expression (operation - (unary_operation (expr_term (literal_value (numeric_lit))))))))) + (unary_operation + (literal_value + (numeric_lit)))))))) -================== +================================================================================ unary operator ! -================== +================================================================================ foo = !true ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression - (operation - (unary_operation (expr_term (literal_value (bool_lit))))))))) + (expression + (operation + (unary_operation + (literal_value + (bool_lit)))))))) -================== +================================================================================ binary operators + -================== +================================================================================ foo = 1+2 ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression - (operation - (binary_operation - (expr_term (literal_value (numeric_lit))) - (expr_term (literal_value (numeric_lit))))))))) - + (expression + (operation + (binary_operation + (literal_value + (numeric_lit)) + (literal_value + (numeric_lit)))))))) diff --git a/test/corpus/splat.txt b/test/corpus/splat.txt index 7b31619..6b67c08 100644 --- a/test/corpus/splat.txt +++ b/test/corpus/splat.txt @@ -1,86 +1,77 @@ -================== +================================================================================ get attr -================== +================================================================================ foo = bar.baz ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) (expression - (expr_term - (expr_term - (variable_expr - (identifier))) - (get_attr - (identifier))))))) + (variable_expr + (identifier)) + (get_attr + (identifier)))))) -================== +================================================================================ get index -================== +================================================================================ foo = bar[1] ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) (expression - (expr_term - (expr_term - (variable_expr - (identifier))) - (index - (expression - (expr_term - (literal_value - (numeric_lit)))))))))) + (variable_expr + (identifier)) + (index + (expression + (literal_value + (numeric_lit)))))))) -================== +================================================================================ attr splat -================== +================================================================================ foo = bar.*.foo ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) (expression - (expr_term - (expr_term - (variable_expr - (identifier))) + (variable_expr + (identifier)) (splat - (attr_splat - (get_attr - (identifier))))))))) + (attr_splat)) + (get_attr + (identifier)))))) -================== +================================================================================ full splat -================== +================================================================================ foo = bar[*].foo ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) (expression - (expr_term - (expr_term - (variable_expr - (identifier))) + (variable_expr + (identifier)) (splat - (full_splat - (get_attr - (identifier))))))))) + (full_splat)) + (get_attr + (identifier)))))) diff --git a/test/corpus/strings.txt b/test/corpus/strings.txt index 232be5a..b8148c2 100644 --- a/test/corpus/strings.txt +++ b/test/corpus/strings.txt @@ -1,303 +1,229 @@ -================== -string literal one line -================== - -foo = "bar" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (template_expr (quoted_template))))))) - -================== -string literal escaped newline -================== - -foo = "bar\nbaz" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (template_expr (quoted_template (escape_sequence)))))))) - -================== -string literal escaped tab -================== - -foo = "bar\tbaz" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (template_expr (quoted_template (escape_sequence)))))))) - -================== -string literal escaped " -================== - -foo = "bar\"baz" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (template_expr (quoted_template (escape_sequence)))))))) - -================== -string literal escaped \ -================== - -foo = "bar\\baz" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (template_expr (quoted_template (escape_sequence)))))))) - -================== -string literal escaped \uFFFF -================== - -foo = "bar\uFFFFbaz" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (template_expr (quoted_template (escape_sequence)))))))) - -================== -string bad escape sequence -================== - -foo = "bar\pbaz" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (template_expr (quoted_template (ERROR (UNEXPECTED '\'))))))))) - -================== +================================================================================ string bad escape sequence 2 -================== +================================================================================ foo = "bar\uZZ" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template (ERROR (UNEXPECTED '\'))))))))) + (expression + (template_expr + (quoted_template + (template_literal + (ERROR + (UNEXPECTED '\'))))))))) -================== +================================================================================ string literal multi line error -================== +================================================================================ foo = " bar" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template (ERROR (UNEXPECTED 'b'))))))))) + (expression + (template_expr + (quoted_template + (ERROR + (UNEXPECTED 'b')) + (template_literal))))))) -================== +================================================================================ string literal unescaped tab -================== +================================================================================ foo = "foo bar" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template (ERROR (UNEXPECTED 'b'))))))))) + (expression + (template_expr + (quoted_template + (template_literal + (ERROR + (UNEXPECTED 'b'))))))))) -================== +================================================================================ string literal unescaped backslash -================== +================================================================================ foo = "foo\bar" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template (ERROR (UNEXPECTED '\'))))))))) + (expression + (template_expr + (quoted_template + (template_literal + (ERROR + (UNEXPECTED '\'))))))))) -================== +================================================================================ string literal escaped backslash at end -================== +================================================================================ foo = "foo\\" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template (escape_sequence)))))))) + (expression + (literal_value + (string_lit + (template_literal))))))) - -================== +================================================================================ string literal escaped template interpolation -================== +================================================================================ foo = "$${foo.bar}" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template (escape_sequence)))))))) + (expression + (literal_value + (string_lit + (template_literal))))))) -================== +================================================================================ string literal template chars but no template 1 -================== +================================================================================ foo = "$$$" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template))))))) + (expression + (literal_value + (string_lit + (template_literal))))))) -================== +================================================================================ string literal template chars but no template 2 -================== +================================================================================ foo = "100%" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template))))))) + (expression + (literal_value + (string_lit + (template_literal))))))) -================== +================================================================================ string literal template chars but no template 3 -================== +================================================================================ foo = "%\n\t" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template - (escape_sequence) - (escape_sequence)))))))) + (expression + (literal_value + (string_lit + (template_literal))))))) -================== +================================================================================ string literal template chars but no template 4 -================== +================================================================================ foo = "%%\n\t" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template - (escape_sequence) - (escape_sequence)))))))) + (expression + (literal_value + (string_lit + (template_literal))))))) -================== +================================================================================ string literal template chars but no template 5 -================== +================================================================================ foo = "$$" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template))))))) + (expression + (literal_value + (string_lit + (template_literal))))))) -================== +================================================================================ string literal template chars but no template 6 -================== +================================================================================ foo = "%%{\n\t" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template - (escape_sequence) - (escape_sequence) - (escape_sequence)))))))) + (expression + (literal_value + (string_lit + (template_literal))))))) -================== +================================================================================ string literal escaped template -================== +================================================================================ foo = "$${ var.bar }" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template (escape_sequence)))))))) - -================== -proper quoted template in string literal position errors -================== - -resource "${var.bar}" { -} - ---- - -(config_file - (body - (block - (identifier) - (string_lit (ERROR))))) + (expression + (literal_value + (string_lit + (template_literal))))))) diff --git a/test/corpus/templates.txt b/test/corpus/templates.txt index 787e37e..a9de299 100644 --- a/test/corpus/templates.txt +++ b/test/corpus/templates.txt @@ -1,13 +1,145 @@ -================== -quoted template expression -================== +================================================================================ +simple quoted template expression +================================================================================ foo = "${ var.bar }" ---- +-------------------------------------------------------------------------------- (config_file (body (attribute (identifier) - (expression (expr_term (template_expr (quoted_template (template_interpolation)))))))) + (expression + (template_expr + (quoted_template + (template_interpolation + (expression + (variable_expr + (identifier)) + (get_attr + (identifier)))))))))) + +================================================================================ +quoted template expression with escaped strings and fake strip marker +================================================================================ + +foo = "${ " ~ " }" + +-------------------------------------------------------------------------------- + +(config_file + (body + (attribute + (identifier) + (expression + (template_expr + (quoted_template + (template_interpolation + (expression + (literal_value + (string_lit + (template_literal))))))))))) + +================================================================================ +quoted template with nested quoted template +================================================================================ + +foo = "p-${ foo("v-${a.b}") }" + +-------------------------------------------------------------------------------- + +(config_file + (body + (attribute + (identifier) + (expression + (template_expr + (quoted_template + (template_literal) + (template_interpolation + (expression + (function_call + (identifier) + (function_arguments + (expression + (template_expr + (quoted_template + (template_literal) + (template_interpolation + (expression + (variable_expr + (identifier)) + (get_attr + (identifier))))))))))))))))) + +================================================================================ +quoted template interpolation with strip markers +================================================================================ + +foo = "hello ${~ "world" ~} hello" + +-------------------------------------------------------------------------------- + +(config_file + (body + (attribute + (identifier) + (expression + (template_expr + (quoted_template + (template_literal) + (template_interpolation + (strip_marker) + (expression + (literal_value + (string_lit + (template_literal)))) + (strip_marker)) + (template_literal))))))) + +================================================================================ +quoted template object expression in template +================================================================================ + +foo = "${ {a=b}[a] }" + +-------------------------------------------------------------------------------- + +(config_file + (body + (attribute + (identifier) + (expression + (template_expr + (quoted_template + (template_interpolation + (expression + (collection_value + (object + (object_elem + (identifier) + (expression + (variable_expr + (identifier)))))) + (index + (expression + (variable_expr + (identifier)))))))))))) + +================================================================================ +escaped template interpolation start +================================================================================ + +foo = "hello $${ world" + +-------------------------------------------------------------------------------- + +(config_file + (body + (attribute + (identifier) + (expression + (literal_value + (string_lit + (template_literal)))))))