diff --git a/.github/workflows/unittests.yaml b/.github/workflows/unittests.yaml index 057a171..a7e11b4 100644 --- a/.github/workflows/unittests.yaml +++ b/.github/workflows/unittests.yaml @@ -1,7 +1,6 @@ name: unittests on: push: - pull_request: jobs: unittests: diff --git a/.gitignore b/.gitignore index 005c580..a717c7b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ node_modules +queries +package-lock.json build npm-debug.log .env diff --git a/README.md b/README.md index a13763a..ade34fc 100644 --- a/README.md +++ b/README.md @@ -2,15 +2,37 @@ tree-sitter grammar for the [HCL](https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md) language -## developing +## Developing It is recommended to use `nix` to fulfill all development dependencies. To activate the development environment simply run `nix-shell` in the project root. -## running tests +## Running Tests To run tests simply run `nix-shell --run 'tree-sitter test'`. -## todo +## Example -* use [UnicodeĀ® Standard Annex #31](https://www.unicode.org/reports/tr31/) (augmented with '-')for identifiers +Highlighting `example/example.hcl`: + +![Highlighting Example](https://i.imgur.com/JdfxHvE.jpeg) + +## Quoted Template Expressions + +In principle it is allowed to contain arbitary expressions in quoted template expressions. +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. + +## String Literals + +String literals are parsed as quoted templates. The calling application should check if the node contains any template interpolations or directives. + +## Todo + +* use [UnicodeĀ® Standard Annex #31](https://www.unicode.org/reports/tr31/) (augmented with '-') for identifiers * add [template expressions](https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md#template-expressions) diff --git a/example/example.hcl b/example/example.hcl index c601173..f617438 100644 --- a/example/example.hcl +++ b/example/example.hcl @@ -15,15 +15,18 @@ resource_1 "strlit1" "strlit2" { splat1 = tuple.*.foo.bar[0] splat2 = tuple[*].foo.bar[0] for1 = { for i, v in ["a", "a", "b"] : v => i... } - for2 = [ for k, v in local.map : "${k}-${v}" ] - for3 = { for k, v in local.map : k => v } - for4 = [ for v in local.list : v ] - for5 = { for v in local.list : v => v } - for6 = [ for v in local.list : v if v < 3 ] + for2 = [ for k, v in var.map : "${k}-${v}" ] + for3 = { for k, v in var.map : k => v } + for4 = [ for v in var.list : v ] + for5 = { for v in var.list : v => v } + for6 = [ for v in var.list : v if v < 3 ] func1 = is_number("123") cond1 = (1 == 2) ? 1 : "foobar" bin1 = ((1+2)%3)*4 esc1 = "\" \t \UFF11FF22 \uFFFF \n" + esc2 = "$${} %%{}" + tpl1 = "prefix-${var.bar}" + tpl2 = "prefix-${func(\"bar\"}" nested_resource_1 { attr1 = 2 diff --git a/grammar.js b/grammar.js index 37a186b..01908bd 100644 --- a/grammar.js +++ b/grammar.js @@ -1,4 +1,16 @@ const + PREC = { + unary: 7, + binary_mult: 6, + binary_add: 5, + binary_ord: 4, + binary_comp: 3, + binary_and: 2, + binary_or: 1, + + quoted_string: 2, + quoted_template: 1, + } unicodeLetter = /\p{L}/ unicodePunctuation = /\p{Pc}/ unicodeDigit = /[0-9]/ @@ -7,11 +19,17 @@ module.exports = grammar({ name: 'hcl', conflicts: $ => [ - [$.body], - [$.object_elem, $.variable_expr], - [$.attr_splat], - [$.full_splat], - [$.conditional], + [$.body], + [$.object_elem, $.variable_expr], + [$.attr_splat], + [$.full_splat], + [$.conditional], + ], + + externals: $ => [ + $._template_char, + $._template_char_in_interpolation, + $.escape_sequence, ], extras: $ => [ @@ -57,7 +75,7 @@ module.exports = grammar({ expr_term: $ => choice( $.literal_value, - // $.template_expr, + $.template_expr, $.collection_value, $.variable_expr, $.function_call, @@ -70,36 +88,18 @@ module.exports = grammar({ literal_value: $ => choice( $.numeric_lit, - $.string_lit, $.bool_lit, $.null_lit, ), numeric_lit: $ => /[0-9]+(\.[0-9]+([eE][-+]?[0-9]+)?)?/, - string_lit: $ => seq( - '"', - repeat(choice(token.immediate(prec(1, /[^\\"\n\r\t]+/)), $.escape_sequence)), - '"', - ), - - escape_sequence: $ => token.immediate(seq( - '\\', - choice( - '\\', - '"', - 'n', - 'r', - 't', - /u[0-9a-fA-F]{4}/, - /U[0-9a-fA-F]{8}/ - ) - )), - bool_lit: $ => choice('true', 'false'), null_lit: $ => 'null', + // string_lit is defined as quoted template + collection_value: $ => choice( $.tuple, $.object, @@ -210,16 +210,16 @@ module.exports = grammar({ operation: $ => choice($.unary_operation, $.binary_operation), - unary_operation: $ => prec.left(7, seq(choice('-', '!'), $.expr_term)), + unary_operation: $ => prec.left(PREC.unary, seq(choice('-', '!'), $.expr_term)), binary_operation: $ => { const table = [ - [6, choice('*', '/', '%')], - [5, choice('+', '-')], - [4, choice('>', '>=', '<', '<=')], - [3, choice('==', '!=')], - [2, choice('&&')], - [1, choice('||')], + [PREC.binary_mult, choice('*', '/', '%')], + [PREC.binary_add, choice('+', '-')], + [PREC.binary_ord, choice('>', '>=', '<', '<=')], + [PREC.binary_comp, choice('==', '!=')], + [PREC.binary_and, choice('&&')], + [PREC.binary_or, choice('||')], ]; return choice(...table.map(([precedence, operator]) => @@ -228,6 +228,30 @@ module.exports = grammar({ ); }, + template_expr: $ => choice( + $.quoted_template, + // $.heredoc_template, + ), + + // application should check that no template interpolation is contained + string_lit: $ => $.quoted_template, + + quoted_template: $ => seq( + '"', + repeat(choice( + $._template_char, + $.escape_sequence, + $.template_interpolation, + )), + '"', + ), + + template_interpolation: $ => seq( + choice('${', '${~'), + repeat(choice($._template_char_in_interpolation, $.escape_sequence)), + choice('}', '~}'), + ), + // http://stackoverflow.com/questions/13014947/regex-to-match-a-c-style-multiline-comment/36328890#36328890 comment: $ => token(choice( seq('#', /.*/), diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index c6e2e54..0000000 --- a/package-lock.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "tree-sitter-hcl", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "tree-sitter-cli": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.19.5.tgz", - "integrity": "sha512-kRzKrUAwpDN9AjA3b0tPBwT1hd8N2oQvvvHup2OEsX6mdsSMLmAvR+NSqK9fe05JrRbVvG8mbteNUQsxlMQohQ==" - } - } -} diff --git a/package.json b/package.json index 3094f4d..1ac10bc 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,8 @@ { "name": "tree-sitter-hcl", - "version": "1.0.0", + "version": "0.2.0-snapshot", "description": "", "main": "bindings/node", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, "author": "", "license": "ISC", "dependencies": { diff --git a/src/grammar.json b/src/grammar.json index 4cf1930..f1c3c39 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -152,6 +152,10 @@ "type": "SYMBOL", "name": "literal_value" }, + { + "type": "SYMBOL", + "name": "template_expr" + }, { "type": "SYMBOL", "name": "collection_value" @@ -233,10 +237,6 @@ "type": "SYMBOL", "name": "numeric_lit" }, - { - "type": "SYMBOL", - "name": "string_lit" - }, { "type": "SYMBOL", "name": "bool_lit" @@ -251,87 +251,6 @@ "type": "PATTERN", "value": "[0-9]+(\\.[0-9]+([eE][-+]?[0-9]+)?)?" }, - "string_lit": { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "\"" - }, - { - "type": "REPEAT", - "content": { - "type": "CHOICE", - "members": [ - { - "type": "IMMEDIATE_TOKEN", - "content": { - "type": "PREC", - "value": 1, - "content": { - "type": "PATTERN", - "value": "[^\\\\\"\\n\\r\\t]+" - } - } - }, - { - "type": "SYMBOL", - "name": "escape_sequence" - } - ] - } - }, - { - "type": "STRING", - "value": "\"" - } - ] - }, - "escape_sequence": { - "type": "IMMEDIATE_TOKEN", - "content": { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "\\" - }, - { - "type": "CHOICE", - "members": [ - { - "type": "STRING", - "value": "\\" - }, - { - "type": "STRING", - "value": "\"" - }, - { - "type": "STRING", - "value": "n" - }, - { - "type": "STRING", - "value": "r" - }, - { - "type": "STRING", - "value": "t" - }, - { - "type": "PATTERN", - "value": "u[0-9a-fA-F]{4}" - }, - { - "type": "PATTERN", - "value": "U[0-9a-fA-F]{8}" - } - ] - } - ] - } - }, "bool_lit": { "type": "CHOICE", "members": [ @@ -1086,6 +1005,99 @@ } ] }, + "template_expr": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "quoted_template" + } + ] + }, + "string_lit": { + "type": "SYMBOL", + "name": "quoted_template" + }, + "quoted_template": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "\"" + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_template_char" + }, + { + "type": "SYMBOL", + "name": "escape_sequence" + }, + { + "type": "SYMBOL", + "name": "template_interpolation" + } + ] + } + }, + { + "type": "STRING", + "value": "\"" + } + ] + }, + "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": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "}" + }, + { + "type": "STRING", + "value": "~}" + } + ] + } + ] + }, "comment": { "type": "TOKEN", "content": { @@ -1167,7 +1179,20 @@ ] ], "precedences": [], - "externals": [], + "externals": [ + { + "type": "SYMBOL", + "name": "_template_char" + }, + { + "type": "SYMBOL", + "name": "_template_char_in_interpolation" + }, + { + "type": "SYMBOL", + "name": "escape_sequence" + } + ], "inline": [], "supertypes": [] } diff --git a/src/node-types.json b/src/node-types.json index c65c8f0..e3cfa1f 100644 --- a/src/node-types.json +++ b/src/node-types.json @@ -206,6 +206,10 @@ "type": "splat", "named": true }, + { + "type": "template_expr", + "named": true + }, { "type": "variable_expr", "named": true @@ -452,10 +456,6 @@ { "type": "numeric_lit", "named": true - }, - { - "type": "string_lit", - "named": true } ] } @@ -513,6 +513,25 @@ ] } }, + { + "type": "quoted_template", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "escape_sequence", + "named": true + }, + { + "type": "template_interpolation", + "named": true + } + ] + } + }, { "type": "splat", "named": true, @@ -536,6 +555,36 @@ "type": "string_lit", "named": true, "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "quoted_template", + "named": true + } + ] + } + }, + { + "type": "template_expr", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "quoted_template", + "named": true + } + ] + } + }, + { + "type": "template_interpolation", + "named": true, + "fields": {}, "children": { "multiple": true, "required": false, @@ -604,6 +653,14 @@ "type": "\"", "named": false }, + { + "type": "${", + "named": false + }, + { + "type": "${~", + "named": false + }, { "type": "%", "named": false @@ -743,5 +800,9 @@ { "type": "}", "named": false + }, + { + "type": "~}", + "named": false } ] \ No newline at end of file diff --git a/src/parser.c b/src/parser.c index 89a46ad..c59f109 100644 --- a/src/parser.c +++ b/src/parser.c @@ -6,12 +6,12 @@ #endif #define LANGUAGE_VERSION 13 -#define STATE_COUNT 209 +#define STATE_COUNT 217 #define LARGE_STATE_COUNT 2 -#define SYMBOL_COUNT 77 +#define SYMBOL_COUNT 85 #define ALIAS_COUNT 0 -#define TOKEN_COUNT 40 -#define EXTERNAL_TOKEN_COUNT 0 +#define TOKEN_COUNT 44 +#define EXTERNAL_TOKEN_COUNT 3 #define FIELD_COUNT 1 #define MAX_ALIAS_SEQUENCE_LENGTH 8 #define PRODUCTION_ID_COUNT 2 @@ -24,75 +24,83 @@ enum { anon_sym_LPAREN = 5, anon_sym_RPAREN = 6, sym_numeric_lit = 7, - anon_sym_DQUOTE = 8, - aux_sym_string_lit_token1 = 9, - sym_escape_sequence = 10, - anon_sym_true = 11, - anon_sym_false = 12, - sym_null_lit = 13, - anon_sym_LBRACK = 14, - anon_sym_COMMA = 15, - anon_sym_RBRACK = 16, - anon_sym_COLON = 17, - anon_sym_DOT = 18, - anon_sym_STAR = 19, - anon_sym_EQ_GT = 20, - anon_sym_for = 21, - anon_sym_in = 22, - anon_sym_if = 23, - sym_ellipsis = 24, - anon_sym_QMARK = 25, - anon_sym_DASH = 26, - anon_sym_BANG = 27, - anon_sym_SLASH = 28, - anon_sym_PERCENT = 29, - anon_sym_PLUS = 30, - anon_sym_GT = 31, - anon_sym_GT_EQ = 32, - anon_sym_LT = 33, - anon_sym_LT_EQ = 34, - anon_sym_EQ_EQ = 35, - anon_sym_BANG_EQ = 36, - anon_sym_AMP_AMP = 37, - anon_sym_PIPE_PIPE = 38, - sym_comment = 39, - sym_config_file = 40, - sym_body = 41, - sym_attribute = 42, - sym_block = 43, - sym_expression = 44, - sym_expr_term = 45, - sym_literal_value = 46, - sym_string_lit = 47, - sym_bool_lit = 48, - sym_collection_value = 49, - sym_tuple = 50, - sym_object = 51, - sym_object_elem = 52, - sym_index = 53, - sym_get_attr = 54, - sym_splat = 55, - sym_attr_splat = 56, - sym_full_splat = 57, - sym_for_expr = 58, - sym_for_tuple_expr = 59, - sym_for_object_expr = 60, - sym_for_intro = 61, - sym_for_cond = 62, - sym_variable_expr = 63, - sym_function_call = 64, - sym_function_arguments = 65, - sym_conditional = 66, - sym_operation = 67, - sym_unary_operation = 68, - sym_binary_operation = 69, - aux_sym_body_repeat1 = 70, - aux_sym_block_repeat1 = 71, - aux_sym_string_lit_repeat1 = 72, - aux_sym_tuple_repeat1 = 73, - aux_sym_object_repeat1 = 74, - aux_sym_attr_splat_repeat1 = 75, - aux_sym_full_splat_repeat1 = 76, + anon_sym_true = 8, + anon_sym_false = 9, + sym_null_lit = 10, + anon_sym_LBRACK = 11, + anon_sym_COMMA = 12, + anon_sym_RBRACK = 13, + anon_sym_COLON = 14, + anon_sym_DOT = 15, + anon_sym_STAR = 16, + anon_sym_EQ_GT = 17, + anon_sym_for = 18, + anon_sym_in = 19, + anon_sym_if = 20, + sym_ellipsis = 21, + anon_sym_QMARK = 22, + anon_sym_DASH = 23, + anon_sym_BANG = 24, + anon_sym_SLASH = 25, + anon_sym_PERCENT = 26, + anon_sym_PLUS = 27, + anon_sym_GT = 28, + anon_sym_GT_EQ = 29, + anon_sym_LT = 30, + anon_sym_LT_EQ = 31, + anon_sym_EQ_EQ = 32, + 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_quoted_template_repeat1 = 83, + aux_sym_template_interpolation_repeat1 = 84, }; static const char * const ts_symbol_names[] = { @@ -104,9 +112,6 @@ static const char * const ts_symbol_names[] = { [anon_sym_LPAREN] = "(", [anon_sym_RPAREN] = ")", [sym_numeric_lit] = "numeric_lit", - [anon_sym_DQUOTE] = "\"", - [aux_sym_string_lit_token1] = "string_lit_token1", - [sym_escape_sequence] = "escape_sequence", [anon_sym_true] = "true", [anon_sym_false] = "false", [sym_null_lit] = "null_lit", @@ -135,7 +140,14 @@ 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_comment] = "comment", + [sym__template_char] = "_template_char", + [sym__template_char_in_interpolation] = "_template_char_in_interpolation", + [sym_escape_sequence] = "escape_sequence", [sym_config_file] = "config_file", [sym_body] = "body", [sym_attribute] = "attribute", @@ -143,7 +155,6 @@ static const char * const ts_symbol_names[] = { [sym_expression] = "expression", [sym_expr_term] = "expr_term", [sym_literal_value] = "literal_value", - [sym_string_lit] = "string_lit", [sym_bool_lit] = "bool_lit", [sym_collection_value] = "collection_value", [sym_tuple] = "tuple", @@ -166,13 +177,18 @@ static const char * const ts_symbol_names[] = { [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_interpolation] = "template_interpolation", [aux_sym_body_repeat1] = "body_repeat1", [aux_sym_block_repeat1] = "block_repeat1", - [aux_sym_string_lit_repeat1] = "string_lit_repeat1", [aux_sym_tuple_repeat1] = "tuple_repeat1", [aux_sym_object_repeat1] = "object_repeat1", [aux_sym_attr_splat_repeat1] = "attr_splat_repeat1", [aux_sym_full_splat_repeat1] = "full_splat_repeat1", + [aux_sym_quoted_template_repeat1] = "quoted_template_repeat1", + [aux_sym_template_interpolation_repeat1] = "template_interpolation_repeat1", }; static const TSSymbol ts_symbol_map[] = { @@ -184,9 +200,6 @@ static const TSSymbol ts_symbol_map[] = { [anon_sym_LPAREN] = anon_sym_LPAREN, [anon_sym_RPAREN] = anon_sym_RPAREN, [sym_numeric_lit] = sym_numeric_lit, - [anon_sym_DQUOTE] = anon_sym_DQUOTE, - [aux_sym_string_lit_token1] = aux_sym_string_lit_token1, - [sym_escape_sequence] = sym_escape_sequence, [anon_sym_true] = anon_sym_true, [anon_sym_false] = anon_sym_false, [sym_null_lit] = sym_null_lit, @@ -215,7 +228,14 @@ 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_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_config_file] = sym_config_file, [sym_body] = sym_body, [sym_attribute] = sym_attribute, @@ -223,7 +243,6 @@ static const TSSymbol ts_symbol_map[] = { [sym_expression] = sym_expression, [sym_expr_term] = sym_expr_term, [sym_literal_value] = sym_literal_value, - [sym_string_lit] = sym_string_lit, [sym_bool_lit] = sym_bool_lit, [sym_collection_value] = sym_collection_value, [sym_tuple] = sym_tuple, @@ -246,13 +265,18 @@ static const TSSymbol ts_symbol_map[] = { [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_interpolation] = sym_template_interpolation, [aux_sym_body_repeat1] = aux_sym_body_repeat1, [aux_sym_block_repeat1] = aux_sym_block_repeat1, - [aux_sym_string_lit_repeat1] = aux_sym_string_lit_repeat1, [aux_sym_tuple_repeat1] = aux_sym_tuple_repeat1, [aux_sym_object_repeat1] = aux_sym_object_repeat1, [aux_sym_attr_splat_repeat1] = aux_sym_attr_splat_repeat1, [aux_sym_full_splat_repeat1] = aux_sym_full_splat_repeat1, + [aux_sym_quoted_template_repeat1] = aux_sym_quoted_template_repeat1, + [aux_sym_template_interpolation_repeat1] = aux_sym_template_interpolation_repeat1, }; static const TSSymbolMetadata ts_symbol_metadata[] = { @@ -288,18 +312,6 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, - [anon_sym_DQUOTE] = { - .visible = true, - .named = false, - }, - [aux_sym_string_lit_token1] = { - .visible = false, - .named = false, - }, - [sym_escape_sequence] = { - .visible = true, - .named = true, - }, [anon_sym_true] = { .visible = true, .named = false, @@ -412,10 +424,38 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, + [anon_sym_DQUOTE] = { + .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, + }, [sym_comment] = { .visible = true, .named = true, }, + [sym__template_char] = { + .visible = false, + .named = true, + }, + [sym__template_char_in_interpolation] = { + .visible = false, + .named = true, + }, + [sym_escape_sequence] = { + .visible = true, + .named = true, + }, [sym_config_file] = { .visible = true, .named = true, @@ -444,10 +484,6 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, - [sym_string_lit] = { - .visible = true, - .named = true, - }, [sym_bool_lit] = { .visible = true, .named = true, @@ -536,6 +572,22 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [sym_template_expr] = { + .visible = true, + .named = true, + }, + [sym_string_lit] = { + .visible = true, + .named = true, + }, + [sym_quoted_template] = { + .visible = true, + .named = true, + }, + [sym_template_interpolation] = { + .visible = true, + .named = true, + }, [aux_sym_body_repeat1] = { .visible = false, .named = false, @@ -544,10 +596,6 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = false, }, - [aux_sym_string_lit_repeat1] = { - .visible = false, - .named = false, - }, [aux_sym_tuple_repeat1] = { .visible = false, .named = false, @@ -564,6 +612,14 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = false, }, + [aux_sym_quoted_template_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_template_interpolation_repeat1] = { + .visible = false, + .named = false, + }, }; enum { @@ -2139,623 +2195,480 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { eof = lexer->eof(lexer); switch (state) { case 0: - if (eof) ADVANCE(42); - if (lookahead == '!') ADVANCE(94); - if (lookahead == '"') ADVANCE(66); - if (lookahead == '#') ADVANCE(107); - if (lookahead == '%') ADVANCE(96); - if (lookahead == '&') ADVANCE(7); - if (lookahead == '(') ADVANCE(61); - if (lookahead == ')') ADVANCE(62); - if (lookahead == '*') ADVANCE(84); - if (lookahead == '+') ADVANCE(97); - if (lookahead == ',') ADVANCE(80); - if (lookahead == '-') ADVANCE(92); - if (lookahead == '.') ADVANCE(83); - if (lookahead == '/') ADVANCE(95); - if (lookahead == ':') ADVANCE(82); - if (lookahead == '<') ADVANCE(100); - if (lookahead == '=') ADVANCE(45); - if (lookahead == '>') ADVANCE(98); - if (lookahead == '?') ADVANCE(91); - if (lookahead == '[') ADVANCE(79); - if (lookahead == '\\') ADVANCE(29); - if (lookahead == ']') ADVANCE(81); - if (lookahead == 'f') ADVANCE(14); - if (lookahead == 'i') ADVANCE(18); - if (lookahead == 'n') ADVANCE(26); - if (lookahead == 't') ADVANCE(23); - if (lookahead == '{') ADVANCE(46); - if (lookahead == '|') ADVANCE(27); - if (lookahead == '}') ADVANCE(47); + 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 (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 == '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 == '\t' || lookahead == '\n' || lookahead == '\r' || - lookahead == ' ') SKIP(40) - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(63); + lookahead == ' ') SKIP(0) + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(53); END_STATE(); case 1: - if (lookahead == ' ') ADVANCE(67); - if (lookahead == '"') ADVANCE(66); - if (lookahead == '#') ADVANCE(71); - if (lookahead == '/') ADVANCE(68); - if (lookahead == '\\') ADVANCE(29); + if (lookahead == '!') ADVANCE(10); + if (lookahead == '#') ADVANCE(94); + if (lookahead == '%') ADVANCE(79); + 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 == 'i') ADVANCE(15); + if (lookahead == '|') ADVANCE(26); + if (lookahead == '}') ADVANCE(37); if (lookahead == '\t' || lookahead == '\n' || - lookahead == '\r') SKIP(6) - if (lookahead != 0) ADVANCE(71); + lookahead == '\r' || + lookahead == ' ') SKIP(1) END_STATE(); case 2: - if (lookahead == '!') ADVANCE(12); - if (lookahead == '#') ADVANCE(107); - if (lookahead == '%') ADVANCE(96); - if (lookahead == '&') ADVANCE(7); - if (lookahead == '(') ADVANCE(61); - if (lookahead == '*') ADVANCE(84); - if (lookahead == '+') ADVANCE(97); - if (lookahead == '-') ADVANCE(92); - if (lookahead == '.') ADVANCE(83); - if (lookahead == '/') ADVANCE(95); - if (lookahead == ':') ADVANCE(82); - if (lookahead == '<') ADVANCE(100); - if (lookahead == '=') ADVANCE(44); - if (lookahead == '>') ADVANCE(98); - if (lookahead == '?') ADVANCE(91); - if (lookahead == '[') ADVANCE(79); - if (lookahead == ']') ADVANCE(81); - if (lookahead == 'i') ADVANCE(17); - if (lookahead == '|') ADVANCE(27); - if (lookahead == '}') ADVANCE(47); + 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(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 == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(2) + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(53); + if (sym_identifier_character_set_1(lookahead)) ADVANCE(50); END_STATE(); case 3: - if (lookahead == '!') ADVANCE(93); - if (lookahead == '"') ADVANCE(66); - if (lookahead == '#') ADVANCE(107); - if (lookahead == '(') ADVANCE(61); - if (lookahead == ')') ADVANCE(62); - if (lookahead == '*') ADVANCE(84); - if (lookahead == '-') ADVANCE(92); - if (lookahead == '/') ADVANCE(8); - if (lookahead == '=') ADVANCE(13); - if (lookahead == '?') ADVANCE(91); - if (lookahead == '[') ADVANCE(79); - if (lookahead == 'f') ADVANCE(49); - if (lookahead == 'n') ADVANCE(59); - if (lookahead == 't') ADVANCE(56); - if (lookahead == '{') ADVANCE(46); + if (lookahead == '!') ADVANCE(76); + if (lookahead == '"') ADVANCE(89); + if (lookahead == '#') ADVANCE(94); + if (lookahead == '(') ADVANCE(51); + if (lookahead == '-') ADVANCE(75); + 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 == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(3) - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(63); - if (sym_identifier_character_set_1(lookahead)) ADVANCE(60); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(53); + if (sym_identifier_character_set_1(lookahead)) ADVANCE(50); END_STATE(); case 4: - if (lookahead == '!') ADVANCE(93); - if (lookahead == '"') ADVANCE(66); - if (lookahead == '#') ADVANCE(107); - if (lookahead == '(') ADVANCE(61); - if (lookahead == '-') ADVANCE(92); - if (lookahead == '/') ADVANCE(8); - if (lookahead == ':') ADVANCE(82); - if (lookahead == '=') ADVANCE(43); - if (lookahead == '?') ADVANCE(91); - if (lookahead == '[') ADVANCE(79); - if (lookahead == ']') ADVANCE(81); - if (lookahead == 'f') ADVANCE(48); - if (lookahead == 'n') ADVANCE(59); - if (lookahead == 't') ADVANCE(56); - if (lookahead == '{') ADVANCE(46); - if (lookahead == '}') ADVANCE(47); + if (lookahead == '"') ADVANCE(89); + if (lookahead == '#') ADVANCE(94); + if (lookahead == '/') ADVANCE(6); + if (lookahead == '=') ADVANCE(33); + if (lookahead == '{') ADVANCE(36); if (lookahead == '\t' || lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(4) - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(63); - if (sym_identifier_character_set_1(lookahead)) ADVANCE(60); + if (sym_identifier_character_set_1(lookahead)) ADVANCE(50); END_STATE(); case 5: - if (lookahead == '"') ADVANCE(66); - if (lookahead == '#') ADVANCE(107); - if (lookahead == '/') ADVANCE(8); - if (lookahead == '=') ADVANCE(43); - if (lookahead == '{') ADVANCE(46); - if (lookahead == '\t' || - lookahead == '\n' || - lookahead == '\r' || - lookahead == ' ') SKIP(5) - if (sym_identifier_character_set_1(lookahead)) ADVANCE(60); + if (lookahead == '&') ADVANCE(87); END_STATE(); case 6: - if (lookahead == '"') ADVANCE(66); - if (lookahead == '#') ADVANCE(107); - if (lookahead == '/') ADVANCE(8); - if (lookahead == '\t' || - lookahead == '\n' || - lookahead == '\r' || - lookahead == ' ') SKIP(6) + if (lookahead == '*') ADVANCE(8); + if (lookahead == '/') ADVANCE(94); END_STATE(); case 7: - if (lookahead == '&') ADVANCE(104); + if (lookahead == '*') ADVANCE(7); + if (lookahead == '/') ADVANCE(93); + if (lookahead != 0) ADVANCE(8); END_STATE(); case 8: - if (lookahead == '*') ADVANCE(10); - if (lookahead == '/') ADVANCE(107); + if (lookahead == '*') ADVANCE(7); + if (lookahead != 0) ADVANCE(8); END_STATE(); case 9: - if (lookahead == '*') ADVANCE(9); - if (lookahead == '/') ADVANCE(106); - if (lookahead != 0) ADVANCE(10); + if (lookahead == '.') ADVANCE(73); END_STATE(); case 10: - if (lookahead == '*') ADVANCE(9); - if (lookahead != 0) ADVANCE(10); + if (lookahead == '=') ADVANCE(86); END_STATE(); case 11: - if (lookahead == '.') ADVANCE(90); + if (lookahead == '>') ADVANCE(68); END_STATE(); case 12: - if (lookahead == '=') ADVANCE(103); + if (lookahead == 'a') ADVANCE(17); + if (lookahead == 'o') ADVANCE(20); END_STATE(); case 13: - if (lookahead == '>') ADVANCE(85); + if (lookahead == 'e') ADVANCE(56); END_STATE(); case 14: - if (lookahead == 'a') ADVANCE(19); - if (lookahead == 'o') ADVANCE(22); + if (lookahead == 'e') ADVANCE(58); END_STATE(); case 15: - if (lookahead == 'e') ADVANCE(73); + if (lookahead == 'f') ADVANCE(72); END_STATE(); case 16: - if (lookahead == 'e') ADVANCE(75); + if (lookahead == 'f') ADVANCE(72); + if (lookahead == 'n') ADVANCE(71); END_STATE(); case 17: - if (lookahead == 'f') ADVANCE(89); + if (lookahead == 'l') ADVANCE(22); END_STATE(); case 18: - if (lookahead == 'f') ADVANCE(89); - if (lookahead == 'n') ADVANCE(88); + if (lookahead == 'l') ADVANCE(60); END_STATE(); case 19: - if (lookahead == 'l') ADVANCE(24); + if (lookahead == 'l') ADVANCE(18); END_STATE(); case 20: - if (lookahead == 'l') ADVANCE(77); + if (lookahead == 'r') ADVANCE(69); END_STATE(); case 21: - if (lookahead == 'l') ADVANCE(20); + if (lookahead == 'r') ADVANCE(23); END_STATE(); case 22: - if (lookahead == 'r') ADVANCE(86); + if (lookahead == 's') ADVANCE(14); END_STATE(); case 23: - if (lookahead == 'r') ADVANCE(25); + if (lookahead == 'u') ADVANCE(13); END_STATE(); case 24: - if (lookahead == 's') ADVANCE(16); + if (lookahead == 'u') ADVANCE(19); END_STATE(); case 25: - if (lookahead == 'u') ADVANCE(15); + if (lookahead == '{') ADVANCE(90); END_STATE(); case 26: - if (lookahead == 'u') ADVANCE(21); + if (lookahead == '|') ADVANCE(88); END_STATE(); case 27: - if (lookahead == '|') ADVANCE(105); + if (lookahead == '}') ADVANCE(92); END_STATE(); case 28: if (lookahead == '+' || - lookahead == '-') ADVANCE(31); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(65); + lookahead == '-') ADVANCE(30); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(55); END_STATE(); case 29: - if (lookahead == '"' || - lookahead == '\\' || - lookahead == 'n' || - lookahead == 'r' || - lookahead == 't') ADVANCE(72); - if (lookahead == 'U') ADVANCE(39); - if (lookahead == 'u') ADVANCE(35); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(54); END_STATE(); case 30: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(64); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(55); END_STATE(); case 31: - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(65); + if (eof) ADVANCE(32); + if (lookahead == '!') ADVANCE(10); + if (lookahead == '"') ADVANCE(89); + if (lookahead == '#') ADVANCE(94); + if (lookahead == '%') ADVANCE(79); + 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 == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') SKIP(31) + if (sym_identifier_character_set_1(lookahead)) ADVANCE(50); END_STATE(); case 32: - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(72); - END_STATE(); - case 33: - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(32); - END_STATE(); - case 34: - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(33); - END_STATE(); - case 35: - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(34); - END_STATE(); - case 36: - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(35); - END_STATE(); - case 37: - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(36); - END_STATE(); - case 38: - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(37); - END_STATE(); - case 39: - if (('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(38); - END_STATE(); - case 40: - if (eof) ADVANCE(42); - if (lookahead == '!') ADVANCE(94); - if (lookahead == '"') ADVANCE(66); - if (lookahead == '#') ADVANCE(107); - if (lookahead == '%') ADVANCE(96); - if (lookahead == '&') ADVANCE(7); - if (lookahead == '(') ADVANCE(61); - if (lookahead == ')') ADVANCE(62); - if (lookahead == '*') ADVANCE(84); - if (lookahead == '+') ADVANCE(97); - if (lookahead == ',') ADVANCE(80); - if (lookahead == '-') ADVANCE(92); - if (lookahead == '.') ADVANCE(83); - if (lookahead == '/') ADVANCE(95); - if (lookahead == ':') ADVANCE(82); - if (lookahead == '<') ADVANCE(100); - if (lookahead == '=') ADVANCE(45); - if (lookahead == '>') ADVANCE(98); - if (lookahead == '?') ADVANCE(91); - if (lookahead == '[') ADVANCE(79); - if (lookahead == ']') ADVANCE(81); - if (lookahead == 'f') ADVANCE(14); - if (lookahead == 'i') ADVANCE(18); - if (lookahead == 'n') ADVANCE(26); - if (lookahead == 't') ADVANCE(23); - if (lookahead == '{') ADVANCE(46); - if (lookahead == '|') ADVANCE(27); - if (lookahead == '}') ADVANCE(47); - if (lookahead == '\t' || - lookahead == '\n' || - lookahead == '\r' || - lookahead == ' ') SKIP(40) - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(63); - END_STATE(); - case 41: - if (eof) ADVANCE(42); - if (lookahead == '!') ADVANCE(12); - if (lookahead == '"') ADVANCE(66); - if (lookahead == '#') ADVANCE(107); - if (lookahead == '%') ADVANCE(96); - if (lookahead == '&') ADVANCE(7); - if (lookahead == '(') ADVANCE(61); - if (lookahead == ')') ADVANCE(62); - if (lookahead == '*') ADVANCE(84); - if (lookahead == '+') ADVANCE(97); - if (lookahead == ',') ADVANCE(80); - if (lookahead == '-') ADVANCE(92); - if (lookahead == '.') ADVANCE(83); - if (lookahead == '/') ADVANCE(95); - if (lookahead == ':') ADVANCE(82); - if (lookahead == '<') ADVANCE(100); - if (lookahead == '=') ADVANCE(45); - if (lookahead == '>') ADVANCE(98); - if (lookahead == '?') ADVANCE(91); - if (lookahead == '[') ADVANCE(79); - if (lookahead == ']') ADVANCE(81); - if (lookahead == '{') ADVANCE(46); - if (lookahead == '|') ADVANCE(27); - if (lookahead == '}') ADVANCE(47); - if (lookahead == '\t' || - lookahead == '\n' || - lookahead == '\r' || - lookahead == ' ') SKIP(41) - if (sym_identifier_character_set_1(lookahead)) ADVANCE(60); - END_STATE(); - case 42: ACCEPT_TOKEN(ts_builtin_sym_end); END_STATE(); - case 43: + case 33: ACCEPT_TOKEN(anon_sym_EQ); END_STATE(); - case 44: + case 34: ACCEPT_TOKEN(anon_sym_EQ); - if (lookahead == '=') ADVANCE(102); + if (lookahead == '=') ADVANCE(85); END_STATE(); - case 45: + case 35: ACCEPT_TOKEN(anon_sym_EQ); - if (lookahead == '=') ADVANCE(102); - if (lookahead == '>') ADVANCE(85); + if (lookahead == '=') ADVANCE(85); + if (lookahead == '>') ADVANCE(68); END_STATE(); - case 46: + case 36: ACCEPT_TOKEN(anon_sym_LBRACE); END_STATE(); - case 47: + case 37: ACCEPT_TOKEN(anon_sym_RBRACE); 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); + END_STATE(); + case 39: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'a') ADVANCE(42); + if (sym_identifier_character_set_2(lookahead)) ADVANCE(50); + END_STATE(); + case 40: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'e') ADVANCE(57); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + END_STATE(); + case 41: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'e') ADVANCE(59); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + END_STATE(); + case 42: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'l') ADVANCE(47); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + END_STATE(); + case 43: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'l') ADVANCE(61); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + END_STATE(); + case 44: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'l') ADVANCE(43); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + END_STATE(); + case 45: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'r') ADVANCE(70); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + END_STATE(); + case 46: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 'r') ADVANCE(48); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + END_STATE(); + case 47: + ACCEPT_TOKEN(sym_identifier); + if (lookahead == 's') ADVANCE(41); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); + END_STATE(); case 48: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'a') ADVANCE(52); - if (lookahead == 'o') ADVANCE(55); - if (sym_identifier_character_set_2(lookahead)) ADVANCE(60); + if (lookahead == 'u') ADVANCE(40); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); END_STATE(); case 49: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'a') ADVANCE(52); - if (sym_identifier_character_set_2(lookahead)) ADVANCE(60); + if (lookahead == 'u') ADVANCE(44); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); END_STATE(); case 50: ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(74); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); END_STATE(); case 51: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'e') ADVANCE(76); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); - END_STATE(); - case 52: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(57); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); - END_STATE(); - case 53: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(78); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); - END_STATE(); - case 54: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'l') ADVANCE(53); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); - END_STATE(); - case 55: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'r') ADVANCE(87); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); - END_STATE(); - case 56: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'r') ADVANCE(58); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); - END_STATE(); - case 57: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 's') ADVANCE(51); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); - END_STATE(); - case 58: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'u') ADVANCE(50); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); - END_STATE(); - case 59: - ACCEPT_TOKEN(sym_identifier); - if (lookahead == 'u') ADVANCE(54); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); - END_STATE(); - case 60: - ACCEPT_TOKEN(sym_identifier); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); - END_STATE(); - case 61: ACCEPT_TOKEN(anon_sym_LPAREN); END_STATE(); - case 62: + case 52: ACCEPT_TOKEN(anon_sym_RPAREN); END_STATE(); - case 63: + case 53: ACCEPT_TOKEN(sym_numeric_lit); - if (lookahead == '.') ADVANCE(30); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(63); + if (lookahead == '.') ADVANCE(29); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(53); END_STATE(); - case 64: + case 54: ACCEPT_TOKEN(sym_numeric_lit); if (lookahead == 'E' || lookahead == 'e') ADVANCE(28); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(64); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(54); END_STATE(); - case 65: + case 55: ACCEPT_TOKEN(sym_numeric_lit); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(65); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(55); END_STATE(); - case 66: - ACCEPT_TOKEN(anon_sym_DQUOTE); - END_STATE(); - case 67: - ACCEPT_TOKEN(aux_sym_string_lit_token1); - if (lookahead == ' ') ADVANCE(67); - if (lookahead == '#') ADVANCE(71); - if (lookahead == '/') ADVANCE(68); - if (lookahead != 0 && - lookahead != '\t' && - lookahead != '\n' && - lookahead != '\r' && - lookahead != '"' && - lookahead != '\\') ADVANCE(71); - END_STATE(); - case 68: - ACCEPT_TOKEN(aux_sym_string_lit_token1); - if (lookahead == '*') ADVANCE(70); - if (lookahead == '/') ADVANCE(71); - if (lookahead != 0 && - lookahead != '\t' && - lookahead != '\n' && - lookahead != '\r' && - lookahead != '"' && - lookahead != '\\') ADVANCE(71); - END_STATE(); - case 69: - ACCEPT_TOKEN(aux_sym_string_lit_token1); - if (lookahead == '*') ADVANCE(69); - if (lookahead == '/') ADVANCE(71); - if (lookahead != 0 && - lookahead != '\t' && - lookahead != '\n' && - lookahead != '\r' && - lookahead != '"' && - lookahead != '\\') ADVANCE(70); - END_STATE(); - case 70: - ACCEPT_TOKEN(aux_sym_string_lit_token1); - if (lookahead == '*') ADVANCE(69); - if (lookahead != 0 && - lookahead != '\t' && - lookahead != '\n' && - lookahead != '\r' && - lookahead != '"' && - lookahead != '\\') ADVANCE(70); - END_STATE(); - case 71: - ACCEPT_TOKEN(aux_sym_string_lit_token1); - if (lookahead != 0 && - lookahead != '\t' && - lookahead != '\n' && - lookahead != '\r' && - lookahead != '"' && - lookahead != '\\') ADVANCE(71); - END_STATE(); - case 72: - ACCEPT_TOKEN(sym_escape_sequence); - END_STATE(); - case 73: + case 56: ACCEPT_TOKEN(anon_sym_true); END_STATE(); - case 74: + case 57: ACCEPT_TOKEN(anon_sym_true); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); END_STATE(); - case 75: + case 58: ACCEPT_TOKEN(anon_sym_false); END_STATE(); - case 76: + case 59: ACCEPT_TOKEN(anon_sym_false); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); END_STATE(); - case 77: + case 60: ACCEPT_TOKEN(sym_null_lit); END_STATE(); - case 78: + case 61: ACCEPT_TOKEN(sym_null_lit); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); END_STATE(); - case 79: + case 62: ACCEPT_TOKEN(anon_sym_LBRACK); END_STATE(); - case 80: + case 63: ACCEPT_TOKEN(anon_sym_COMMA); END_STATE(); - case 81: + case 64: ACCEPT_TOKEN(anon_sym_RBRACK); END_STATE(); - case 82: + case 65: ACCEPT_TOKEN(anon_sym_COLON); END_STATE(); - case 83: + case 66: ACCEPT_TOKEN(anon_sym_DOT); - if (lookahead == '.') ADVANCE(11); + if (lookahead == '.') ADVANCE(9); END_STATE(); - case 84: + case 67: ACCEPT_TOKEN(anon_sym_STAR); END_STATE(); - case 85: + case 68: ACCEPT_TOKEN(anon_sym_EQ_GT); END_STATE(); - case 86: + case 69: ACCEPT_TOKEN(anon_sym_for); END_STATE(); - case 87: + case 70: ACCEPT_TOKEN(anon_sym_for); - if (sym_identifier_character_set_3(lookahead)) ADVANCE(60); + if (sym_identifier_character_set_3(lookahead)) ADVANCE(50); END_STATE(); - case 88: + case 71: ACCEPT_TOKEN(anon_sym_in); END_STATE(); - case 89: + case 72: ACCEPT_TOKEN(anon_sym_if); END_STATE(); - case 90: + case 73: ACCEPT_TOKEN(sym_ellipsis); END_STATE(); - case 91: + case 74: ACCEPT_TOKEN(anon_sym_QMARK); END_STATE(); - case 92: + case 75: ACCEPT_TOKEN(anon_sym_DASH); END_STATE(); - case 93: + case 76: ACCEPT_TOKEN(anon_sym_BANG); END_STATE(); - case 94: + case 77: ACCEPT_TOKEN(anon_sym_BANG); - if (lookahead == '=') ADVANCE(103); + if (lookahead == '=') ADVANCE(86); END_STATE(); - case 95: + case 78: ACCEPT_TOKEN(anon_sym_SLASH); - if (lookahead == '*') ADVANCE(10); - if (lookahead == '/') ADVANCE(107); + if (lookahead == '*') ADVANCE(8); + if (lookahead == '/') ADVANCE(94); END_STATE(); - case 96: + case 79: ACCEPT_TOKEN(anon_sym_PERCENT); END_STATE(); - case 97: + case 80: ACCEPT_TOKEN(anon_sym_PLUS); END_STATE(); - case 98: + case 81: ACCEPT_TOKEN(anon_sym_GT); - if (lookahead == '=') ADVANCE(99); + if (lookahead == '=') ADVANCE(82); END_STATE(); - case 99: + case 82: ACCEPT_TOKEN(anon_sym_GT_EQ); END_STATE(); - case 100: + case 83: ACCEPT_TOKEN(anon_sym_LT); - if (lookahead == '=') ADVANCE(101); + if (lookahead == '=') ADVANCE(84); END_STATE(); - case 101: + case 84: ACCEPT_TOKEN(anon_sym_LT_EQ); END_STATE(); - case 102: + case 85: ACCEPT_TOKEN(anon_sym_EQ_EQ); END_STATE(); - case 103: + case 86: ACCEPT_TOKEN(anon_sym_BANG_EQ); END_STATE(); - case 104: + case 87: ACCEPT_TOKEN(anon_sym_AMP_AMP); END_STATE(); - case 105: + case 88: ACCEPT_TOKEN(anon_sym_PIPE_PIPE); END_STATE(); - case 106: + case 89: + ACCEPT_TOKEN(anon_sym_DQUOTE); + 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: ACCEPT_TOKEN(sym_comment); END_STATE(); - case 107: + case 94: ACCEPT_TOKEN(sym_comment); if (lookahead != 0 && - lookahead != '\n') ADVANCE(107); + lookahead != '\n') ADVANCE(94); END_STATE(); default: return false; @@ -2763,215 +2676,251 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { } static const TSLexMode ts_lex_modes[STATE_COUNT] = { - [0] = {.lex_state = 0}, - [1] = {.lex_state = 41}, - [2] = {.lex_state = 4}, - [3] = {.lex_state = 4}, - [4] = {.lex_state = 4}, - [5] = {.lex_state = 41}, - [6] = {.lex_state = 4}, - [7] = {.lex_state = 3}, - [8] = {.lex_state = 3}, - [9] = {.lex_state = 3}, - [10] = {.lex_state = 41}, - [11] = {.lex_state = 41}, - [12] = {.lex_state = 3}, - [13] = {.lex_state = 3}, - [14] = {.lex_state = 3}, - [15] = {.lex_state = 3}, - [16] = {.lex_state = 41}, - [17] = {.lex_state = 3}, - [18] = {.lex_state = 3}, - [19] = {.lex_state = 41}, - [20] = {.lex_state = 3}, - [21] = {.lex_state = 3}, - [22] = {.lex_state = 41}, - [23] = {.lex_state = 3}, - [24] = {.lex_state = 3}, - [25] = {.lex_state = 41}, - [26] = {.lex_state = 3}, - [27] = {.lex_state = 41}, - [28] = {.lex_state = 3}, - [29] = {.lex_state = 3}, - [30] = {.lex_state = 3}, - [31] = {.lex_state = 3}, - [32] = {.lex_state = 3}, - [33] = {.lex_state = 3}, - [34] = {.lex_state = 3}, - [35] = {.lex_state = 3}, - [36] = {.lex_state = 3}, - [37] = {.lex_state = 3}, - [38] = {.lex_state = 3}, - [39] = {.lex_state = 3}, - [40] = {.lex_state = 41}, - [41] = {.lex_state = 3}, - [42] = {.lex_state = 41}, - [43] = {.lex_state = 41}, - [44] = {.lex_state = 41}, - [45] = {.lex_state = 41}, - [46] = {.lex_state = 41}, - [47] = {.lex_state = 41}, - [48] = {.lex_state = 41}, - [49] = {.lex_state = 41}, - [50] = {.lex_state = 41}, - [51] = {.lex_state = 41}, - [52] = {.lex_state = 41}, - [53] = {.lex_state = 41}, - [54] = {.lex_state = 41}, - [55] = {.lex_state = 41}, - [56] = {.lex_state = 41}, - [57] = {.lex_state = 41}, - [58] = {.lex_state = 41}, - [59] = {.lex_state = 41}, - [60] = {.lex_state = 41}, - [61] = {.lex_state = 41}, - [62] = {.lex_state = 41}, - [63] = {.lex_state = 41}, - [64] = {.lex_state = 41}, - [65] = {.lex_state = 41}, - [66] = {.lex_state = 2}, - [67] = {.lex_state = 2}, - [68] = {.lex_state = 2}, - [69] = {.lex_state = 2}, - [70] = {.lex_state = 2}, + [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 = 2}, + [25] = {.lex_state = 2}, + [26] = {.lex_state = 2}, + [27] = {.lex_state = 2}, + [28] = {.lex_state = 2}, + [29] = {.lex_state = 2}, + [30] = {.lex_state = 31}, + [31] = {.lex_state = 2}, + [32] = {.lex_state = 31}, + [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 = 2}, - [73] = {.lex_state = 3}, - [74] = {.lex_state = 3}, - [75] = {.lex_state = 3}, - [76] = {.lex_state = 3}, - [77] = {.lex_state = 3}, - [78] = {.lex_state = 3}, - [79] = {.lex_state = 3}, - [80] = {.lex_state = 3}, - [81] = {.lex_state = 3}, + [73] = {.lex_state = 2}, + [74] = {.lex_state = 2}, + [75] = {.lex_state = 2}, + [76] = {.lex_state = 1}, + [77] = {.lex_state = 2}, + [78] = {.lex_state = 2}, + [79] = {.lex_state = 2}, + [80] = {.lex_state = 1}, + [81] = {.lex_state = 2}, [82] = {.lex_state = 2}, - [83] = {.lex_state = 3}, - [84] = {.lex_state = 3}, - [85] = {.lex_state = 3}, - [86] = {.lex_state = 3}, - [87] = {.lex_state = 3}, - [88] = {.lex_state = 2}, - [89] = {.lex_state = 2}, - [90] = {.lex_state = 2}, - [91] = {.lex_state = 2}, - [92] = {.lex_state = 2}, - [93] = {.lex_state = 2}, - [94] = {.lex_state = 2}, - [95] = {.lex_state = 2}, - [96] = {.lex_state = 2}, - [97] = {.lex_state = 2}, - [98] = {.lex_state = 2}, - [99] = {.lex_state = 2}, - [100] = {.lex_state = 2}, - [101] = {.lex_state = 2}, - [102] = {.lex_state = 2}, - [103] = {.lex_state = 2}, - [104] = {.lex_state = 2}, - [105] = {.lex_state = 2}, - [106] = {.lex_state = 2}, - [107] = {.lex_state = 2}, - [108] = {.lex_state = 2}, - [109] = {.lex_state = 2}, - [110] = {.lex_state = 2}, - [111] = {.lex_state = 2}, - [112] = {.lex_state = 2}, - [113] = {.lex_state = 2}, - [114] = {.lex_state = 41}, - [115] = {.lex_state = 41}, - [116] = {.lex_state = 41}, - [117] = {.lex_state = 41}, - [118] = {.lex_state = 41}, - [119] = {.lex_state = 41}, - [120] = {.lex_state = 41}, - [121] = {.lex_state = 0}, - [122] = {.lex_state = 0}, + [83] = {.lex_state = 2}, + [84] = {.lex_state = 2}, + [85] = {.lex_state = 2}, + [86] = {.lex_state = 2}, + [87] = {.lex_state = 1}, + [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}, + [102] = {.lex_state = 1}, + [103] = {.lex_state = 1}, + [104] = {.lex_state = 1}, + [105] = {.lex_state = 1}, + [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}, + [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 = 41}, - [129] = {.lex_state = 3}, - [130] = {.lex_state = 41}, - [131] = {.lex_state = 3}, - [132] = {.lex_state = 41}, - [133] = {.lex_state = 5}, - [134] = {.lex_state = 41}, - [135] = {.lex_state = 41}, - [136] = {.lex_state = 41}, - [137] = {.lex_state = 41}, - [138] = {.lex_state = 0}, - [139] = {.lex_state = 0}, - [140] = {.lex_state = 0}, - [141] = {.lex_state = 0}, - [142] = {.lex_state = 0}, - [143] = {.lex_state = 0}, - [144] = {.lex_state = 0}, - [145] = {.lex_state = 41}, - [146] = {.lex_state = 0}, - [147] = {.lex_state = 41}, - [148] = {.lex_state = 0}, - [149] = {.lex_state = 41}, - [150] = {.lex_state = 1}, - [151] = {.lex_state = 1}, - [152] = {.lex_state = 1}, - [153] = {.lex_state = 0}, - [154] = {.lex_state = 1}, + [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 = 4}, + [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 = 0, .external_lex_state = 2}, + [141] = {.lex_state = 31}, + [142] = {.lex_state = 31}, + [143] = {.lex_state = 31}, + [144] = {.lex_state = 31}, + [145] = {.lex_state = 31}, + [146] = {.lex_state = 31}, + [147] = {.lex_state = 0}, + [148] = {.lex_state = 0, .external_lex_state = 3}, + [149] = {.lex_state = 0}, + [150] = {.lex_state = 0}, + [151] = {.lex_state = 0, .external_lex_state = 3}, + [152] = {.lex_state = 0, .external_lex_state = 2}, + [153] = {.lex_state = 0, .external_lex_state = 3}, + [154] = {.lex_state = 0}, [155] = {.lex_state = 0}, - [156] = {.lex_state = 1}, - [157] = {.lex_state = 0}, + [156] = {.lex_state = 0}, + [157] = {.lex_state = 0, .external_lex_state = 2}, [158] = {.lex_state = 0}, [159] = {.lex_state = 0}, [160] = {.lex_state = 0}, [161] = {.lex_state = 0}, - [162] = {.lex_state = 0}, + [162] = {.lex_state = 31}, [163] = {.lex_state = 0}, [164] = {.lex_state = 0}, - [165] = {.lex_state = 41}, + [165] = {.lex_state = 0}, [166] = {.lex_state = 0}, [167] = {.lex_state = 0}, - [168] = {.lex_state = 41}, + [168] = {.lex_state = 31}, [169] = {.lex_state = 0}, - [170] = {.lex_state = 4}, - [171] = {.lex_state = 0}, - [172] = {.lex_state = 41}, - [173] = {.lex_state = 0}, + [170] = {.lex_state = 0}, + [171] = {.lex_state = 31}, + [172] = {.lex_state = 0}, + [173] = {.lex_state = 3}, [174] = {.lex_state = 0}, - [175] = {.lex_state = 41}, + [175] = {.lex_state = 0}, [176] = {.lex_state = 0}, [177] = {.lex_state = 0}, [178] = {.lex_state = 0}, - [179] = {.lex_state = 3}, + [179] = {.lex_state = 31}, [180] = {.lex_state = 0}, - [181] = {.lex_state = 0}, - [182] = {.lex_state = 0}, + [181] = {.lex_state = 31}, + [182] = {.lex_state = 31}, [183] = {.lex_state = 0}, - [184] = {.lex_state = 3}, - [185] = {.lex_state = 41}, + [184] = {.lex_state = 2}, + [185] = {.lex_state = 0}, [186] = {.lex_state = 0}, [187] = {.lex_state = 0}, [188] = {.lex_state = 0}, [189] = {.lex_state = 0}, - [190] = {.lex_state = 41}, - [191] = {.lex_state = 0}, + [190] = {.lex_state = 0}, + [191] = {.lex_state = 2}, [192] = {.lex_state = 0}, [193] = {.lex_state = 0}, [194] = {.lex_state = 0}, - [195] = {.lex_state = 0}, - [196] = {.lex_state = 0}, + [195] = {.lex_state = 31}, + [196] = {.lex_state = 31}, [197] = {.lex_state = 0}, - [198] = {.lex_state = 0}, + [198] = {.lex_state = 31}, [199] = {.lex_state = 0}, - [200] = {.lex_state = 0}, + [200] = {.lex_state = 31}, [201] = {.lex_state = 0}, - [202] = {.lex_state = 41}, + [202] = {.lex_state = 0}, [203] = {.lex_state = 0}, [204] = {.lex_state = 0}, - [205] = {.lex_state = 41}, - [206] = {.lex_state = 0}, - [207] = {.lex_state = 41}, + [205] = {.lex_state = 0}, + [206] = {.lex_state = 31}, + [207] = {.lex_state = 0}, [208] = {.lex_state = 0}, + [209] = {.lex_state = 0}, + [210] = {.lex_state = 0}, + [211] = {.lex_state = 0}, + [212] = {.lex_state = 0}, + [213] = {.lex_state = 0}, + [214] = {.lex_state = 0}, + [215] = {.lex_state = 0}, + [216] = {.lex_state = 0}, +}; + +enum { + ts_external_token__template_char = 0, + ts_external_token__template_char_in_interpolation = 1, + ts_external_token_escape_sequence = 2, +}; + +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, +}; + +static const bool ts_external_scanner_states[4][EXTERNAL_TOKEN_COUNT] = { + [1] = { + [ts_external_token__template_char] = true, + [ts_external_token__template_char_in_interpolation] = true, + [ts_external_token_escape_sequence] = true, + }, + [2] = { + [ts_external_token__template_char] = true, + [ts_external_token_escape_sequence] = true, + }, + [3] = { + [ts_external_token__template_char_in_interpolation] = true, + [ts_external_token_escape_sequence] = true, + }, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { @@ -2983,8 +2932,6 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_LPAREN] = ACTIONS(1), [anon_sym_RPAREN] = ACTIONS(1), [sym_numeric_lit] = ACTIONS(1), - [anon_sym_DQUOTE] = ACTIONS(1), - [sym_escape_sequence] = ACTIONS(1), [anon_sym_true] = ACTIONS(1), [anon_sym_false] = ACTIONS(1), [sym_null_lit] = ACTIONS(1), @@ -3013,21 +2960,28 @@ 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_comment] = ACTIONS(3), + [sym__template_char] = ACTIONS(1), + [sym__template_char_in_interpolation] = ACTIONS(1), + [sym_escape_sequence] = ACTIONS(1), }, [1] = { - [sym_config_file] = STATE(208), - [sym_body] = STATE(206), - [sym_attribute] = STATE(134), - [sym_block] = STATE(134), - [aux_sym_body_repeat1] = STATE(134), + [sym_config_file] = STATE(216), + [sym_body] = STATE(214), + [sym_attribute] = STATE(145), + [sym_block] = STATE(145), + [aux_sym_body_repeat1] = STATE(145), [sym_identifier] = ACTIONS(5), [sym_comment] = ACTIONS(3), }, }; static const uint16_t ts_small_parse_table[] = { - [0] = 22, + [0] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3040,50 +2994,52 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, + ACTIONS(19), 1, sym_null_lit, - ACTIONS(23), 1, + ACTIONS(21), 1, anon_sym_LBRACK, - ACTIONS(25), 1, + ACTIONS(23), 1, anon_sym_for, - STATE(5), 1, + ACTIONS(27), 1, + anon_sym_DQUOTE, + STATE(6), 1, sym_expr_term, - STATE(31), 1, + STATE(23), 1, sym_for_intro, - STATE(164), 1, - sym_object_elem, - STATE(170), 1, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(173), 1, sym_expression, - ACTIONS(19), 2, + STATE(177), 1, + sym_object_elem, + ACTIONS(17), 2, anon_sym_true, anon_sym_false, - ACTIONS(27), 2, + ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, + STATE(61), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, sym_conditional, sym_operation, - STATE(56), 5, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [78] = 22, + sym_template_expr, + [81] = 23, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3094,52 +3050,54 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, + ACTIONS(19), 1, sym_null_lit, - ACTIONS(23), 1, + ACTIONS(21), 1, anon_sym_LBRACK, - ACTIONS(25), 1, + ACTIONS(23), 1, anon_sym_for, + ACTIONS(27), 1, + anon_sym_DQUOTE, ACTIONS(29), 1, anon_sym_RBRACE, - STATE(5), 1, + STATE(6), 1, sym_expr_term, - STATE(36), 1, + STATE(19), 1, sym_for_intro, - STATE(170), 1, - sym_expression, - STATE(173), 1, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(167), 1, sym_object_elem, - ACTIONS(19), 2, + STATE(173), 1, + sym_expression, + ACTIONS(17), 2, anon_sym_true, anon_sym_false, - ACTIONS(27), 2, + ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, + STATE(61), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, sym_conditional, sym_operation, - STATE(56), 5, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [156] = 21, + sym_template_expr, + [162] = 22, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3148,89 +3106,147 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, + ACTIONS(19), 1, sym_null_lit, - ACTIONS(23), 1, + ACTIONS(21), 1, anon_sym_LBRACK, - ACTIONS(25), 1, + ACTIONS(23), 1, anon_sym_for, + ACTIONS(27), 1, + anon_sym_DQUOTE, ACTIONS(31), 1, sym_identifier, ACTIONS(33), 1, anon_sym_RBRACK, - STATE(5), 1, + STATE(6), 1, sym_expr_term, - STATE(41), 1, + STATE(16), 1, sym_for_intro, - STATE(153), 1, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(164), 1, sym_expression, - ACTIONS(19), 2, + ACTIONS(17), 2, anon_sym_true, anon_sym_false, - ACTIONS(27), 2, + ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, + STATE(61), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, sym_conditional, sym_operation, - STATE(56), 5, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [231] = 15, + sym_template_expr, + [240] = 22, ACTIONS(3), 1, sym_comment, - ACTIONS(37), 1, - anon_sym_EQ, - ACTIONS(39), 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(23), 1, + anon_sym_for, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(31), 1, + sym_identifier, + ACTIONS(35), 1, + anon_sym_RBRACK, + STATE(6), 1, + sym_expr_term, + STATE(20), 1, + sym_for_intro, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(161), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, + sym_conditional, + sym_operation, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [318] = 15, + ACTIONS(3), 1, + sym_comment, + ACTIONS(39), 1, + anon_sym_EQ, ACTIONS(41), 1, + anon_sym_LBRACK, + ACTIONS(43), 1, anon_sym_DOT, - ACTIONS(47), 1, + ACTIONS(49), 1, anon_sym_SLASH, - ACTIONS(55), 1, - anon_sym_AMP_AMP, ACTIONS(57), 1, + anon_sym_AMP_AMP, + ACTIONS(59), 1, anon_sym_PIPE_PIPE, - ACTIONS(43), 2, + ACTIONS(45), 2, anon_sym_STAR, anon_sym_PERCENT, - ACTIONS(45), 2, + ACTIONS(47), 2, anon_sym_DASH, anon_sym_PLUS, - ACTIONS(49), 2, + ACTIONS(51), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(51), 2, + ACTIONS(53), 2, anon_sym_GT_EQ, anon_sym_LT_EQ, - ACTIONS(53), 2, + ACTIONS(55), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - STATE(64), 2, + STATE(44), 2, sym_attr_splat, sym_full_splat, - STATE(63), 3, + STATE(55), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(35), 10, + ACTIONS(37), 10, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -3241,7 +3257,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ_GT, sym_ellipsis, anon_sym_QMARK, - [294] = 21, + [381] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3250,104 +3266,52 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, + ACTIONS(19), 1, sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(25), 1, - anon_sym_for, - ACTIONS(31), 1, - sym_identifier, - ACTIONS(59), 1, - anon_sym_RBRACK, - STATE(5), 1, - sym_expr_term, - STATE(32), 1, - sym_for_intro, - STATE(155), 1, - sym_expression, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(27), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, - sym_conditional, - sym_operation, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [369] = 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(17), 1, - anon_sym_DQUOTE, ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, ACTIONS(31), 1, sym_identifier, ACTIONS(61), 1, anon_sym_RPAREN, - STATE(5), 1, + STATE(6), 1, sym_expr_term, - STATE(142), 1, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(155), 1, sym_expression, - STATE(191), 1, + STATE(207), 1, sym_function_arguments, - ACTIONS(19), 2, + ACTIONS(17), 2, anon_sym_true, anon_sym_false, - ACTIONS(27), 2, + ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, + STATE(61), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, sym_conditional, sym_operation, - STATE(56), 5, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [441] = 20, + sym_template_expr, + [456] = 21, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3356,50 +3320,52 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, + ACTIONS(19), 1, sym_null_lit, - ACTIONS(23), 1, + ACTIONS(21), 1, anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, ACTIONS(31), 1, sym_identifier, ACTIONS(63), 1, anon_sym_RPAREN, - STATE(5), 1, + STATE(6), 1, sym_expr_term, - STATE(142), 1, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(155), 1, sym_expression, - STATE(192), 1, + STATE(199), 1, sym_function_arguments, - ACTIONS(19), 2, + ACTIONS(17), 2, anon_sym_true, anon_sym_false, - ACTIONS(27), 2, + ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, + STATE(61), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, sym_conditional, sym_operation, - STATE(56), 5, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [513] = 19, + sym_template_expr, + [531] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3408,122 +3374,206 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, + ACTIONS(19), 1, sym_null_lit, - ACTIONS(23), 1, + ACTIONS(21), 1, anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, ACTIONS(31), 1, sym_identifier, ACTIONS(65), 1, anon_sym_RPAREN, - STATE(5), 1, + STATE(6), 1, sym_expr_term, - STATE(139), 1, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(159), 1, sym_expression, - ACTIONS(19), 2, + ACTIONS(17), 2, anon_sym_true, anon_sym_false, - ACTIONS(27), 2, + ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, + STATE(61), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, sym_conditional, sym_operation, - STATE(56), 5, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [582] = 6, + 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(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(183), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, + sym_conditional, + sym_operation, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 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(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(69), 1, + anon_sym_RPAREN, + STATE(6), 1, + sym_expr_term, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(159), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, + sym_conditional, + sym_operation, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [747] = 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(71), 1, - anon_sym_LBRACK, - ACTIONS(74), 1, - anon_sym_DOT, - STATE(16), 3, - sym_index, - sym_get_attr, - aux_sym_full_splat_repeat1, - ACTIONS(69), 4, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(67), 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, + STATE(6), 1, + sym_expr_term, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(190), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, 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, - [625] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(81), 1, - anon_sym_LBRACK, - ACTIONS(84), 1, - anon_sym_DOT, - STATE(10), 3, - sym_index, - sym_get_attr, - aux_sym_full_splat_repeat1, - ACTIONS(79), 4, - anon_sym_EQ, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(77), 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, - [668] = 19, + anon_sym_BANG, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, + sym_conditional, + sym_operation, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [819] = 20, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3534,46 +3584,98 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, + ACTIONS(19), 1, sym_null_lit, - ACTIONS(23), 1, + ACTIONS(21), 1, anon_sym_LBRACK, - STATE(5), 1, + ACTIONS(27), 1, + anon_sym_DQUOTE, + STATE(6), 1, sym_expr_term, - STATE(170), 1, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(173), 1, sym_expression, - STATE(178), 1, + STATE(192), 1, sym_object_elem, - ACTIONS(19), 2, + ACTIONS(17), 2, anon_sym_true, anon_sym_false, - ACTIONS(27), 2, + ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, + STATE(61), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, sym_conditional, sym_operation, - STATE(56), 5, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [737] = 19, + sym_template_expr, + [891] = 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(102), 1, + sym_bool_lit, + STATE(110), 1, + sym_quoted_template, + STATE(158), 1, + sym_expression, + ACTIONS(81), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(87), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(98), 2, + sym_tuple, + sym_object, + STATE(105), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(149), 2, + sym_unary_operation, + sym_binary_operation, + STATE(150), 2, + sym_conditional, + sym_operation, + STATE(90), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [960] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3582,48 +3684,348 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, + ACTIONS(19), 1, sym_null_lit, - ACTIONS(23), 1, + ACTIONS(21), 1, anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, ACTIONS(31), 1, sym_identifier, - ACTIONS(87), 1, - anon_sym_STAR, - STATE(5), 1, + STATE(6), 1, sym_expr_term, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(193), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, + sym_conditional, + sym_operation, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 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(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(102), 1, + sym_bool_lit, + STATE(110), 1, + sym_quoted_template, + STATE(163), 1, + sym_expression, + ACTIONS(81), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(87), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(98), 2, + sym_tuple, + sym_object, + STATE(105), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(149), 2, + sym_unary_operation, + sym_binary_operation, + STATE(150), 2, + sym_conditional, + sym_operation, + STATE(90), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1098] = 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(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(189), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, + sym_conditional, + sym_operation, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 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(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(187), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, + sym_conditional, + sym_operation, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 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(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(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(184), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, + sym_conditional, + sym_operation, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1305] = 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(102), 1, + sym_bool_lit, + STATE(110), 1, + sym_quoted_template, + STATE(160), 1, + sym_expression, + ACTIONS(81), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(87), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(98), 2, + sym_tuple, + sym_object, + STATE(105), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(149), 2, + sym_unary_operation, + sym_binary_operation, + STATE(150), 2, + sym_conditional, + sym_operation, + STATE(90), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1374] = 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(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, STATE(180), 1, sym_expression, - ACTIONS(19), 2, + ACTIONS(17), 2, anon_sym_true, anon_sym_false, - ACTIONS(27), 2, + ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, + STATE(61), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, sym_conditional, sym_operation, - STATE(56), 5, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [806] = 19, + sym_template_expr, + [1443] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3632,48 +4034,298 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, + ACTIONS(19), 1, sym_null_lit, - ACTIONS(23), 1, + ACTIONS(21), 1, anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, ACTIONS(31), 1, sym_identifier, + STATE(6), 1, + sym_expr_term, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(131), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, + sym_conditional, + sym_operation, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 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, + sym_identifier, + STATE(6), 1, + sym_expr_term, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(191), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, + sym_conditional, + sym_operation, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1581] = 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(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(162), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, + sym_conditional, + sym_operation, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1650] = 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(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(183), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, + sym_conditional, + sym_operation, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1719] = 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_RPAREN, - STATE(5), 1, + anon_sym_DQUOTE, + STATE(67), 1, sym_expr_term, - STATE(139), 1, + STATE(102), 1, + sym_bool_lit, + STATE(110), 1, + sym_quoted_template, + STATE(154), 1, sym_expression, - ACTIONS(19), 2, + ACTIONS(81), 2, anon_sym_true, anon_sym_false, - ACTIONS(27), 2, + ACTIONS(87), 2, anon_sym_DASH, anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, + STATE(98), 2, sym_tuple, sym_object, - STATE(57), 2, + STATE(105), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(128), 2, + STATE(149), 2, sym_unary_operation, sym_binary_operation, - STATE(132), 2, + STATE(150), 2, sym_conditional, sym_operation, - STATE(56), 5, + STATE(90), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [875] = 19, + sym_template_expr, + [1788] = 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(102), 1, + sym_bool_lit, + STATE(110), 1, + sym_quoted_template, + STATE(156), 1, + sym_expression, + ACTIONS(81), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(87), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(98), 2, + sym_tuple, + sym_object, + STATE(105), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(149), 2, + sym_unary_operation, + sym_binary_operation, + STATE(150), 2, + sym_conditional, + sym_operation, + STATE(90), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1857] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3682,64 +4334,114 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, + ACTIONS(19), 1, sym_null_lit, - ACTIONS(23), 1, + ACTIONS(21), 1, anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, ACTIONS(31), 1, sym_identifier, - ACTIONS(91), 1, - anon_sym_STAR, - STATE(5), 1, + STATE(6), 1, sym_expr_term, - STATE(174), 1, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(159), 1, sym_expression, - ACTIONS(19), 2, + ACTIONS(17), 2, anon_sym_true, anon_sym_false, - ACTIONS(27), 2, + ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, + STATE(61), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, sym_conditional, sym_operation, - STATE(56), 5, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [944] = 6, + sym_template_expr, + [1926] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(97), 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(100), 1, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(31), 1, + sym_identifier, + STATE(6), 1, + sym_expr_term, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(190), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, + sym_conditional, + sym_operation, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [1995] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(95), 1, + anon_sym_LBRACK, + ACTIONS(98), 1, anon_sym_DOT, - STATE(16), 3, + STATE(36), 3, sym_index, sym_get_attr, aux_sym_full_splat_repeat1, - ACTIONS(95), 4, + ACTIONS(93), 4, anon_sym_EQ, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(93), 20, + ACTIONS(91), 20, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -3760,121 +4462,77 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [987] = 18, + [2038] = 19, ACTIONS(3), 1, sym_comment, - ACTIONS(103), 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, + anon_sym_DQUOTE, + ACTIONS(31), 1, + sym_identifier, + STATE(6), 1, + sym_expr_term, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(194), 1, + sym_expression, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + ACTIONS(25), 2, + anon_sym_DASH, + anon_sym_BANG, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, + sym_conditional, + sym_operation, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [2107] = 6, + ACTIONS(3), 1, + sym_comment, ACTIONS(105), 1, - sym_identifier, - ACTIONS(107), 1, - anon_sym_LPAREN, - ACTIONS(109), 1, - sym_numeric_lit, - ACTIONS(111), 1, - anon_sym_DQUOTE, - ACTIONS(115), 1, - sym_null_lit, - ACTIONS(117), 1, anon_sym_LBRACK, - STATE(66), 1, - sym_expr_term, - STATE(143), 1, - sym_expression, - ACTIONS(113), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(119), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(96), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(98), 2, - sym_tuple, - sym_object, - STATE(105), 2, - sym_string_lit, - sym_bool_lit, - STATE(140), 2, - sym_conditional, - sym_operation, - STATE(141), 2, - sym_unary_operation, - sym_binary_operation, - STATE(100), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [1053] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(5), 1, - sym_expr_term, - STATE(187), 1, - sym_expression, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(27), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, - sym_conditional, - sym_operation, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [1119] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(125), 1, + ACTIONS(108), 1, anon_sym_DOT, - STATE(25), 2, + STATE(32), 3, + sym_index, sym_get_attr, - aux_sym_attr_splat_repeat1, - ACTIONS(123), 4, + aux_sym_full_splat_repeat1, + ACTIONS(103), 4, anon_sym_EQ, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(121), 21, + ACTIONS(101), 20, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, anon_sym_RPAREN, - anon_sym_LBRACK, anon_sym_COMMA, anon_sym_RBRACK, anon_sym_COLON, @@ -3891,7 +4549,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [1159] = 18, + [2150] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -3900,629 +4558,48 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, + ACTIONS(19), 1, sym_null_lit, - ACTIONS(23), 1, + ACTIONS(21), 1, anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, ACTIONS(31), 1, sym_identifier, - STATE(5), 1, + STATE(6), 1, sym_expr_term, - STATE(177), 1, - sym_expression, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(27), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(45), 2, - sym_string_lit, + STATE(56), 1, sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, - sym_conditional, - sym_operation, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [1225] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(5), 1, - sym_expr_term, - STATE(181), 1, - sym_expression, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(27), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, - sym_conditional, - sym_operation, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [1291] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(132), 1, - anon_sym_DOT, - STATE(22), 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, - [1331] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(5), 1, - sym_expr_term, - STATE(180), 1, - sym_expression, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(27), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, - sym_conditional, - sym_operation, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [1397] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(5), 1, - sym_expr_term, - STATE(182), 1, - sym_expression, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(27), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, - sym_conditional, - sym_operation, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [1463] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(139), 1, - anon_sym_DOT, - STATE(22), 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, - [1503] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(5), 1, - sym_expr_term, - STATE(186), 1, - sym_expression, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(27), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, - sym_conditional, - sym_operation, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [1569] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(144), 5, - anon_sym_EQ, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(142), 23, - ts_builtin_sym_end, - anon_sym_LBRACE, - anon_sym_RBRACE, - sym_identifier, - anon_sym_RPAREN, - anon_sym_DQUOTE, - 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, - [1605] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(5), 1, - sym_expr_term, - STATE(139), 1, - sym_expression, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(27), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, - sym_conditional, - sym_operation, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [1671] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(5), 1, - sym_expr_term, - STATE(167), 1, - sym_expression, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(27), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, - sym_conditional, - sym_operation, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [1737] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(5), 1, - sym_expr_term, - STATE(174), 1, - sym_expression, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(27), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, - sym_conditional, - sym_operation, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [1803] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(5), 1, - sym_expr_term, - STATE(179), 1, - sym_expression, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(27), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, - sym_conditional, - sym_operation, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [1869] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(103), 1, - anon_sym_LBRACE, - ACTIONS(105), 1, - sym_identifier, - ACTIONS(107), 1, - anon_sym_LPAREN, - ACTIONS(109), 1, - sym_numeric_lit, - ACTIONS(111), 1, - anon_sym_DQUOTE, - ACTIONS(115), 1, - sym_null_lit, - ACTIONS(117), 1, - anon_sym_LBRACK, - STATE(66), 1, - sym_expr_term, - STATE(157), 1, - sym_expression, - ACTIONS(113), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(119), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(96), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(98), 2, - sym_tuple, - sym_object, - STATE(105), 2, - sym_string_lit, - sym_bool_lit, - STATE(140), 2, - sym_conditional, - sym_operation, - STATE(141), 2, - sym_unary_operation, - sym_binary_operation, - STATE(100), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [1935] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(5), 1, - sym_expr_term, + STATE(58), 1, + sym_quoted_template, STATE(176), 1, sym_expression, - ACTIONS(19), 2, + ACTIONS(17), 2, anon_sym_true, anon_sym_false, - ACTIONS(27), 2, + ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, + STATE(61), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, sym_conditional, sym_operation, - STATE(56), 5, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [2001] = 18, + sym_template_expr, + [2219] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -4531,46 +4608,48 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, + ACTIONS(19), 1, sym_null_lit, - ACTIONS(23), 1, + ACTIONS(21), 1, anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, ACTIONS(31), 1, sym_identifier, - STATE(5), 1, + STATE(6), 1, sym_expr_term, - STATE(130), 1, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(185), 1, sym_expression, - ACTIONS(19), 2, + ACTIONS(17), 2, anon_sym_true, anon_sym_false, - ACTIONS(27), 2, + ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, + STATE(61), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, sym_conditional, sym_operation, - STATE(56), 5, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [2067] = 18, + sym_template_expr, + [2288] = 19, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -4579,253 +4658,99 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, + ACTIONS(19), 1, sym_null_lit, - ACTIONS(23), 1, + ACTIONS(21), 1, anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, ACTIONS(31), 1, sym_identifier, - STATE(5), 1, + STATE(6), 1, sym_expr_term, - STATE(149), 1, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(186), 1, sym_expression, - ACTIONS(19), 2, + ACTIONS(17), 2, anon_sym_true, anon_sym_false, - ACTIONS(27), 2, + ACTIONS(25), 2, anon_sym_DASH, anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, + STATE(61), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(130), 2, sym_conditional, sym_operation, - STATE(56), 5, + STATE(134), 2, + sym_unary_operation, + sym_binary_operation, + STATE(64), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [2133] = 18, + sym_template_expr, + [2357] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(5), 1, - sym_expr_term, - STATE(184), 1, - sym_expression, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(27), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, - sym_conditional, - sym_operation, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [2199] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(103), 1, - anon_sym_LBRACE, - ACTIONS(105), 1, - sym_identifier, - ACTIONS(107), 1, - anon_sym_LPAREN, - ACTIONS(109), 1, - sym_numeric_lit, - ACTIONS(111), 1, - anon_sym_DQUOTE, ACTIONS(115), 1, - sym_null_lit, - ACTIONS(117), 1, anon_sym_LBRACK, - STATE(66), 1, - sym_expr_term, - STATE(146), 1, - sym_expression, - ACTIONS(113), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(119), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(96), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(98), 2, - sym_tuple, - sym_object, - STATE(105), 2, - sym_string_lit, - sym_bool_lit, - STATE(140), 2, - sym_conditional, - sym_operation, - STATE(141), 2, - sym_unary_operation, - sym_binary_operation, - STATE(100), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [2265] = 18, - ACTIONS(3), 1, - sym_comment, - ACTIONS(7), 1, - anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, + ACTIONS(118), 1, + anon_sym_DOT, + STATE(32), 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, - STATE(5), 1, - sym_expr_term, - STATE(163), 1, - sym_expression, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(27), 2, + 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_BANG, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(128), 2, - sym_unary_operation, - sym_binary_operation, - STATE(132), 2, - sym_conditional, - sym_operation, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [2331] = 18, + 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] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(103), 1, - anon_sym_LBRACE, - ACTIONS(105), 1, - sym_identifier, - ACTIONS(107), 1, - anon_sym_LPAREN, - ACTIONS(109), 1, - sym_numeric_lit, - ACTIONS(111), 1, - anon_sym_DQUOTE, - ACTIONS(115), 1, - sym_null_lit, - ACTIONS(117), 1, - anon_sym_LBRACK, - STATE(66), 1, - sym_expr_term, - STATE(144), 1, - sym_expression, - ACTIONS(113), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(119), 2, - anon_sym_DASH, - anon_sym_BANG, - STATE(96), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(98), 2, - sym_tuple, - sym_object, - STATE(105), 2, - sym_string_lit, - sym_bool_lit, - STATE(140), 2, - sym_conditional, - sym_operation, - STATE(141), 2, - sym_unary_operation, - sym_binary_operation, - STATE(100), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [2397] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(148), 5, + ACTIONS(123), 5, anon_sym_EQ, anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(146), 23, + ACTIONS(121), 23, ts_builtin_sym_end, anon_sym_LBRACE, anon_sym_RBRACE, sym_identifier, anon_sym_RPAREN, - anon_sym_DQUOTE, anon_sym_LBRACK, anon_sym_COMMA, anon_sym_RBRACK, @@ -4843,55 +4768,146 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2433] = 18, + anon_sym_DQUOTE, + [2436] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(103), 1, - anon_sym_LBRACE, - ACTIONS(105), 1, + ACTIONS(129), 1, + anon_sym_DOT, + STATE(38), 2, + sym_get_attr, + aux_sym_attr_splat_repeat1, + ACTIONS(127), 4, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(125), 21, + ts_builtin_sym_end, + anon_sym_RBRACE, sym_identifier, - ACTIONS(107), 1, - anon_sym_LPAREN, - ACTIONS(109), 1, - sym_numeric_lit, - ACTIONS(111), 1, - anon_sym_DQUOTE, - ACTIONS(115), 1, - sym_null_lit, - ACTIONS(117), 1, + anon_sym_RPAREN, anon_sym_LBRACK, - STATE(66), 1, - sym_expr_term, - STATE(158), 1, - sym_expression, - ACTIONS(113), 2, - anon_sym_true, - anon_sym_false, - ACTIONS(119), 2, + 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_BANG, - STATE(96), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(98), 2, - sym_tuple, - sym_object, - STATE(105), 2, - sym_string_lit, - sym_bool_lit, - STATE(140), 2, - sym_conditional, - sym_operation, - STATE(141), 2, - sym_unary_operation, - sym_binary_operation, - STATE(100), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [2499] = 4, + 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, + [2476] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(134), 5, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(132), 23, + ts_builtin_sym_end, + anon_sym_LBRACE, + 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, + anon_sym_DQUOTE, + [2512] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(140), 1, + anon_sym_DOT, + STATE(38), 2, + sym_get_attr, + aux_sym_attr_splat_repeat1, + ACTIONS(138), 4, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(136), 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, + [2552] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(147), 1, + anon_sym_DOT, + STATE(40), 2, + sym_get_attr, + aux_sym_attr_splat_repeat1, + ACTIONS(145), 4, + anon_sym_EQ, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(143), 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, + [2592] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(154), 1, @@ -4924,7 +4940,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2536] = 3, + [2629] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(158), 5, @@ -4955,7 +4971,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2570] = 3, + [2663] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(162), 5, @@ -4986,7 +5002,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2604] = 3, + [2697] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(166), 5, @@ -5017,7 +5033,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2638] = 3, + [2731] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(170), 5, @@ -5048,7 +5064,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2672] = 3, + [2765] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(174), 5, @@ -5079,7 +5095,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2706] = 3, + [2799] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(178), 5, @@ -5110,7 +5126,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2740] = 3, + [2833] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(182), 5, @@ -5141,7 +5157,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2774] = 3, + [2867] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(186), 5, @@ -5172,7 +5188,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2808] = 3, + [2901] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(190), 5, @@ -5203,7 +5219,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2842] = 3, + [2935] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(194), 5, @@ -5234,7 +5250,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2876] = 3, + [2969] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(198), 5, @@ -5265,7 +5281,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2910] = 3, + [3003] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(202), 5, @@ -5296,7 +5312,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2944] = 3, + [3037] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(206), 5, @@ -5327,7 +5343,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [2978] = 3, + [3071] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(210), 5, @@ -5358,7 +5374,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3012] = 3, + [3105] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(214), 5, @@ -5389,7 +5405,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3046] = 3, + [3139] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(218), 5, @@ -5420,7 +5436,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3080] = 3, + [3173] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(222), 5, @@ -5451,7 +5467,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3114] = 3, + [3207] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(226), 5, @@ -5482,7 +5498,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3148] = 3, + [3241] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(230), 5, @@ -5513,7 +5529,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3182] = 3, + [3275] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(234), 5, @@ -5544,7 +5560,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3216] = 3, + [3309] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(238), 5, @@ -5575,7 +5591,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3250] = 3, + [3343] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(242), 5, @@ -5606,7 +5622,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3284] = 3, + [3377] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(246), 5, @@ -5637,55 +5653,148 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3318] = 14, + [3411] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(248), 1, - anon_sym_LBRACK, - ACTIONS(250), 1, + ACTIONS(250), 5, + anon_sym_EQ, anon_sym_DOT, - ACTIONS(256), 1, anon_sym_SLASH, - ACTIONS(264), 1, - anon_sym_AMP_AMP, - ACTIONS(266), 1, - anon_sym_PIPE_PIPE, - ACTIONS(252), 2, - anon_sym_STAR, - anon_sym_PERCENT, - ACTIONS(254), 2, - anon_sym_DASH, - anon_sym_PLUS, - ACTIONS(258), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(260), 2, + ACTIONS(248), 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(262), 2, anon_sym_EQ_EQ, anon_sym_BANG_EQ, - STATE(90), 2, + anon_sym_AMP_AMP, + anon_sym_PIPE_PIPE, + [3445] = 14, + ACTIONS(3), 1, + sym_comment, + ACTIONS(252), 1, + anon_sym_LBRACK, + ACTIONS(254), 1, + 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, + anon_sym_GT_EQ, + anon_sym_LT_EQ, + ACTIONS(266), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + STATE(108), 2, sym_attr_splat, sym_full_splat, - STATE(91), 3, + STATE(106), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(35), 5, + ACTIONS(37), 5, anon_sym_RBRACE, anon_sym_RBRACK, anon_sym_if, sym_ellipsis, anon_sym_QMARK, - [3373] = 6, + [3500] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(268), 1, + ACTIONS(272), 1, anon_sym_LBRACK, - ACTIONS(271), 1, + ACTIONS(275), 1, anon_sym_DOT, - ACTIONS(79), 3, + ACTIONS(103), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + STATE(68), 3, + sym_index, + sym_get_attr, + aux_sym_full_splat_repeat1, + ACTIONS(101), 15, + anon_sym_RBRACE, + 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, + [3537] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(278), 1, + anon_sym_LBRACK, + ACTIONS(281), 1, + anon_sym_DOT, + ACTIONS(113), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + STATE(68), 3, + sym_index, + sym_get_attr, + aux_sym_full_splat_repeat1, + ACTIONS(111), 15, + anon_sym_RBRACE, + 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, + [3574] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(284), 1, + anon_sym_LBRACK, + ACTIONS(287), 1, + anon_sym_DOT, + ACTIONS(93), 3, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, @@ -5693,7 +5802,7 @@ static const uint16_t ts_small_parse_table[] = { sym_index, sym_get_attr, aux_sym_full_splat_repeat1, - ACTIONS(77), 15, + ACTIONS(91), 15, anon_sym_RBRACE, anon_sym_RBRACK, anon_sym_STAR, @@ -5709,193 +5818,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [3410] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(274), 1, - anon_sym_LBRACK, - ACTIONS(277), 1, - anon_sym_DOT, - ACTIONS(95), 3, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - STATE(68), 3, - sym_index, - sym_get_attr, - aux_sym_full_splat_repeat1, - ACTIONS(93), 15, - anon_sym_RBRACE, - 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, - [3447] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(280), 1, - anon_sym_LBRACK, - ACTIONS(283), 1, - anon_sym_DOT, - ACTIONS(69), 3, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - STATE(68), 3, - sym_index, - sym_get_attr, - aux_sym_full_splat_repeat1, - ACTIONS(67), 15, - anon_sym_RBRACE, - 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, - [3484] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(286), 1, - anon_sym_DOT, - STATE(71), 2, - sym_get_attr, - aux_sym_attr_splat_repeat1, - ACTIONS(137), 3, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(135), 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, - [3518] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(289), 1, - anon_sym_DOT, - STATE(71), 2, - sym_get_attr, - aux_sym_attr_splat_repeat1, - ACTIONS(130), 3, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(128), 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, - [3552] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(292), 1, - anon_sym_DOT, - STATE(70), 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, - [3586] = 14, - ACTIONS(3), 1, - sym_comment, - ACTIONS(103), 1, - anon_sym_LBRACE, - ACTIONS(105), 1, - sym_identifier, - ACTIONS(107), 1, - anon_sym_LPAREN, - ACTIONS(109), 1, - sym_numeric_lit, - ACTIONS(111), 1, - anon_sym_DQUOTE, - ACTIONS(115), 1, - sym_null_lit, - ACTIONS(117), 1, - anon_sym_LBRACK, - STATE(125), 1, - sym_expr_term, - ACTIONS(113), 2, - anon_sym_true, - anon_sym_false, - STATE(96), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(98), 2, - sym_tuple, - sym_object, - STATE(105), 2, - sym_string_lit, - sym_bool_lit, - STATE(100), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [3637] = 14, + [3611] = 15, ACTIONS(3), 1, sym_comment, ACTIONS(7), 1, @@ -5904,297 +5827,634 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, ACTIONS(15), 1, sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, + ACTIONS(19), 1, sym_null_lit, - ACTIONS(23), 1, + ACTIONS(21), 1, anon_sym_LBRACK, + ACTIONS(27), 1, + anon_sym_DQUOTE, ACTIONS(31), 1, sym_identifier, - STATE(115), 1, - sym_expr_term, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - STATE(45), 2, - sym_string_lit, + STATE(56), 1, sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [3688] = 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(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(120), 1, - sym_expr_term, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [3739] = 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(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(119), 1, - sym_expr_term, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [3790] = 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(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(114), 1, - sym_expr_term, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [3841] = 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(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, + STATE(58), 1, + sym_quoted_template, STATE(117), 1, sym_expr_term, - ACTIONS(19), 2, + ACTIONS(17), 2, anon_sym_true, anon_sym_false, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, + STATE(61), 2, sym_for_tuple_expr, sym_for_object_expr, - STATE(56), 5, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(64), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [3892] = 14, + sym_template_expr, + [3665] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(7), 1, + ACTIONS(73), 1, anon_sym_LBRACE, - ACTIONS(13), 1, - anon_sym_LPAREN, - ACTIONS(15), 1, - sym_numeric_lit, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, + ACTIONS(75), 1, sym_identifier, - STATE(116), 1, - sym_expr_term, - ACTIONS(19), 2, - anon_sym_true, - anon_sym_false, - STATE(45), 2, - sym_string_lit, + 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(102), 1, sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [3943] = 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(17), 1, - anon_sym_DQUOTE, - ACTIONS(21), 1, - sym_null_lit, - ACTIONS(23), 1, - anon_sym_LBRACK, - ACTIONS(31), 1, - sym_identifier, - STATE(118), 1, + STATE(110), 1, + sym_quoted_template, + STATE(126), 1, sym_expr_term, - ACTIONS(19), 2, + ACTIONS(81), 2, anon_sym_true, anon_sym_false, - STATE(45), 2, - sym_string_lit, - sym_bool_lit, - STATE(52), 2, - sym_tuple, - sym_object, - STATE(57), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(56), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [3994] = 14, - ACTIONS(3), 1, - sym_comment, - ACTIONS(103), 1, - anon_sym_LBRACE, - ACTIONS(105), 1, - sym_identifier, - ACTIONS(107), 1, - anon_sym_LPAREN, - ACTIONS(109), 1, - sym_numeric_lit, - ACTIONS(111), 1, - anon_sym_DQUOTE, - ACTIONS(115), 1, - sym_null_lit, - ACTIONS(117), 1, - anon_sym_LBRACK, - STATE(123), 1, - sym_expr_term, - ACTIONS(113), 2, - anon_sym_true, - anon_sym_false, - STATE(96), 2, - sym_for_tuple_expr, - sym_for_object_expr, STATE(98), 2, sym_tuple, sym_object, STATE(105), 2, - sym_string_lit, - sym_bool_lit, - STATE(100), 5, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(90), 6, sym_literal_value, sym_collection_value, sym_for_expr, sym_variable_expr, sym_function_call, - [4045] = 4, + sym_template_expr, + [3719] = 15, ACTIONS(3), 1, sym_comment, - ACTIONS(295), 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, + anon_sym_DQUOTE, + ACTIONS(31), 1, + sym_identifier, + STATE(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(120), 1, + sym_expr_term, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [3773] = 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(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(122), 1, + sym_expr_term, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [3827] = 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(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(121), 1, + sym_expr_term, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [3881] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(290), 1, + anon_sym_DOT, + STATE(80), 2, + sym_get_attr, + aux_sym_attr_splat_repeat1, + ACTIONS(145), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(143), 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, + [3915] = 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(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(116), 1, + sym_expr_term, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [3969] = 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(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(119), 1, + sym_expr_term, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4023] = 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(102), 1, + sym_bool_lit, + STATE(110), 1, + sym_quoted_template, + STATE(129), 1, + sym_expr_term, + ACTIONS(81), 2, + anon_sym_true, + anon_sym_false, + STATE(98), 2, + sym_tuple, + sym_object, + STATE(105), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(90), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4077] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(293), 1, + anon_sym_DOT, + STATE(87), 2, + sym_get_attr, + aux_sym_attr_splat_repeat1, + ACTIONS(138), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(136), 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, + [4111] = 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(102), 1, + sym_bool_lit, + STATE(110), 1, + sym_quoted_template, + STATE(128), 1, + sym_expr_term, + ACTIONS(81), 2, + anon_sym_true, + anon_sym_false, + STATE(98), 2, + sym_tuple, + sym_object, + STATE(105), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(90), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4165] = 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(102), 1, + sym_bool_lit, + STATE(110), 1, + sym_quoted_template, + STATE(125), 1, + sym_expr_term, + ACTIONS(81), 2, + anon_sym_true, + anon_sym_false, + STATE(98), 2, + sym_tuple, + sym_object, + STATE(105), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(90), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4219] = 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(56), 1, + sym_bool_lit, + STATE(58), 1, + sym_quoted_template, + STATE(118), 1, + sym_expr_term, + ACTIONS(17), 2, + anon_sym_true, + anon_sym_false, + STATE(61), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(63), 2, + sym_tuple, + sym_object, + STATE(64), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4273] = 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(102), 1, + sym_bool_lit, + STATE(110), 1, + sym_quoted_template, + STATE(124), 1, + sym_expr_term, + ACTIONS(81), 2, + anon_sym_true, + anon_sym_false, + STATE(98), 2, + sym_tuple, + sym_object, + STATE(105), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(90), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4327] = 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(102), 1, + sym_bool_lit, + STATE(110), 1, + sym_quoted_template, + STATE(127), 1, + sym_expr_term, + ACTIONS(81), 2, + anon_sym_true, + anon_sym_false, + STATE(98), 2, + sym_tuple, + sym_object, + STATE(105), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(90), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4381] = 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(102), 1, + sym_bool_lit, + STATE(110), 1, + sym_quoted_template, + STATE(123), 1, + sym_expr_term, + ACTIONS(81), 2, + anon_sym_true, + anon_sym_false, + STATE(98), 2, + sym_tuple, + sym_object, + STATE(105), 2, + sym_for_tuple_expr, + sym_for_object_expr, + STATE(90), 6, + sym_literal_value, + sym_collection_value, + sym_for_expr, + sym_variable_expr, + sym_function_call, + sym_template_expr, + [4435] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(296), 1, + anon_sym_DOT, + STATE(87), 2, + sym_get_attr, + aux_sym_attr_splat_repeat1, + ACTIONS(127), 3, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(125), 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, + [4469] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(299), 1, anon_sym_LPAREN, ACTIONS(152), 4, anon_sym_DOT, @@ -6218,517 +6478,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4076] = 14, - ACTIONS(3), 1, - sym_comment, - ACTIONS(103), 1, - anon_sym_LBRACE, - ACTIONS(105), 1, - sym_identifier, - ACTIONS(107), 1, - anon_sym_LPAREN, - ACTIONS(109), 1, - sym_numeric_lit, - ACTIONS(111), 1, - anon_sym_DQUOTE, - ACTIONS(115), 1, - sym_null_lit, - ACTIONS(117), 1, - anon_sym_LBRACK, - STATE(127), 1, - sym_expr_term, - ACTIONS(113), 2, - anon_sym_true, - anon_sym_false, - STATE(96), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(98), 2, - sym_tuple, - sym_object, - STATE(105), 2, - sym_string_lit, - sym_bool_lit, - STATE(100), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [4127] = 14, - ACTIONS(3), 1, - sym_comment, - ACTIONS(103), 1, - anon_sym_LBRACE, - ACTIONS(105), 1, - sym_identifier, - ACTIONS(107), 1, - anon_sym_LPAREN, - ACTIONS(109), 1, - sym_numeric_lit, - ACTIONS(111), 1, - anon_sym_DQUOTE, - ACTIONS(115), 1, - sym_null_lit, - ACTIONS(117), 1, - anon_sym_LBRACK, - STATE(121), 1, - sym_expr_term, - ACTIONS(113), 2, - anon_sym_true, - anon_sym_false, - STATE(96), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(98), 2, - sym_tuple, - sym_object, - STATE(105), 2, - sym_string_lit, - sym_bool_lit, - STATE(100), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [4178] = 14, - ACTIONS(3), 1, - sym_comment, - ACTIONS(103), 1, - anon_sym_LBRACE, - ACTIONS(105), 1, - sym_identifier, - ACTIONS(107), 1, - anon_sym_LPAREN, - ACTIONS(109), 1, - sym_numeric_lit, - ACTIONS(111), 1, - anon_sym_DQUOTE, - ACTIONS(115), 1, - sym_null_lit, - ACTIONS(117), 1, - anon_sym_LBRACK, - STATE(124), 1, - sym_expr_term, - ACTIONS(113), 2, - anon_sym_true, - anon_sym_false, - STATE(96), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(98), 2, - sym_tuple, - sym_object, - STATE(105), 2, - sym_string_lit, - sym_bool_lit, - STATE(100), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [4229] = 14, - ACTIONS(3), 1, - sym_comment, - ACTIONS(103), 1, - anon_sym_LBRACE, - ACTIONS(105), 1, - sym_identifier, - ACTIONS(107), 1, - anon_sym_LPAREN, - ACTIONS(109), 1, - sym_numeric_lit, - ACTIONS(111), 1, - anon_sym_DQUOTE, - ACTIONS(115), 1, - sym_null_lit, - ACTIONS(117), 1, - anon_sym_LBRACK, - STATE(126), 1, - sym_expr_term, - ACTIONS(113), 2, - anon_sym_true, - anon_sym_false, - STATE(96), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(98), 2, - sym_tuple, - sym_object, - STATE(105), 2, - sym_string_lit, - sym_bool_lit, - STATE(100), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [4280] = 14, - ACTIONS(3), 1, - sym_comment, - ACTIONS(103), 1, - anon_sym_LBRACE, - ACTIONS(105), 1, - sym_identifier, - ACTIONS(107), 1, - anon_sym_LPAREN, - ACTIONS(109), 1, - sym_numeric_lit, - ACTIONS(111), 1, - anon_sym_DQUOTE, - ACTIONS(115), 1, - sym_null_lit, - ACTIONS(117), 1, - anon_sym_LBRACK, - STATE(122), 1, - sym_expr_term, - ACTIONS(113), 2, - anon_sym_true, - anon_sym_false, - STATE(96), 2, - sym_for_tuple_expr, - sym_for_object_expr, - STATE(98), 2, - sym_tuple, - sym_object, - STATE(105), 2, - sym_string_lit, - sym_bool_lit, - STATE(100), 5, - sym_literal_value, - sym_collection_value, - sym_for_expr, - sym_variable_expr, - sym_function_call, - [4331] = 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, - [4359] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(148), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(146), 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, - [4387] = 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, - [4415] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(238), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(236), 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, - [4443] = 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, - [4471] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(246), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(244), 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, - [4499] = 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, - [4527] = 3, - ACTIONS(3), 1, - sym_comment, - 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, - [4555] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(214), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - 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, - [4583] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(234), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(232), 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, - [4611] = 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, - [4639] = 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, - [4667] = 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, - [4695] = 3, + [4500] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(226), 4, @@ -6753,15 +6503,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4723] = 3, + [4528] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(182), 4, + ACTIONS(242), 4, anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(180), 16, + ACTIONS(240), 16, anon_sym_RBRACE, anon_sym_LBRACK, anon_sym_RBRACK, @@ -6778,15 +6528,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4751] = 3, + [4556] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(186), 4, + ACTIONS(174), 4, anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(184), 16, + ACTIONS(172), 16, anon_sym_RBRACE, anon_sym_LBRACK, anon_sym_RBRACK, @@ -6803,82 +6553,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4779] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(170), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(168), 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, - [4807] = 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, - [4835] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(190), 4, - anon_sym_DOT, - anon_sym_SLASH, - anon_sym_GT, - anon_sym_LT, - ACTIONS(188), 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, - [4863] = 3, + [4584] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(198), 4, @@ -6903,15 +6578,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4891] = 3, + [4612] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(218), 4, + ACTIONS(182), 4, anon_sym_DOT, anon_sym_SLASH, anon_sym_GT, anon_sym_LT, - ACTIONS(216), 16, + ACTIONS(180), 16, anon_sym_RBRACE, anon_sym_LBRACK, anon_sym_RBRACK, @@ -6928,7 +6603,57 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4919] = 3, + [4640] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(246), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(244), 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, + [4668] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(190), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(188), 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, + [4696] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(158), 4, @@ -6953,7 +6678,107 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4947] = 3, + [4724] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(170), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(168), 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, + [4752] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(238), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(236), 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, + [4780] = 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, + [4808] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(250), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(248), 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, + [4836] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(202), 4, @@ -6978,7 +6803,107 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [4975] = 3, + [4864] = 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, + [4892] = 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, + [4920] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(214), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + 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, + [4948] = 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, + [4976] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(206), 4, @@ -7003,7 +6928,32 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [5003] = 3, + [5004] = 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, + [5032] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(162), 4, @@ -7028,14 +6978,164 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [5031] = 6, + [5060] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(134), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(132), 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, + [5088] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(218), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(216), 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, + [5116] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(123), 4, + anon_sym_DOT, + 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, + [5144] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(234), 4, + anon_sym_DOT, + anon_sym_SLASH, + anon_sym_GT, + anon_sym_LT, + ACTIONS(232), 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, + [5172] = 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, + [5200] = 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, + [5228] = 6, ACTIONS(3), 1, sym_comment, ACTIONS(154), 1, anon_sym_LPAREN, - ACTIONS(297), 1, + ACTIONS(301), 1, anon_sym_EQ, - ACTIONS(300), 1, + ACTIONS(304), 1, anon_sym_COLON, ACTIONS(152), 3, anon_sym_SLASH, @@ -7055,127 +7155,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_AMP_AMP, anon_sym_PIPE_PIPE, - [5064] = 7, + [5261] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(39), 1, - anon_sym_LBRACK, ACTIONS(41), 1, - anon_sym_DOT, - ACTIONS(305), 1, - anon_sym_EQ, - STATE(64), 2, - sym_attr_splat, - sym_full_splat, - STATE(63), 3, - sym_index, - sym_get_attr, - sym_splat, - ACTIONS(303), 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, - [5098] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(39), 1, anon_sym_LBRACK, - ACTIONS(41), 1, - anon_sym_DOT, - ACTIONS(305), 1, - anon_sym_EQ, - STATE(64), 2, - sym_attr_splat, - sym_full_splat, - STATE(63), 3, - sym_index, - sym_get_attr, - sym_splat, - ACTIONS(303), 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, - [5132] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(39), 1, - anon_sym_LBRACK, - ACTIONS(41), 1, - anon_sym_DOT, - ACTIONS(305), 1, - anon_sym_EQ, - STATE(64), 2, - sym_attr_splat, - sym_full_splat, - STATE(63), 3, - sym_index, - sym_get_attr, - sym_splat, - ACTIONS(303), 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, - [5166] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(39), 1, - anon_sym_LBRACK, - ACTIONS(41), 1, - anon_sym_DOT, - ACTIONS(305), 1, - anon_sym_EQ, - STATE(64), 2, - sym_attr_splat, - sym_full_splat, - STATE(63), 3, - sym_index, - sym_get_attr, - sym_splat, - ACTIONS(303), 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, - [5200] = 7, - ACTIONS(3), 1, - sym_comment, - ACTIONS(39), 1, - anon_sym_LBRACK, - ACTIONS(41), 1, + ACTIONS(43), 1, anon_sym_DOT, ACTIONS(309), 1, anon_sym_EQ, - STATE(64), 2, + STATE(44), 2, sym_attr_splat, sym_full_splat, - STATE(63), 3, + STATE(55), 3, sym_index, sym_get_attr, sym_splat, @@ -7190,23 +7182,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ_GT, sym_ellipsis, anon_sym_QMARK, - [5234] = 7, + [5295] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(39), 1, - anon_sym_LBRACK, ACTIONS(41), 1, + anon_sym_LBRACK, + ACTIONS(43), 1, anon_sym_DOT, - ACTIONS(305), 1, + ACTIONS(309), 1, anon_sym_EQ, - STATE(64), 2, + STATE(44), 2, sym_attr_splat, sym_full_splat, - STATE(63), 3, + STATE(55), 3, sym_index, sym_get_attr, sym_splat, - ACTIONS(303), 10, + ACTIONS(307), 10, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -7217,178 +7209,22 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ_GT, sym_ellipsis, anon_sym_QMARK, - [5268] = 7, + [5329] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(39), 1, - anon_sym_LBRACK, ACTIONS(41), 1, - anon_sym_DOT, - ACTIONS(305), 1, - anon_sym_EQ, - STATE(64), 2, - sym_attr_splat, - sym_full_splat, - STATE(63), 3, - sym_index, - sym_get_attr, - sym_splat, - ACTIONS(303), 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, - [5302] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(248), 1, anon_sym_LBRACK, - ACTIONS(250), 1, + ACTIONS(43), 1, anon_sym_DOT, - STATE(90), 2, - sym_attr_splat, - sym_full_splat, - STATE(91), 3, - sym_index, - sym_get_attr, - sym_splat, - ACTIONS(303), 5, - anon_sym_RBRACE, - anon_sym_RBRACK, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - [5328] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(248), 1, - anon_sym_LBRACK, - ACTIONS(250), 1, - anon_sym_DOT, - STATE(90), 2, - sym_attr_splat, - sym_full_splat, - STATE(91), 3, - sym_index, - sym_get_attr, - sym_splat, - ACTIONS(303), 5, - anon_sym_RBRACE, - anon_sym_RBRACK, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - [5354] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(248), 1, - anon_sym_LBRACK, - ACTIONS(250), 1, - anon_sym_DOT, - STATE(90), 2, - sym_attr_splat, - sym_full_splat, - STATE(91), 3, - sym_index, - sym_get_attr, - sym_splat, - ACTIONS(303), 5, - anon_sym_RBRACE, - anon_sym_RBRACK, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - [5380] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(248), 1, - anon_sym_LBRACK, - ACTIONS(250), 1, - anon_sym_DOT, - STATE(90), 2, - sym_attr_splat, - sym_full_splat, - STATE(91), 3, - sym_index, - sym_get_attr, - sym_splat, - ACTIONS(303), 5, - anon_sym_RBRACE, - anon_sym_RBRACK, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - [5406] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(248), 1, - anon_sym_LBRACK, - ACTIONS(250), 1, - anon_sym_DOT, - STATE(90), 2, - sym_attr_splat, - sym_full_splat, - STATE(91), 3, - sym_index, - sym_get_attr, - sym_splat, - ACTIONS(307), 5, - anon_sym_RBRACE, - anon_sym_RBRACK, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - [5432] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(248), 1, - anon_sym_LBRACK, - ACTIONS(250), 1, - anon_sym_DOT, - STATE(90), 2, - sym_attr_splat, - sym_full_splat, - STATE(91), 3, - sym_index, - sym_get_attr, - sym_splat, - ACTIONS(303), 5, - anon_sym_RBRACE, - anon_sym_RBRACK, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - [5458] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(248), 1, - anon_sym_LBRACK, - ACTIONS(250), 1, - anon_sym_DOT, - STATE(90), 2, - sym_attr_splat, - sym_full_splat, - STATE(91), 3, - sym_index, - sym_get_attr, - sym_splat, - ACTIONS(303), 5, - anon_sym_RBRACE, - anon_sym_RBRACK, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - [5484] = 3, - ACTIONS(3), 1, - sym_comment, ACTIONS(313), 1, anon_sym_EQ, + STATE(44), 2, + sym_attr_splat, + sym_full_splat, + STATE(55), 3, + sym_index, + sym_get_attr, + sym_splat, ACTIONS(311), 10, ts_builtin_sym_end, anon_sym_RBRACE, @@ -7400,30 +7236,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ_GT, sym_ellipsis, anon_sym_QMARK, - [5503] = 3, + [5363] = 7, ACTIONS(3), 1, sym_comment, - ACTIONS(317), 4, - sym_identifier, - anon_sym_true, - anon_sym_false, - sym_null_lit, - ACTIONS(315), 7, - anon_sym_LBRACE, - anon_sym_LPAREN, - sym_numeric_lit, - anon_sym_DQUOTE, + ACTIONS(41), 1, anon_sym_LBRACK, - anon_sym_DASH, - anon_sym_BANG, - [5522] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(321), 1, + ACTIONS(43), 1, + anon_sym_DOT, + ACTIONS(309), 1, anon_sym_EQ, - ACTIONS(323), 1, - anon_sym_QMARK, - ACTIONS(319), 9, + STATE(44), 2, + sym_attr_splat, + sym_full_splat, + STATE(55), 3, + sym_index, + sym_get_attr, + sym_splat, + ACTIONS(307), 10, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -7433,7 +7262,278 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COLON, anon_sym_EQ_GT, sym_ellipsis, - [5543] = 3, + anon_sym_QMARK, + [5397] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(41), 1, + anon_sym_LBRACK, + ACTIONS(43), 1, + anon_sym_DOT, + ACTIONS(309), 1, + anon_sym_EQ, + STATE(44), 2, + sym_attr_splat, + sym_full_splat, + STATE(55), 3, + sym_index, + sym_get_attr, + sym_splat, + ACTIONS(307), 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, + [5431] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(41), 1, + anon_sym_LBRACK, + ACTIONS(43), 1, + anon_sym_DOT, + ACTIONS(309), 1, + anon_sym_EQ, + STATE(44), 2, + sym_attr_splat, + sym_full_splat, + STATE(55), 3, + sym_index, + sym_get_attr, + sym_splat, + ACTIONS(307), 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, + [5465] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(41), 1, + anon_sym_LBRACK, + ACTIONS(43), 1, + anon_sym_DOT, + ACTIONS(309), 1, + anon_sym_EQ, + STATE(44), 2, + sym_attr_splat, + sym_full_splat, + STATE(55), 3, + sym_index, + sym_get_attr, + sym_splat, + ACTIONS(307), 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, + [5499] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(252), 1, + anon_sym_LBRACK, + ACTIONS(254), 1, + anon_sym_DOT, + STATE(108), 2, + sym_attr_splat, + sym_full_splat, + STATE(106), 3, + sym_index, + sym_get_attr, + sym_splat, + ACTIONS(307), 5, + anon_sym_RBRACE, + anon_sym_RBRACK, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + [5525] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(252), 1, + anon_sym_LBRACK, + ACTIONS(254), 1, + anon_sym_DOT, + STATE(108), 2, + sym_attr_splat, + sym_full_splat, + STATE(106), 3, + sym_index, + sym_get_attr, + sym_splat, + ACTIONS(311), 5, + anon_sym_RBRACE, + anon_sym_RBRACK, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + [5551] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(252), 1, + anon_sym_LBRACK, + ACTIONS(254), 1, + anon_sym_DOT, + STATE(108), 2, + sym_attr_splat, + sym_full_splat, + STATE(106), 3, + sym_index, + sym_get_attr, + sym_splat, + ACTIONS(307), 5, + anon_sym_RBRACE, + anon_sym_RBRACK, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + [5577] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(252), 1, + anon_sym_LBRACK, + ACTIONS(254), 1, + anon_sym_DOT, + STATE(108), 2, + sym_attr_splat, + sym_full_splat, + STATE(106), 3, + sym_index, + sym_get_attr, + sym_splat, + ACTIONS(307), 5, + anon_sym_RBRACE, + anon_sym_RBRACK, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + [5603] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(252), 1, + anon_sym_LBRACK, + ACTIONS(254), 1, + anon_sym_DOT, + STATE(108), 2, + sym_attr_splat, + sym_full_splat, + STATE(106), 3, + sym_index, + sym_get_attr, + sym_splat, + ACTIONS(307), 5, + anon_sym_RBRACE, + anon_sym_RBRACK, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + [5629] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(252), 1, + anon_sym_LBRACK, + ACTIONS(254), 1, + anon_sym_DOT, + STATE(108), 2, + sym_attr_splat, + sym_full_splat, + STATE(106), 3, + sym_index, + sym_get_attr, + sym_splat, + ACTIONS(307), 5, + anon_sym_RBRACE, + anon_sym_RBRACK, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + [5655] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(252), 1, + anon_sym_LBRACK, + ACTIONS(254), 1, + anon_sym_DOT, + STATE(108), 2, + sym_attr_splat, + sym_full_splat, + STATE(106), 3, + sym_index, + sym_get_attr, + sym_splat, + ACTIONS(307), 5, + anon_sym_RBRACE, + anon_sym_RBRACK, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + [5681] = 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, + [5700] = 4, + 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, + [5721] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(324), 4, + sym_identifier, + anon_sym_true, + anon_sym_false, + sym_null_lit, + ACTIONS(322), 7, + anon_sym_LBRACE, + anon_sym_LPAREN, + sym_numeric_lit, + anon_sym_LBRACK, + anon_sym_DASH, + anon_sym_BANG, + anon_sym_DQUOTE, + [5740] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(328), 4, @@ -7445,16 +7545,16 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACE, anon_sym_LPAREN, sym_numeric_lit, - anon_sym_DQUOTE, anon_sym_LBRACK, anon_sym_DASH, anon_sym_BANG, - [5562] = 3, + anon_sym_DQUOTE, + [5759] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(37), 1, + ACTIONS(332), 1, anon_sym_EQ, - ACTIONS(35), 10, + ACTIONS(330), 10, ts_builtin_sym_end, anon_sym_RBRACE, sym_identifier, @@ -7465,146 +7565,111 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ_GT, sym_ellipsis, anon_sym_QMARK, - [5581] = 6, + [5778] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(330), 1, - anon_sym_EQ, - ACTIONS(332), 1, - anon_sym_LBRACE, 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(139), 2, + sym_template_interpolation, + aux_sym_quoted_template_repeat1, + [5799] = 7, + ACTIONS(3), 1, + sym_comment, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(342), 1, + anon_sym_EQ, + ACTIONS(344), 1, + anon_sym_LBRACE, + ACTIONS(346), 1, sym_identifier, - STATE(147), 2, + STATE(168), 1, + sym_quoted_template, + STATE(144), 2, sym_string_lit, aux_sym_block_repeat1, - [5601] = 4, + [5822] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(5), 1, - sym_identifier, - ACTIONS(336), 2, - ts_builtin_sym_end, - anon_sym_RBRACE, - STATE(136), 3, - sym_attribute, - sym_block, - aux_sym_body_repeat1, - [5617] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(5), 1, - sym_identifier, + ACTIONS(336), 1, + anon_sym_DOLLAR_LBRACE, ACTIONS(338), 1, - anon_sym_RBRACE, - STATE(198), 1, - sym_body, - STATE(134), 3, - sym_attribute, - sym_block, - aux_sym_body_repeat1, - [5635] = 4, + anon_sym_DOLLAR_LBRACE_TILDE, + ACTIONS(348), 1, + anon_sym_DQUOTE, + ACTIONS(350), 2, + sym__template_char, + sym_escape_sequence, + STATE(138), 2, + sym_template_interpolation, + aux_sym_quoted_template_repeat1, + [5843] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(342), 1, - sym_identifier, + ACTIONS(336), 1, + anon_sym_DOLLAR_LBRACE, + ACTIONS(338), 1, + anon_sym_DOLLAR_LBRACE_TILDE, + ACTIONS(352), 1, + anon_sym_DQUOTE, ACTIONS(340), 2, - ts_builtin_sym_end, - anon_sym_RBRACE, - STATE(136), 3, - sym_attribute, - sym_block, - aux_sym_body_repeat1, - [5651] = 5, + sym__template_char, + sym_escape_sequence, + STATE(139), 2, + sym_template_interpolation, + aux_sym_quoted_template_repeat1, + [5864] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(354), 1, + anon_sym_DQUOTE, + ACTIONS(356), 1, + anon_sym_DOLLAR_LBRACE, + ACTIONS(359), 1, + anon_sym_DOLLAR_LBRACE_TILDE, + ACTIONS(362), 2, + sym__template_char, + sym_escape_sequence, + STATE(139), 2, + sym_template_interpolation, + aux_sym_quoted_template_repeat1, + [5885] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(336), 1, + anon_sym_DOLLAR_LBRACE, + ACTIONS(338), 1, + anon_sym_DOLLAR_LBRACE_TILDE, + ACTIONS(365), 1, + anon_sym_DQUOTE, + ACTIONS(367), 2, + sym__template_char, + sym_escape_sequence, + STATE(135), 2, + sym_template_interpolation, + aux_sym_quoted_template_repeat1, + [5906] = 5, ACTIONS(3), 1, sym_comment, ACTIONS(5), 1, sym_identifier, - ACTIONS(345), 1, + ACTIONS(369), 1, anon_sym_RBRACE, - STATE(203), 1, + STATE(211), 1, sym_body, - STATE(134), 3, + STATE(145), 3, sym_attribute, sym_block, aux_sym_body_repeat1, - [5669] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(349), 1, - anon_sym_COMMA, - STATE(138), 1, - aux_sym_tuple_repeat1, - ACTIONS(347), 3, - anon_sym_RPAREN, - anon_sym_RBRACK, - sym_ellipsis, - [5684] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, - ACTIONS(347), 4, - anon_sym_RPAREN, - anon_sym_COMMA, - anon_sym_RBRACK, - sym_ellipsis, - [5697] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(35), 5, - anon_sym_RBRACE, - anon_sym_RBRACK, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - [5708] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(311), 5, - anon_sym_RBRACE, - anon_sym_RBRACK, - anon_sym_if, - sym_ellipsis, - anon_sym_QMARK, - [5719] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, - ACTIONS(354), 1, - anon_sym_RPAREN, - ACTIONS(356), 1, - anon_sym_COMMA, - ACTIONS(358), 1, - sym_ellipsis, - STATE(148), 1, - aux_sym_tuple_repeat1, - [5738] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(360), 1, - anon_sym_QMARK, - ACTIONS(319), 4, - anon_sym_RBRACE, - anon_sym_RBRACK, - anon_sym_if, - sym_ellipsis, - [5751] = 6, - ACTIONS(3), 1, - sym_comment, - ACTIONS(363), 1, - anon_sym_RBRACE, - ACTIONS(365), 1, - anon_sym_if, - ACTIONS(367), 1, - sym_ellipsis, - ACTIONS(369), 1, - anon_sym_QMARK, - STATE(204), 1, - sym_for_cond, - [5770] = 5, + [5924] = 6, ACTIONS(3), 1, sym_comment, ACTIONS(371), 1, @@ -7613,940 +7678,1096 @@ static const uint16_t ts_small_parse_table[] = { sym_identifier, ACTIONS(376), 1, anon_sym_DQUOTE, - STATE(145), 2, + STATE(168), 1, + sym_quoted_template, + STATE(142), 2, sym_string_lit, aux_sym_block_repeat1, - [5787] = 6, + [5944] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(365), 1, - anon_sym_if, - ACTIONS(369), 1, - anon_sym_QMARK, - ACTIONS(379), 1, - anon_sym_RBRACE, ACTIONS(381), 1, - sym_ellipsis, - STATE(200), 1, - sym_for_cond, - [5806] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(17), 1, - anon_sym_DQUOTE, - ACTIONS(383), 1, - anon_sym_LBRACE, - ACTIONS(385), 1, sym_identifier, - STATE(145), 2, - sym_string_lit, - aux_sym_block_repeat1, - [5823] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(65), 1, - anon_sym_RPAREN, - ACTIONS(387), 1, - anon_sym_COMMA, - ACTIONS(389), 1, - sym_ellipsis, - STATE(138), 1, - aux_sym_tuple_repeat1, - [5839] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, - ACTIONS(391), 3, + ACTIONS(379), 2, ts_builtin_sym_end, anon_sym_RBRACE, + STATE(143), 3, + sym_attribute, + sym_block, + aux_sym_body_repeat1, + [5960] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(27), 1, + anon_sym_DQUOTE, + ACTIONS(384), 1, + anon_sym_LBRACE, + ACTIONS(386), 1, sym_identifier, - [5851] = 4, - ACTIONS(393), 1, - anon_sym_DQUOTE, - ACTIONS(398), 1, + STATE(168), 1, + sym_quoted_template, + STATE(142), 2, + sym_string_lit, + aux_sym_block_repeat1, + [5980] = 4, + ACTIONS(3), 1, sym_comment, - STATE(150), 1, - aux_sym_string_lit_repeat1, - ACTIONS(395), 2, - aux_sym_string_lit_token1, + ACTIONS(5), 1, + sym_identifier, + ACTIONS(388), 2, + ts_builtin_sym_end, + anon_sym_RBRACE, + STATE(143), 3, + sym_attribute, + sym_block, + aux_sym_body_repeat1, + [5996] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(5), 1, + sym_identifier, + ACTIONS(390), 1, + anon_sym_RBRACE, + STATE(213), 1, + sym_body, + STATE(145), 3, + sym_attribute, + sym_block, + aux_sym_body_repeat1, + [6014] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(394), 1, + anon_sym_COMMA, + STATE(147), 1, + aux_sym_tuple_repeat1, + ACTIONS(392), 3, + anon_sym_RPAREN, + anon_sym_RBRACK, + sym_ellipsis, + [6029] = 4, + ACTIONS(3), 1, + sym_comment, + STATE(148), 1, + aux_sym_template_interpolation_repeat1, + ACTIONS(397), 2, + anon_sym_RBRACE, + anon_sym_TILDE_RBRACE, + ACTIONS(399), 2, + sym__template_char_in_interpolation, sym_escape_sequence, - [5865] = 4, - ACTIONS(398), 1, + [6044] = 2, + ACTIONS(3), 1, sym_comment, - ACTIONS(400), 1, - anon_sym_DQUOTE, - STATE(154), 1, - aux_sym_string_lit_repeat1, + ACTIONS(330), 5, + anon_sym_RBRACE, + anon_sym_RBRACK, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + [6055] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(37), 5, + anon_sym_RBRACE, + anon_sym_RBRACK, + anon_sym_if, + sym_ellipsis, + anon_sym_QMARK, + [6066] = 4, + ACTIONS(3), 1, + sym_comment, + STATE(153), 1, + aux_sym_template_interpolation_repeat1, ACTIONS(402), 2, - aux_sym_string_lit_token1, + anon_sym_RBRACE, + anon_sym_TILDE_RBRACE, + ACTIONS(404), 2, + sym__template_char_in_interpolation, sym_escape_sequence, - [5879] = 4, - ACTIONS(398), 1, - sym_comment, - ACTIONS(404), 1, - anon_sym_DQUOTE, - STATE(156), 1, - aux_sym_string_lit_repeat1, - ACTIONS(406), 2, - aux_sym_string_lit_token1, - sym_escape_sequence, - [5893] = 5, + [6081] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, ACTIONS(408), 1, - anon_sym_COMMA, - ACTIONS(410), 1, - anon_sym_RBRACK, - STATE(160), 1, - aux_sym_tuple_repeat1, - [5909] = 4, - ACTIONS(398), 1, - sym_comment, - ACTIONS(412), 1, - anon_sym_DQUOTE, - STATE(150), 1, - aux_sym_string_lit_repeat1, - ACTIONS(414), 2, - aux_sym_string_lit_token1, + anon_sym_DOLLAR_LBRACE, + ACTIONS(406), 4, + sym__template_char, sym_escape_sequence, - [5923] = 5, + anon_sym_DQUOTE, + anon_sym_DOLLAR_LBRACE_TILDE, + [6094] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, - ACTIONS(408), 1, - anon_sym_COMMA, + STATE(148), 1, + aux_sym_template_interpolation_repeat1, + ACTIONS(410), 2, + anon_sym_RBRACE, + anon_sym_TILDE_RBRACE, + ACTIONS(412), 2, + sym__template_char_in_interpolation, + sym_escape_sequence, + [6109] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(414), 1, + anon_sym_RBRACE, ACTIONS(416), 1, - anon_sym_RBRACK, - STATE(159), 1, - aux_sym_tuple_repeat1, - [5939] = 4, - ACTIONS(398), 1, - sym_comment, + anon_sym_if, ACTIONS(418), 1, - anon_sym_DQUOTE, - STATE(150), 1, - aux_sym_string_lit_repeat1, - ACTIONS(414), 2, - aux_sym_string_lit_token1, - sym_escape_sequence, - [5953] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(365), 1, - anon_sym_if, - ACTIONS(369), 1, - anon_sym_QMARK, + sym_ellipsis, ACTIONS(420), 1, - anon_sym_RBRACK, - STATE(196), 1, - sym_for_cond, - [5969] = 5, - ACTIONS(3), 1, - sym_comment, - ACTIONS(365), 1, - anon_sym_if, - ACTIONS(369), 1, anon_sym_QMARK, - ACTIONS(422), 1, - anon_sym_RBRACK, - STATE(188), 1, + STATE(208), 1, sym_for_cond, - [5985] = 4, + [6128] = 6, ACTIONS(3), 1, sym_comment, - ACTIONS(408), 1, - anon_sym_COMMA, + ACTIONS(422), 1, + anon_sym_RPAREN, ACTIONS(424), 1, - anon_sym_RBRACK, - STATE(138), 1, - aux_sym_tuple_repeat1, - [5998] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(408), 1, anon_sym_COMMA, ACTIONS(426), 1, - anon_sym_RBRACK, - STATE(138), 1, - aux_sym_tuple_repeat1, - [6011] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(365), 1, - anon_sym_if, + sym_ellipsis, ACTIONS(428), 1, - anon_sym_RBRACE, - STATE(201), 1, - sym_for_cond, - [6024] = 4, + anon_sym_QMARK, + STATE(165), 1, + aux_sym_tuple_repeat1, + [6147] = 3, ACTIONS(3), 1, sym_comment, ACTIONS(430), 1, - anon_sym_RBRACE, - ACTIONS(432), 1, - anon_sym_COMMA, - STATE(171), 1, - aux_sym_object_repeat1, - [6037] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(352), 1, anon_sym_QMARK, - ACTIONS(434), 2, + ACTIONS(315), 4, anon_sym_RBRACE, anon_sym_RBRACK, - [6048] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(432), 1, - anon_sym_COMMA, - ACTIONS(436), 1, - anon_sym_RBRACE, - STATE(162), 1, - aux_sym_object_repeat1, - [6061] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(438), 3, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - [6070] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(432), 1, - anon_sym_COMMA, - ACTIONS(440), 1, - anon_sym_RBRACE, - STATE(171), 1, - aux_sym_object_repeat1, - [6083] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, - ACTIONS(442), 2, - anon_sym_RBRACE, - anon_sym_COMMA, - [6094] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(444), 3, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - [6103] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(365), 1, anon_sym_if, - ACTIONS(446), 1, + sym_ellipsis, + [6160] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(435), 1, + anon_sym_DOLLAR_LBRACE, + ACTIONS(433), 4, + sym__template_char, + sym_escape_sequence, + anon_sym_DQUOTE, + anon_sym_DOLLAR_LBRACE_TILDE, + [6173] = 6, + ACTIONS(3), 1, + sym_comment, + ACTIONS(416), 1, + anon_sym_if, + ACTIONS(420), 1, + anon_sym_QMARK, + ACTIONS(437), 1, anon_sym_RBRACE, - STATE(189), 1, + ACTIONS(439), 1, + sym_ellipsis, + STATE(212), 1, sym_for_cond, - [6116] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, - ACTIONS(448), 2, - anon_sym_EQ, - anon_sym_COLON, - [6127] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(450), 1, - anon_sym_RBRACE, - ACTIONS(452), 1, - anon_sym_COMMA, - STATE(171), 1, - aux_sym_object_repeat1, - [6140] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(455), 3, - ts_builtin_sym_end, - anon_sym_RBRACE, - sym_identifier, - [6149] = 4, - ACTIONS(3), 1, - sym_comment, - ACTIONS(432), 1, - anon_sym_COMMA, - ACTIONS(457), 1, - anon_sym_RBRACE, - STATE(166), 1, - aux_sym_object_repeat1, - [6162] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, - ACTIONS(459), 1, - anon_sym_RBRACK, - [6172] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(461), 1, - sym_identifier, - ACTIONS(463), 1, - anon_sym_STAR, - [6182] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, - ACTIONS(465), 1, - anon_sym_COLON, [6192] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(352), 1, + ACTIONS(428), 1, anon_sym_QMARK, - ACTIONS(467), 1, + ACTIONS(392), 4, anon_sym_RPAREN, - [6202] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(450), 2, - anon_sym_RBRACE, anon_sym_COMMA, - [6210] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, - ACTIONS(469), 1, - anon_sym_EQ_GT, - [6220] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, - ACTIONS(471), 1, anon_sym_RBRACK, - [6230] = 3, + sym_ellipsis, + [6205] = 5, ACTIONS(3), 1, sym_comment, - ACTIONS(352), 1, + ACTIONS(416), 1, + anon_sym_if, + ACTIONS(420), 1, anon_sym_QMARK, - ACTIONS(473), 1, + ACTIONS(441), 1, + anon_sym_RBRACK, + STATE(204), 1, + sym_for_cond, + [6221] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(443), 1, + anon_sym_COMMA, + ACTIONS(445), 1, + anon_sym_RBRACK, + STATE(166), 1, + aux_sym_tuple_repeat1, + [6237] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(447), 3, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + [6249] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(416), 1, + anon_sym_if, + ACTIONS(420), 1, + anon_sym_QMARK, + ACTIONS(449), 1, + anon_sym_RBRACK, + STATE(197), 1, + sym_for_cond, + [6265] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(443), 1, + anon_sym_COMMA, + ACTIONS(451), 1, + anon_sym_RBRACK, + STATE(178), 1, + aux_sym_tuple_repeat1, + [6281] = 5, + ACTIONS(3), 1, + sym_comment, + ACTIONS(69), 1, + anon_sym_RPAREN, + ACTIONS(453), 1, + anon_sym_COMMA, + ACTIONS(455), 1, + sym_ellipsis, + STATE(147), 1, + aux_sym_tuple_repeat1, + [6297] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(443), 1, + anon_sym_COMMA, + ACTIONS(457), 1, + anon_sym_RBRACK, + STATE(147), 1, + aux_sym_tuple_repeat1, + [6310] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(459), 1, + anon_sym_RBRACE, + ACTIONS(461), 1, + anon_sym_COMMA, + STATE(172), 1, + aux_sym_object_repeat1, + [6323] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(463), 3, + anon_sym_LBRACE, + sym_identifier, + anon_sym_DQUOTE, + [6332] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(416), 1, + anon_sym_if, + ACTIONS(465), 1, + anon_sym_RBRACE, + STATE(209), 1, + sym_for_cond, + [6345] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(416), 1, + anon_sym_if, + ACTIONS(467), 1, + anon_sym_RBRACE, + STATE(215), 1, + sym_for_cond, + [6358] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(469), 3, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + [6367] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(461), 1, + anon_sym_COMMA, + ACTIONS(471), 1, + anon_sym_RBRACE, + STATE(175), 1, + aux_sym_object_repeat1, + [6380] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(473), 2, + anon_sym_EQ, anon_sym_COLON, - [6240] = 3, + [6391] = 4, ACTIONS(3), 1, sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, + ACTIONS(461), 1, + anon_sym_COMMA, ACTIONS(475), 1, - anon_sym_COLON, - [6250] = 3, + anon_sym_RBRACE, + STATE(175), 1, + aux_sym_object_repeat1, + [6404] = 4, ACTIONS(3), 1, sym_comment, ACTIONS(477), 1, - anon_sym_COMMA, - ACTIONS(479), 1, - anon_sym_in, - [6260] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, - ACTIONS(481), 1, - anon_sym_EQ_GT, - [6270] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(483), 1, - sym_identifier, - ACTIONS(485), 1, - anon_sym_STAR, - [6280] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, - ACTIONS(487), 1, - anon_sym_RPAREN, - [6290] = 3, - ACTIONS(3), 1, - sym_comment, - ACTIONS(352), 1, - anon_sym_QMARK, - ACTIONS(489), 1, - anon_sym_COLON, - [6300] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(491), 1, - anon_sym_RBRACK, - [6307] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(493), 1, anon_sym_RBRACE, - [6314] = 2, + ACTIONS(479), 1, + anon_sym_COMMA, + STATE(175), 1, + aux_sym_object_repeat1, + [6417] = 3, ACTIONS(3), 1, sym_comment, - ACTIONS(483), 1, - sym_identifier, - [6321] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(495), 1, - anon_sym_RPAREN, - [6328] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(497), 1, - anon_sym_RPAREN, - [6335] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(499), 1, - anon_sym_in, - [6342] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(501), 1, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(482), 2, + anon_sym_RBRACE, anon_sym_RBRACK, - [6349] = 2, + [6428] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(461), 1, + anon_sym_COMMA, + ACTIONS(484), 1, + anon_sym_RBRACE, + STATE(174), 1, + aux_sym_object_repeat1, + [6441] = 4, + ACTIONS(3), 1, + sym_comment, + ACTIONS(443), 1, + anon_sym_COMMA, + ACTIONS(486), 1, + anon_sym_RBRACK, + STATE(147), 1, + aux_sym_tuple_repeat1, + [6454] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(488), 3, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + [6463] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(490), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [6474] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(492), 3, + ts_builtin_sym_end, + anon_sym_RBRACE, + sym_identifier, + [6483] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(494), 1, + sym_identifier, + ACTIONS(496), 1, + anon_sym_STAR, + [6493] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(498), 1, + anon_sym_RBRACK, + [6503] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(500), 1, + anon_sym_EQ_GT, + [6513] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(502), 1, + anon_sym_COLON, + [6523] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(504), 1, + anon_sym_COLON, + [6533] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(506), 1, + anon_sym_COLON, + [6543] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(508), 1, + anon_sym_COMMA, + ACTIONS(510), 1, + anon_sym_in, + [6553] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(512), 1, + anon_sym_RPAREN, + [6563] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(514), 1, + anon_sym_RBRACK, + [6573] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(516), 1, + anon_sym_EQ_GT, + [6583] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(477), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [6591] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(518), 1, + anon_sym_COLON, + [6601] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(428), 1, + anon_sym_QMARK, + ACTIONS(520), 1, + anon_sym_RPAREN, + [6611] = 3, + ACTIONS(3), 1, + sym_comment, + ACTIONS(522), 1, + sym_identifier, + ACTIONS(524), 1, + anon_sym_STAR, + [6621] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(526), 1, + sym_identifier, + [6628] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(528), 1, + anon_sym_RBRACK, + [6635] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(522), 1, + sym_identifier, + [6642] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(530), 1, + anon_sym_RPAREN, + [6649] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(532), 1, + sym_identifier, + [6656] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(534), 1, + anon_sym_RBRACK, + [6663] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(536), 1, + anon_sym_RBRACK, + [6670] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(69), 1, + anon_sym_RPAREN, + [6677] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(538), 1, + anon_sym_RBRACK, + [6684] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(540), 1, + anon_sym_in, + [6691] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(494), 1, + sym_identifier, + [6698] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(542), 1, + anon_sym_RPAREN, + [6705] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(465), 1, + anon_sym_RBRACE, + [6712] = 2, + ACTIONS(3), 1, + sym_comment, + ACTIONS(544), 1, + anon_sym_RBRACE, + [6719] = 2, ACTIONS(3), 1, sym_comment, ACTIONS(65), 1, anon_sym_RPAREN, - [6356] = 2, + [6726] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(503), 1, - anon_sym_RBRACK, - [6363] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(89), 1, - anon_sym_RPAREN, - [6370] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(505), 1, + ACTIONS(546), 1, anon_sym_RBRACE, - [6377] = 2, + [6733] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(507), 1, - anon_sym_RBRACK, - [6384] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(428), 1, + ACTIONS(467), 1, anon_sym_RBRACE, - [6391] = 2, + [6740] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(509), 1, + ACTIONS(369), 1, anon_sym_RBRACE, - [6398] = 2, + [6747] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(511), 1, - sym_identifier, - [6405] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(338), 1, - anon_sym_RBRACE, - [6412] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(446), 1, - anon_sym_RBRACE, - [6419] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(513), 1, - sym_identifier, - [6426] = 2, - ACTIONS(3), 1, - sym_comment, - ACTIONS(515), 1, + ACTIONS(548), 1, ts_builtin_sym_end, - [6433] = 2, + [6754] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(461), 1, - sym_identifier, - [6440] = 2, + ACTIONS(550), 1, + anon_sym_RBRACE, + [6761] = 2, ACTIONS(3), 1, sym_comment, - ACTIONS(517), 1, + ACTIONS(552), 1, ts_builtin_sym_end, }; static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(2)] = 0, - [SMALL_STATE(3)] = 78, - [SMALL_STATE(4)] = 156, - [SMALL_STATE(5)] = 231, - [SMALL_STATE(6)] = 294, - [SMALL_STATE(7)] = 369, - [SMALL_STATE(8)] = 441, - [SMALL_STATE(9)] = 513, - [SMALL_STATE(10)] = 582, - [SMALL_STATE(11)] = 625, - [SMALL_STATE(12)] = 668, - [SMALL_STATE(13)] = 737, - [SMALL_STATE(14)] = 806, - [SMALL_STATE(15)] = 875, - [SMALL_STATE(16)] = 944, - [SMALL_STATE(17)] = 987, - [SMALL_STATE(18)] = 1053, - [SMALL_STATE(19)] = 1119, - [SMALL_STATE(20)] = 1159, - [SMALL_STATE(21)] = 1225, - [SMALL_STATE(22)] = 1291, - [SMALL_STATE(23)] = 1331, - [SMALL_STATE(24)] = 1397, - [SMALL_STATE(25)] = 1463, - [SMALL_STATE(26)] = 1503, - [SMALL_STATE(27)] = 1569, - [SMALL_STATE(28)] = 1605, - [SMALL_STATE(29)] = 1671, - [SMALL_STATE(30)] = 1737, - [SMALL_STATE(31)] = 1803, - [SMALL_STATE(32)] = 1869, - [SMALL_STATE(33)] = 1935, - [SMALL_STATE(34)] = 2001, - [SMALL_STATE(35)] = 2067, - [SMALL_STATE(36)] = 2133, - [SMALL_STATE(37)] = 2199, - [SMALL_STATE(38)] = 2265, - [SMALL_STATE(39)] = 2331, - [SMALL_STATE(40)] = 2397, - [SMALL_STATE(41)] = 2433, - [SMALL_STATE(42)] = 2499, - [SMALL_STATE(43)] = 2536, - [SMALL_STATE(44)] = 2570, - [SMALL_STATE(45)] = 2604, - [SMALL_STATE(46)] = 2638, - [SMALL_STATE(47)] = 2672, - [SMALL_STATE(48)] = 2706, - [SMALL_STATE(49)] = 2740, - [SMALL_STATE(50)] = 2774, - [SMALL_STATE(51)] = 2808, - [SMALL_STATE(52)] = 2842, - [SMALL_STATE(53)] = 2876, - [SMALL_STATE(54)] = 2910, - [SMALL_STATE(55)] = 2944, - [SMALL_STATE(56)] = 2978, - [SMALL_STATE(57)] = 3012, - [SMALL_STATE(58)] = 3046, - [SMALL_STATE(59)] = 3080, - [SMALL_STATE(60)] = 3114, - [SMALL_STATE(61)] = 3148, - [SMALL_STATE(62)] = 3182, - [SMALL_STATE(63)] = 3216, - [SMALL_STATE(64)] = 3250, - [SMALL_STATE(65)] = 3284, - [SMALL_STATE(66)] = 3318, - [SMALL_STATE(67)] = 3373, - [SMALL_STATE(68)] = 3410, - [SMALL_STATE(69)] = 3447, - [SMALL_STATE(70)] = 3484, - [SMALL_STATE(71)] = 3518, - [SMALL_STATE(72)] = 3552, - [SMALL_STATE(73)] = 3586, - [SMALL_STATE(74)] = 3637, - [SMALL_STATE(75)] = 3688, - [SMALL_STATE(76)] = 3739, - [SMALL_STATE(77)] = 3790, - [SMALL_STATE(78)] = 3841, - [SMALL_STATE(79)] = 3892, - [SMALL_STATE(80)] = 3943, - [SMALL_STATE(81)] = 3994, - [SMALL_STATE(82)] = 4045, - [SMALL_STATE(83)] = 4076, - [SMALL_STATE(84)] = 4127, - [SMALL_STATE(85)] = 4178, - [SMALL_STATE(86)] = 4229, - [SMALL_STATE(87)] = 4280, - [SMALL_STATE(88)] = 4331, - [SMALL_STATE(89)] = 4359, - [SMALL_STATE(90)] = 4387, - [SMALL_STATE(91)] = 4415, - [SMALL_STATE(92)] = 4443, - [SMALL_STATE(93)] = 4471, - [SMALL_STATE(94)] = 4499, - [SMALL_STATE(95)] = 4527, - [SMALL_STATE(96)] = 4555, - [SMALL_STATE(97)] = 4583, - [SMALL_STATE(98)] = 4611, - [SMALL_STATE(99)] = 4639, - [SMALL_STATE(100)] = 4667, - [SMALL_STATE(101)] = 4695, - [SMALL_STATE(102)] = 4723, - [SMALL_STATE(103)] = 4751, - [SMALL_STATE(104)] = 4779, - [SMALL_STATE(105)] = 4807, - [SMALL_STATE(106)] = 4835, - [SMALL_STATE(107)] = 4863, - [SMALL_STATE(108)] = 4891, - [SMALL_STATE(109)] = 4919, - [SMALL_STATE(110)] = 4947, - [SMALL_STATE(111)] = 4975, - [SMALL_STATE(112)] = 5003, - [SMALL_STATE(113)] = 5031, - [SMALL_STATE(114)] = 5064, - [SMALL_STATE(115)] = 5098, - [SMALL_STATE(116)] = 5132, - [SMALL_STATE(117)] = 5166, - [SMALL_STATE(118)] = 5200, - [SMALL_STATE(119)] = 5234, - [SMALL_STATE(120)] = 5268, - [SMALL_STATE(121)] = 5302, - [SMALL_STATE(122)] = 5328, - [SMALL_STATE(123)] = 5354, - [SMALL_STATE(124)] = 5380, - [SMALL_STATE(125)] = 5406, - [SMALL_STATE(126)] = 5432, - [SMALL_STATE(127)] = 5458, - [SMALL_STATE(128)] = 5484, - [SMALL_STATE(129)] = 5503, - [SMALL_STATE(130)] = 5522, - [SMALL_STATE(131)] = 5543, - [SMALL_STATE(132)] = 5562, - [SMALL_STATE(133)] = 5581, - [SMALL_STATE(134)] = 5601, - [SMALL_STATE(135)] = 5617, - [SMALL_STATE(136)] = 5635, - [SMALL_STATE(137)] = 5651, - [SMALL_STATE(138)] = 5669, - [SMALL_STATE(139)] = 5684, - [SMALL_STATE(140)] = 5697, - [SMALL_STATE(141)] = 5708, - [SMALL_STATE(142)] = 5719, - [SMALL_STATE(143)] = 5738, - [SMALL_STATE(144)] = 5751, - [SMALL_STATE(145)] = 5770, - [SMALL_STATE(146)] = 5787, - [SMALL_STATE(147)] = 5806, - [SMALL_STATE(148)] = 5823, - [SMALL_STATE(149)] = 5839, - [SMALL_STATE(150)] = 5851, - [SMALL_STATE(151)] = 5865, - [SMALL_STATE(152)] = 5879, - [SMALL_STATE(153)] = 5893, - [SMALL_STATE(154)] = 5909, - [SMALL_STATE(155)] = 5923, - [SMALL_STATE(156)] = 5939, - [SMALL_STATE(157)] = 5953, - [SMALL_STATE(158)] = 5969, - [SMALL_STATE(159)] = 5985, - [SMALL_STATE(160)] = 5998, - [SMALL_STATE(161)] = 6011, - [SMALL_STATE(162)] = 6024, - [SMALL_STATE(163)] = 6037, - [SMALL_STATE(164)] = 6048, - [SMALL_STATE(165)] = 6061, - [SMALL_STATE(166)] = 6070, - [SMALL_STATE(167)] = 6083, - [SMALL_STATE(168)] = 6094, - [SMALL_STATE(169)] = 6103, - [SMALL_STATE(170)] = 6116, - [SMALL_STATE(171)] = 6127, - [SMALL_STATE(172)] = 6140, - [SMALL_STATE(173)] = 6149, - [SMALL_STATE(174)] = 6162, - [SMALL_STATE(175)] = 6172, - [SMALL_STATE(176)] = 6182, - [SMALL_STATE(177)] = 6192, - [SMALL_STATE(178)] = 6202, - [SMALL_STATE(179)] = 6210, - [SMALL_STATE(180)] = 6220, - [SMALL_STATE(181)] = 6230, - [SMALL_STATE(182)] = 6240, - [SMALL_STATE(183)] = 6250, - [SMALL_STATE(184)] = 6260, - [SMALL_STATE(185)] = 6270, - [SMALL_STATE(186)] = 6280, - [SMALL_STATE(187)] = 6290, - [SMALL_STATE(188)] = 6300, - [SMALL_STATE(189)] = 6307, - [SMALL_STATE(190)] = 6314, - [SMALL_STATE(191)] = 6321, - [SMALL_STATE(192)] = 6328, - [SMALL_STATE(193)] = 6335, - [SMALL_STATE(194)] = 6342, - [SMALL_STATE(195)] = 6349, - [SMALL_STATE(196)] = 6356, - [SMALL_STATE(197)] = 6363, - [SMALL_STATE(198)] = 6370, - [SMALL_STATE(199)] = 6377, - [SMALL_STATE(200)] = 6384, - [SMALL_STATE(201)] = 6391, - [SMALL_STATE(202)] = 6398, - [SMALL_STATE(203)] = 6405, - [SMALL_STATE(204)] = 6412, - [SMALL_STATE(205)] = 6419, - [SMALL_STATE(206)] = 6426, - [SMALL_STATE(207)] = 6433, - [SMALL_STATE(208)] = 6440, + [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)] = 1650, + [SMALL_STATE(26)] = 1719, + [SMALL_STATE(27)] = 1788, + [SMALL_STATE(28)] = 1857, + [SMALL_STATE(29)] = 1926, + [SMALL_STATE(30)] = 1995, + [SMALL_STATE(31)] = 2038, + [SMALL_STATE(32)] = 2107, + [SMALL_STATE(33)] = 2150, + [SMALL_STATE(34)] = 2219, + [SMALL_STATE(35)] = 2288, + [SMALL_STATE(36)] = 2357, + [SMALL_STATE(37)] = 2400, + [SMALL_STATE(38)] = 2436, + [SMALL_STATE(39)] = 2476, + [SMALL_STATE(40)] = 2512, + [SMALL_STATE(41)] = 2552, + [SMALL_STATE(42)] = 2592, + [SMALL_STATE(43)] = 2629, + [SMALL_STATE(44)] = 2663, + [SMALL_STATE(45)] = 2697, + [SMALL_STATE(46)] = 2731, + [SMALL_STATE(47)] = 2765, + [SMALL_STATE(48)] = 2799, + [SMALL_STATE(49)] = 2833, + [SMALL_STATE(50)] = 2867, + [SMALL_STATE(51)] = 2901, + [SMALL_STATE(52)] = 2935, + [SMALL_STATE(53)] = 2969, + [SMALL_STATE(54)] = 3003, + [SMALL_STATE(55)] = 3037, + [SMALL_STATE(56)] = 3071, + [SMALL_STATE(57)] = 3105, + [SMALL_STATE(58)] = 3139, + [SMALL_STATE(59)] = 3173, + [SMALL_STATE(60)] = 3207, + [SMALL_STATE(61)] = 3241, + [SMALL_STATE(62)] = 3275, + [SMALL_STATE(63)] = 3309, + [SMALL_STATE(64)] = 3343, + [SMALL_STATE(65)] = 3377, + [SMALL_STATE(66)] = 3411, + [SMALL_STATE(67)] = 3445, + [SMALL_STATE(68)] = 3500, + [SMALL_STATE(69)] = 3537, + [SMALL_STATE(70)] = 3574, + [SMALL_STATE(71)] = 3611, + [SMALL_STATE(72)] = 3665, + [SMALL_STATE(73)] = 3719, + [SMALL_STATE(74)] = 3773, + [SMALL_STATE(75)] = 3827, + [SMALL_STATE(76)] = 3881, + [SMALL_STATE(77)] = 3915, + [SMALL_STATE(78)] = 3969, + [SMALL_STATE(79)] = 4023, + [SMALL_STATE(80)] = 4077, + [SMALL_STATE(81)] = 4111, + [SMALL_STATE(82)] = 4165, + [SMALL_STATE(83)] = 4219, + [SMALL_STATE(84)] = 4273, + [SMALL_STATE(85)] = 4327, + [SMALL_STATE(86)] = 4381, + [SMALL_STATE(87)] = 4435, + [SMALL_STATE(88)] = 4469, + [SMALL_STATE(89)] = 4500, + [SMALL_STATE(90)] = 4528, + [SMALL_STATE(91)] = 4556, + [SMALL_STATE(92)] = 4584, + [SMALL_STATE(93)] = 4612, + [SMALL_STATE(94)] = 4640, + [SMALL_STATE(95)] = 4668, + [SMALL_STATE(96)] = 4696, + [SMALL_STATE(97)] = 4724, + [SMALL_STATE(98)] = 4752, + [SMALL_STATE(99)] = 4780, + [SMALL_STATE(100)] = 4808, + [SMALL_STATE(101)] = 4836, + [SMALL_STATE(102)] = 4864, + [SMALL_STATE(103)] = 4892, + [SMALL_STATE(104)] = 4920, + [SMALL_STATE(105)] = 4948, + [SMALL_STATE(106)] = 4976, + [SMALL_STATE(107)] = 5004, + [SMALL_STATE(108)] = 5032, + [SMALL_STATE(109)] = 5060, + [SMALL_STATE(110)] = 5088, + [SMALL_STATE(111)] = 5116, + [SMALL_STATE(112)] = 5144, + [SMALL_STATE(113)] = 5172, + [SMALL_STATE(114)] = 5200, + [SMALL_STATE(115)] = 5228, + [SMALL_STATE(116)] = 5261, + [SMALL_STATE(117)] = 5295, + [SMALL_STATE(118)] = 5329, + [SMALL_STATE(119)] = 5363, + [SMALL_STATE(120)] = 5397, + [SMALL_STATE(121)] = 5431, + [SMALL_STATE(122)] = 5465, + [SMALL_STATE(123)] = 5499, + [SMALL_STATE(124)] = 5525, + [SMALL_STATE(125)] = 5551, + [SMALL_STATE(126)] = 5577, + [SMALL_STATE(127)] = 5603, + [SMALL_STATE(128)] = 5629, + [SMALL_STATE(129)] = 5655, + [SMALL_STATE(130)] = 5681, + [SMALL_STATE(131)] = 5700, + [SMALL_STATE(132)] = 5721, + [SMALL_STATE(133)] = 5740, + [SMALL_STATE(134)] = 5759, + [SMALL_STATE(135)] = 5778, + [SMALL_STATE(136)] = 5799, + [SMALL_STATE(137)] = 5822, + [SMALL_STATE(138)] = 5843, + [SMALL_STATE(139)] = 5864, + [SMALL_STATE(140)] = 5885, + [SMALL_STATE(141)] = 5906, + [SMALL_STATE(142)] = 5924, + [SMALL_STATE(143)] = 5944, + [SMALL_STATE(144)] = 5960, + [SMALL_STATE(145)] = 5980, + [SMALL_STATE(146)] = 5996, + [SMALL_STATE(147)] = 6014, + [SMALL_STATE(148)] = 6029, + [SMALL_STATE(149)] = 6044, + [SMALL_STATE(150)] = 6055, + [SMALL_STATE(151)] = 6066, + [SMALL_STATE(152)] = 6081, + [SMALL_STATE(153)] = 6094, + [SMALL_STATE(154)] = 6109, + [SMALL_STATE(155)] = 6128, + [SMALL_STATE(156)] = 6147, + [SMALL_STATE(157)] = 6160, + [SMALL_STATE(158)] = 6173, + [SMALL_STATE(159)] = 6192, + [SMALL_STATE(160)] = 6205, + [SMALL_STATE(161)] = 6221, + [SMALL_STATE(162)] = 6237, + [SMALL_STATE(163)] = 6249, + [SMALL_STATE(164)] = 6265, + [SMALL_STATE(165)] = 6281, + [SMALL_STATE(166)] = 6297, + [SMALL_STATE(167)] = 6310, + [SMALL_STATE(168)] = 6323, + [SMALL_STATE(169)] = 6332, + [SMALL_STATE(170)] = 6345, + [SMALL_STATE(171)] = 6358, + [SMALL_STATE(172)] = 6367, + [SMALL_STATE(173)] = 6380, + [SMALL_STATE(174)] = 6391, + [SMALL_STATE(175)] = 6404, + [SMALL_STATE(176)] = 6417, + [SMALL_STATE(177)] = 6428, + [SMALL_STATE(178)] = 6441, + [SMALL_STATE(179)] = 6454, + [SMALL_STATE(180)] = 6463, + [SMALL_STATE(181)] = 6474, + [SMALL_STATE(182)] = 6483, + [SMALL_STATE(183)] = 6493, + [SMALL_STATE(184)] = 6503, + [SMALL_STATE(185)] = 6513, + [SMALL_STATE(186)] = 6523, + [SMALL_STATE(187)] = 6533, + [SMALL_STATE(188)] = 6543, + [SMALL_STATE(189)] = 6553, + [SMALL_STATE(190)] = 6563, + [SMALL_STATE(191)] = 6573, + [SMALL_STATE(192)] = 6583, + [SMALL_STATE(193)] = 6591, + [SMALL_STATE(194)] = 6601, + [SMALL_STATE(195)] = 6611, + [SMALL_STATE(196)] = 6621, + [SMALL_STATE(197)] = 6628, + [SMALL_STATE(198)] = 6635, + [SMALL_STATE(199)] = 6642, + [SMALL_STATE(200)] = 6649, + [SMALL_STATE(201)] = 6656, + [SMALL_STATE(202)] = 6663, + [SMALL_STATE(203)] = 6670, + [SMALL_STATE(204)] = 6677, + [SMALL_STATE(205)] = 6684, + [SMALL_STATE(206)] = 6691, + [SMALL_STATE(207)] = 6698, + [SMALL_STATE(208)] = 6705, + [SMALL_STATE(209)] = 6712, + [SMALL_STATE(210)] = 6719, + [SMALL_STATE(211)] = 6726, + [SMALL_STATE(212)] = 6733, + [SMALL_STATE(213)] = 6740, + [SMALL_STATE(214)] = 6747, + [SMALL_STATE(215)] = 6754, + [SMALL_STATE(216)] = 6761, }; 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(133), - [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), - [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(113), - [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), - [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), - [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(152), - [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(46), - [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(45), - [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(202), - [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(80), - [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(136), + [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), + [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(115), + [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(53), + [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(56), + [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(200), + [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), + [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(140), + [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(42), - [33] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), - [35] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expression, 1), - [37] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expression, 1), - [39] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), - [41] = {.entry = {.count = 1, .reusable = false}}, SHIFT(185), - [43] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [33] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), + [35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), + [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(195), [45] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), - [47] = {.entry = {.count = 1, .reusable = false}}, SHIFT(78), - [49] = {.entry = {.count = 1, .reusable = false}}, SHIFT(76), - [51] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), - [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [49] = {.entry = {.count = 1, .reusable = false}}, SHIFT(77), + [51] = {.entry = {.count = 1, .reusable = false}}, SHIFT(73), + [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), [55] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), - [57] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), - [59] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), - [61] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), - [63] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), - [65] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_arguments, 2), - [67] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_full_splat, 4), - [69] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_full_splat, 4), - [71] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 4), SHIFT(23), - [74] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 4), SHIFT(190), - [77] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_full_splat, 3), - [79] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_full_splat, 3), - [81] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 3), SHIFT(23), - [84] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 3), SHIFT(190), - [87] = {.entry = {.count = 1, .reusable = true}}, SHIFT(199), - [89] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_arguments, 3), - [91] = {.entry = {.count = 1, .reusable = true}}, SHIFT(194), - [93] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_full_splat_repeat1, 2), - [95] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_full_splat_repeat1, 2), - [97] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(23), - [100] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(190), - [103] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), - [105] = {.entry = {.count = 1, .reusable = false}}, SHIFT(82), - [107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), - [109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), - [111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(151), - [113] = {.entry = {.count = 1, .reusable = false}}, SHIFT(104), - [115] = {.entry = {.count = 1, .reusable = false}}, SHIFT(105), - [117] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), - [119] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), - [121] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attr_splat, 2), - [123] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attr_splat, 2), - [125] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 2), SHIFT(190), - [128] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_attr_splat_repeat1, 2), - [130] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_attr_splat_repeat1, 2), - [132] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_attr_splat_repeat1, 2), SHIFT_REPEAT(190), - [135] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attr_splat, 3), - [137] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attr_splat, 3), - [139] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 3), SHIFT(190), - [142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 2), - [144] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_lit, 2), - [146] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 3), - [148] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_lit, 3), + [57] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), + [59] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [61] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), + [63] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), + [65] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_arguments, 3), + [67] = {.entry = {.count = 1, .reusable = true}}, SHIFT(201), + [69] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_arguments, 2), + [71] = {.entry = {.count = 1, .reusable = true}}, SHIFT(202), + [73] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [75] = {.entry = {.count = 1, .reusable = false}}, SHIFT(88), + [77] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [79] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), + [81] = {.entry = {.count = 1, .reusable = false}}, SHIFT(92), + [83] = {.entry = {.count = 1, .reusable = false}}, SHIFT(102), + [85] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), + [87] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), + [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(25), + [98] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 3), SHIFT(198), + [101] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_full_splat_repeat1, 2), + [103] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_full_splat_repeat1, 2), + [105] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(25), + [108] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(198), + [111] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_full_splat, 4), + [113] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_full_splat, 4), + [115] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 4), SHIFT(25), + [118] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 4), SHIFT(198), + [121] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoted_template, 2), + [123] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quoted_template, 2), + [125] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_attr_splat_repeat1, 2), + [127] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_attr_splat_repeat1, 2), + [129] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_attr_splat_repeat1, 2), SHIFT_REPEAT(198), + [132] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoted_template, 3), + [134] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quoted_template, 3), + [136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attr_splat, 3), + [138] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attr_splat, 3), + [140] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 3), SHIFT(198), + [143] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attr_splat, 2), + [145] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_attr_splat, 2), + [147] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 2), SHIFT(198), [150] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable_expr, 1), [152] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable_expr, 1), [154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), - [156] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index, 3), - [158] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_index, 3), - [160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_object_expr, 7), - [162] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_object_expr, 7), - [164] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_literal_value, 1), - [166] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_literal_value, 1), - [168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bool_lit, 1), - [170] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bool_lit, 1), + [156] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_object_expr, 6), + [158] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_object_expr, 6), + [160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_splat, 1), + [162] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_splat, 1), + [164] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 2), + [166] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 2), + [168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_tuple_expr, 5), + [170] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_tuple_expr, 5), [172] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 2), [174] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object, 2), - [176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 2), - [178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 2), - [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_object, 4), - [186] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object, 4), - [188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 4, .production_id = 1), - [190] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 4, .production_id = 1), - [192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_collection_value, 1), - [194] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_collection_value, 1), - [196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 4), - [198] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 4), - [200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_tuple_expr, 5), - [202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_tuple_expr, 5), - [204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_object_expr, 6), - [206] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_object_expr, 6), - [208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_term, 1), - [210] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_term, 1), - [212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_expr, 1), - [214] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_expr, 1), - [216] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_tuple_expr, 4), - [218] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_tuple_expr, 4), - [220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 3), - [222] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 3), - [224] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_term, 3), - [226] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_term, 3), - [228] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 3, .production_id = 1), - [230] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 3, .production_id = 1), - [232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 3), - [234] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object, 3), - [236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_term, 2), - [238] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_term, 2), - [240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_splat, 1), - [242] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_splat, 1), - [244] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_object_expr, 8), - [246] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_object_expr, 8), - [248] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [250] = {.entry = {.count = 1, .reusable = false}}, SHIFT(175), - [252] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), - [254] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), - [256] = {.entry = {.count = 1, .reusable = false}}, SHIFT(81), - [258] = {.entry = {.count = 1, .reusable = false}}, SHIFT(86), - [260] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), - [262] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), - [264] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), - [266] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), - [268] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 3), SHIFT(30), - [271] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 3), SHIFT(207), - [274] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(30), - [277] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(207), - [280] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 4), SHIFT(30), - [283] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 4), SHIFT(207), - [286] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 3), SHIFT(207), - [289] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_attr_splat_repeat1, 2), SHIFT_REPEAT(207), - [292] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 2), SHIFT(207), - [295] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), - [297] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_variable_expr, 1), SHIFT(29), - [300] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_variable_expr, 1), SHIFT(29), - [303] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_operation, 3), - [305] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_operation, 3), - [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_operation, 1), - [313] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_operation, 1), - [315] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_intro, 5), - [317] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_intro, 5), - [319] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_conditional, 5), - [321] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_conditional, 5), - [323] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_conditional, 5), SHIFT(18), - [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}}, SHIFT(35), - [332] = {.entry = {.count = 1, .reusable = true}}, SHIFT(137), - [334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(147), - [336] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_body, 1), - [338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172), - [340] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_body_repeat1, 2), - [342] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_body_repeat1, 2), SHIFT_REPEAT(133), - [345] = {.entry = {.count = 1, .reusable = true}}, SHIFT(168), - [347] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), - [349] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), SHIFT_REPEAT(28), - [352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), - [354] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_arguments, 1), - [356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), - [358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(195), - [360] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_conditional, 5), SHIFT(24), - [363] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), - [365] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), - [367] = {.entry = {.count = 1, .reusable = true}}, SHIFT(169), - [369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index, 3), + [178] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_index, 3), + [180] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_object_expr, 7), + [182] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_object_expr, 7), + [184] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_term, 3), + [186] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_term, 3), + [188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_object_expr, 8), + [190] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_object_expr, 8), + [192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_tuple, 3), + [194] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_tuple, 3), + [196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_bool_lit, 1), + [198] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_bool_lit, 1), + [200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object, 4), + [202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_object, 4), + [204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_term, 2), + [206] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_term, 2), + [208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_literal_value, 1), + [210] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_literal_value, 1), + [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_template_expr, 1), + [218] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_expr, 1), + [220] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 3, .production_id = 1), + [222] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 3, .production_id = 1), + [224] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_call, 4, .production_id = 1), + [226] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_function_call, 4, .production_id = 1), + [228] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_expr, 1), + [230] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_expr, 1), + [232] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_get_attr, 2), + [234] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_get_attr, 2), + [236] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_collection_value, 1), + [238] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_collection_value, 1), + [240] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_term, 1), + [242] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_term, 1), + [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_for_tuple_expr, 4), + [250] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_tuple_expr, 4), + [252] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [254] = {.entry = {.count = 1, .reusable = false}}, SHIFT(182), + [256] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), + [258] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [260] = {.entry = {.count = 1, .reusable = false}}, SHIFT(82), + [262] = {.entry = {.count = 1, .reusable = false}}, SHIFT(72), + [264] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), + [266] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [268] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), + [270] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), + [272] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(29), + [275] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_full_splat_repeat1, 2), SHIFT_REPEAT(206), + [278] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 4), SHIFT(29), + [281] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 4), SHIFT(206), + [284] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_full_splat, 3), SHIFT(29), + [287] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_full_splat, 3), SHIFT(206), + [290] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 2), SHIFT(206), + [293] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_attr_splat, 3), SHIFT(206), + [296] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_attr_splat_repeat1, 2), SHIFT_REPEAT(206), + [299] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [301] = {.entry = {.count = 2, .reusable = false}}, REDUCE(sym_variable_expr, 1), SHIFT(21), + [304] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_variable_expr, 1), SHIFT(21), + [307] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_operation, 3), + [309] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_operation, 3), + [311] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_operation, 2), + [313] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_operation, 2), + [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(34), + [322] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_intro, 7), + [324] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_intro, 7), + [326] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_intro, 5), + [328] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_for_intro, 5), + [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(39), + [336] = {.entry = {.count = 1, .reusable = false}}, SHIFT(151), + [338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(151), + [340] = {.entry = {.count = 1, .reusable = true}}, SHIFT(139), + [342] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [344] = {.entry = {.count = 1, .reusable = true}}, SHIFT(146), + [346] = {.entry = {.count = 1, .reusable = true}}, SHIFT(144), + [348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), + [350] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138), + [352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), + [354] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_quoted_template_repeat1, 2), + [356] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_quoted_template_repeat1, 2), SHIFT_REPEAT(151), + [359] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_quoted_template_repeat1, 2), SHIFT_REPEAT(151), + [362] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_quoted_template_repeat1, 2), SHIFT_REPEAT(139), + [365] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [367] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135), + [369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(171), [371] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), - [373] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(145), - [376] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(152), - [379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), - [381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), - [383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135), - [385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(145), - [387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), - [389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(197), - [391] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3, .production_id = 1), - [393] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_string_lit_repeat1, 2), - [395] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_string_lit_repeat1, 2), SHIFT_REPEAT(150), - [398] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), - [400] = {.entry = {.count = 1, .reusable = false}}, SHIFT(95), - [402] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154), - [404] = {.entry = {.count = 1, .reusable = false}}, SHIFT(27), - [406] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156), - [408] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), - [410] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), - [412] = {.entry = {.count = 1, .reusable = false}}, SHIFT(89), - [414] = {.entry = {.count = 1, .reusable = true}}, SHIFT(150), - [416] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), - [418] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40), - [420] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), - [422] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), - [424] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), - [426] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), - [428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), - [430] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), - [432] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), - [434] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_cond, 2), - [436] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), - [438] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 5, .production_id = 1), - [440] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), - [442] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_elem, 3), - [444] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 3, .production_id = 1), - [446] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), - [448] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), - [450] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_object_repeat1, 2), - [452] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_object_repeat1, 2), SHIFT_REPEAT(12), - [455] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 4, .production_id = 1), - [457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), - [459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), - [461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), - [463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), - [465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129), - [467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), - [469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), - [471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), - [473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(131), - [475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205), - [479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), - [481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), - [483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), - [485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), - [487] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), - [489] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), - [491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), - [493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), - [495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), - [497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), - [499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), - [501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), - [503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), - [505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(165), - [507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), - [509] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), - [511] = {.entry = {.count = 1, .reusable = true}}, SHIFT(183), - [513] = {.entry = {.count = 1, .reusable = true}}, SHIFT(193), - [515] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_config_file, 1), - [517] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [373] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(142), + [376] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2), SHIFT_REPEAT(140), + [379] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_body_repeat1, 2), + [381] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_body_repeat1, 2), SHIFT_REPEAT(136), + [384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(141), + [386] = {.entry = {.count = 1, .reusable = true}}, SHIFT(142), + [388] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_body, 1), + [390] = {.entry = {.count = 1, .reusable = true}}, SHIFT(179), + [392] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), + [394] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_tuple_repeat1, 2), SHIFT_REPEAT(28), + [397] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_template_interpolation_repeat1, 2), + [399] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_template_interpolation_repeat1, 2), SHIFT_REPEAT(148), + [402] = {.entry = {.count = 1, .reusable = true}}, SHIFT(152), + [404] = {.entry = {.count = 1, .reusable = true}}, SHIFT(153), + [406] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_interpolation, 2), + [408] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_interpolation, 2), + [410] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), + [412] = {.entry = {.count = 1, .reusable = true}}, SHIFT(148), + [414] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), + [416] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [418] = {.entry = {.count = 1, .reusable = true}}, SHIFT(169), + [420] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [422] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_function_arguments, 1), + [424] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), + [426] = {.entry = {.count = 1, .reusable = true}}, SHIFT(203), + [428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [430] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym_conditional, 5), SHIFT(15), + [433] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_interpolation, 3), + [435] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_interpolation, 3), + [437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), + [439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(170), + [441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), + [443] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), + [447] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3, .production_id = 1), + [449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), + [451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), + [455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(210), + [457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), + [459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), + [461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [463] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_lit, 1), + [465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), + [467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), + [469] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 4, .production_id = 1), + [471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), + [477] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_object_repeat1, 2), + [479] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_object_repeat1, 2), SHIFT_REPEAT(13), + [482] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_cond, 2), + [484] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), + [486] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [488] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 3, .production_id = 1), + [490] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_object_elem, 3), + [492] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 5, .production_id = 1), + [494] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), + [496] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), + [498] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [500] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [502] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [504] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), + [506] = {.entry = {.count = 1, .reusable = true}}, SHIFT(133), + [508] = {.entry = {.count = 1, .reusable = true}}, SHIFT(196), + [510] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [512] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), + [514] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), + [516] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [518] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [520] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), + [522] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), + [524] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), + [526] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205), + [528] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), + [530] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), + [532] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), + [534] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [536] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), + [538] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), + [540] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [542] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), + [544] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), + [546] = {.entry = {.count = 1, .reusable = true}}, SHIFT(181), + [548] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_config_file, 1), + [550] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [552] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), }; #ifdef __cplusplus extern "C" { #endif +void *tree_sitter_hcl_external_scanner_create(void); +void tree_sitter_hcl_external_scanner_destroy(void *); +bool tree_sitter_hcl_external_scanner_scan(void *, TSLexer *, const bool *); +unsigned tree_sitter_hcl_external_scanner_serialize(void *, char *); +void tree_sitter_hcl_external_scanner_deserialize(void *, const char *, unsigned); + #ifdef _WIN32 #define extern __declspec(dllexport) #endif @@ -8577,6 +8798,15 @@ extern const TSLanguage *tree_sitter_hcl(void) { .alias_sequences = &ts_alias_sequences[0][0], .lex_modes = ts_lex_modes, .lex_fn = ts_lex, + .external_scanner = { + &ts_external_scanner_states[0][0], + ts_external_scanner_symbol_map, + tree_sitter_hcl_external_scanner_create, + tree_sitter_hcl_external_scanner_destroy, + tree_sitter_hcl_external_scanner_scan, + tree_sitter_hcl_external_scanner_serialize, + tree_sitter_hcl_external_scanner_deserialize, + }, }; return &language; } diff --git a/src/scanner.c b/src/scanner.c new file mode 100644 index 0000000..3730ba7 --- /dev/null +++ b/src/scanner.c @@ -0,0 +1,148 @@ +#include +#include + +// forward declarations + +enum TokenType { + TEMPLATE_CHAR, + TEMPLATE_CHAR_IN_INTERPOLATION, + ESCAPE_SEQUENCE +}; + +// helpers + +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 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) { + lexer->result_symbol = ESCAPE_SEQUENCE; + advance(lexer); + 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 consume_wxdigit(TSLexer *lexer) { + 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; + } +} + +// 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 '"': + 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); + default: + return advance_and_accept_template_char(lexer); + } +} + +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); + } +} + +// 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); + } + // 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); + } + return false; +} + diff --git a/test/corpus/attributes.txt b/test/corpus/attributes.txt index 6af037f..6f12059 100644 --- a/test/corpus/attributes.txt +++ b/test/corpus/attributes.txt @@ -10,10 +10,7 @@ foo = "bar" (body (attribute (identifier) - (expression - (expr_term - (literal_value - (string_lit))))))) + (expression (expr_term (template_expr (quoted_template))))))) ================== attribute with variable @@ -27,8 +24,5 @@ foo = bar (body (attribute (identifier) - (expression - (expr_term - (variable_expr - (identifier))))))) + (expression (expr_term (variable_expr (identifier))))))) diff --git a/test/corpus/blocks.txt b/test/corpus/blocks.txt index 20a6c10..9afa2a4 100644 --- a/test/corpus/blocks.txt +++ b/test/corpus/blocks.txt @@ -39,15 +39,12 @@ block_1 "strlit1" "strlit2" { (body (block (identifier) - (string_lit) - (string_lit) + (string_lit (quoted_template)) + (string_lit (quoted_template)) (body (attribute (identifier) - (expression - (expr_term - (literal_value - (string_lit))))))))) + (expression (expr_term (template_expr (quoted_template))))))))) ================== nested block diff --git a/test/corpus/collections.txt b/test/corpus/collections.txt index f6c27f4..de38c60 100644 --- a/test/corpus/collections.txt +++ b/test/corpus/collections.txt @@ -16,7 +16,7 @@ foo = [1, 2, "foo"] (tuple (expression (expr_term (literal_value (numeric_lit)))) (expression (expr_term (literal_value (numeric_lit)))) - (expression (expr_term (literal_value (string_lit))))))))))) + (expression (expr_term (template_expr (quoted_template))))))))))) ================== collection value object @@ -38,6 +38,6 @@ foo = {1: 2, "foo"="bar"} (expression (expr_term (literal_value (numeric_lit)))) (expression (expr_term (literal_value (numeric_lit))))) (object_elem - (expression (expr_term (literal_value (string_lit)))) - (expression (expr_term (literal_value (string_lit)))))))))))) + (expression (expr_term (template_expr (quoted_template)))) + (expression (expr_term (template_expr (quoted_template)))))))))))) diff --git a/test/corpus/for_expressions.txt b/test/corpus/for_expressions.txt index 039fd6e..608be04 100644 --- a/test/corpus/for_expressions.txt +++ b/test/corpus/for_expressions.txt @@ -20,8 +20,8 @@ foo = [for v in ["a", "b"]: v] (expr_term (collection_value (tuple - (expression (expr_term (literal_value (string_lit)))) - (expression (expr_term (literal_value (string_lit))))))))) + (expression (expr_term (template_expr (quoted_template)))) + (expression (expr_term (template_expr (quoted_template))))))))) (expression (expr_term (variable_expr (identifier))))))))))) ================== @@ -47,8 +47,8 @@ foo = [for i, v in ["a", "b"]: i] (expr_term (collection_value (tuple - (expression (expr_term (literal_value (string_lit)))) - (expression (expr_term (literal_value (string_lit))))))))) + (expression (expr_term (template_expr (quoted_template)))) + (expression (expr_term (template_expr (quoted_template))))))))) (expression (expr_term (variable_expr (identifier))))))))))) ================== @@ -74,9 +74,9 @@ foo = [for i, v in ["a", "b", "c"]: v if pred(i)] (expr_term (collection_value (tuple - (expression (expr_term (literal_value (string_lit)))) - (expression (expr_term (literal_value (string_lit)))) - (expression (expr_term (literal_value (string_lit))))))))) + (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 @@ -109,8 +109,8 @@ foo = {for i, v in ["a", "b"]: v => i} (expr_term (collection_value (tuple - (expression (expr_term (literal_value (string_lit)))) - (expression (expr_term (literal_value (string_lit))))))))) + (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))))))))))) @@ -137,7 +137,7 @@ foo = {for i, v in ["a", "b"]: v => i...} (expr_term (collection_value (tuple - (expression (expr_term (literal_value (string_lit)))) - (expression (expr_term (literal_value (string_lit))))))))) + (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)))))))) diff --git a/test/corpus/function_calls.txt b/test/corpus/function_calls.txt index f6303f5..cdf7833 100644 --- a/test/corpus/function_calls.txt +++ b/test/corpus/function_calls.txt @@ -10,10 +10,7 @@ foo = bar() (body (attribute (identifier) - (expression - (expr_term - (function_call - (identifier))))))) + (expression (expr_term (function_call (identifier))))))) ================== unary function call @@ -32,10 +29,7 @@ foo = bar("foo") (function_call (identifier) (function_arguments - (expression - (expr_term - (literal_value - (string_lit))))))))))) + (expression (expr_term (template_expr (quoted_template))))))))))) ================== variadic function call @@ -77,7 +71,7 @@ foo = bar( (function_call (identifier) (function_arguments - (expression (expr_term (literal_value (string_lit)))) - (expression (expr_term (literal_value (string_lit)))) - (expression (expr_term (literal_value (string_lit))))))))))) + (expression (expr_term (template_expr (quoted_template)))) + (expression (expr_term (template_expr (quoted_template)))) + (expression (expr_term (template_expr (quoted_template))))))))))) diff --git a/test/corpus/literals.txt b/test/corpus/literals.txt index d819571..27fc76f 100644 --- a/test/corpus/literals.txt +++ b/test/corpus/literals.txt @@ -125,158 +125,4 @@ foo = null (identifier) (expression (expr_term (literal_value (null_lit))))))) -================== -string literal one line -================== - -foo = "bar" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (literal_value (string_lit))))))) - -================== -string literal escaped newline -================== - -foo = "bar\nbaz" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (literal_value (string_lit (escape_sequence)))))))) - -================== -string literal escaped tab -================== - -foo = "bar\tbaz" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (literal_value (string_lit (escape_sequence)))))))) - -================== -string literal escaped " -================== - -foo = "bar\"baz" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (literal_value (string_lit (escape_sequence)))))))) - -================== -string literal escaped \ -================== - -foo = "bar\\baz" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (literal_value (string_lit (escape_sequence)))))))) - -================== -string literal escaped \uFFFF -================== - -foo = "bar\uFFFFbaz" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (literal_value (string_lit (escape_sequence)))))))) - -================== -string bad escape sequence -================== - -foo = "bar\pbaz" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (literal_value (string_lit (ERROR (UNEXPECTED 'p'))))))))) - -================== -string bad escape sequence 2 -================== - -foo = "bar\uZZ" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (literal_value (string_lit (ERROR (UNEXPECTED 'Z'))))))))) - -================== -string literal multi line error -================== - -foo = " -bar" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (literal_value (string_lit (ERROR (UNEXPECTED 'b'))))))))) - -================== -string literal unescaped tab -================== - -foo = "foo bar" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (literal_value (string_lit (ERROR (UNEXPECTED 'b'))))))))) - -================== -string literal unescaped backslash -================== - -foo = "foo\bar" - ---- - -(config_file - (body - (attribute - (identifier) - (expression (expr_term (literal_value (string_lit (ERROR (UNEXPECTED 'b'))))))))) diff --git a/test/corpus/strings.txt b/test/corpus/strings.txt new file mode 100644 index 0000000..2bd0710 --- /dev/null +++ b/test/corpus/strings.txt @@ -0,0 +1,288 @@ +================== +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 '\'))))))))) + +================== +string literal multi line error +================== + +foo = " +bar" + +--- + +(config_file + (body + (attribute + (identifier) + (expression (expr_term (template_expr (quoted_template (ERROR (UNEXPECTED 'b'))))))))) + +================== +string literal unescaped tab +================== + +foo = "foo bar" + +--- + +(config_file + (body + (attribute + (identifier) + (expression (expr_term (template_expr (quoted_template (ERROR (UNEXPECTED 'b'))))))))) + +================== +string literal unescaped backslash +================== + +foo = "foo\bar" + +--- + +(config_file + (body + (attribute + (identifier) + (expression (expr_term (template_expr (quoted_template (ERROR (UNEXPECTED '\'))))))))) + +================== +string literal escaped backslash at end +================== + +foo = "foo\\" + +--- + +(config_file + (body + (attribute + (identifier) + (expression (expr_term (template_expr (quoted_template (escape_sequence)))))))) + + +================== +string literal escaped template interpolation +================== + +foo = "$${foo.bar}" + +--- + +(config_file + (body + (attribute + (identifier) + (expression (expr_term (template_expr (quoted_template (escape_sequence)))))))) + +================== +string literal template chars but no template 1 +================== + +foo = "$$$" + +--- + +(config_file + (body + (attribute + (identifier) + (expression (expr_term (template_expr (quoted_template))))))) + +================== +string literal template chars but no template 2 +================== + +foo = "100%" + +--- + +(config_file + (body + (attribute + (identifier) + (expression (expr_term (template_expr (quoted_template))))))) + +================== +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)))))))) + +================== +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)))))))) + +================== +string literal template chars but no template 5 +================== + +foo = "$$" + +--- + +(config_file + (body + (attribute + (identifier) + (expression (expr_term (template_expr (quoted_template))))))) + +================== +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)))))))) + +================== +string literal escaped template +================== + +foo = "$${ var.bar }" + +--- + +(config_file + (body + (attribute + (identifier) + (expression (expr_term (template_expr (quoted_template (escape_sequence)))))))) diff --git a/test/corpus/templates.txt b/test/corpus/templates.txt new file mode 100644 index 0000000..787e37e --- /dev/null +++ b/test/corpus/templates.txt @@ -0,0 +1,13 @@ +================== +quoted template expression +================== + +foo = "${ var.bar }" + +--- + +(config_file + (body + (attribute + (identifier) + (expression (expr_term (template_expr (quoted_template (template_interpolation))))))))