diff --git a/src/flattening/flatten.rs b/src/flattening/flatten.rs index 25312be..d71842d 100644 --- a/src/flattening/flatten.rs +++ b/src/flattening/flatten.rs @@ -1154,18 +1154,30 @@ impl<'l, 'errs> FlatteningContext<'l, 'errs> { fn flatten_if_statement(&mut self, cursor: &mut Cursor) { cursor.go_down(kind!("if_statement"), |cursor| { + cursor.field(field!("statement_type")); + let keyword_is_if = cursor.kind() == kw!("if"); + let position_statement_keyword = cursor.span(); cursor.field(field!("condition")); let (condition, condition_is_generative) = self.flatten_expr(cursor); + match(keyword_is_if, condition_is_generative){ + (true, false) => { + self.errors.warn(position_statement_keyword, "Used 'if' in a non generative context, use 'when' instead"); + }, + (false, true) => { + self.errors.error(position_statement_keyword, "Used 'when' in a generative context, use 'if' instead"); + }, + (_, _) => () + } - let if_id = self.instructions.alloc(Instruction::IfStatement(IfStatement { + let if_id = self.instructions.alloc(Instruction::IfStatement(IfStatement { condition, - is_generative: condition_is_generative,// TODO `if` vs `when` https://github.com/pc2/sus-compiler/issues/3 + is_generative: keyword_is_if, then_start: FlatID::PLACEHOLDER, then_end_else_start: FlatID::PLACEHOLDER, else_end: FlatID::PLACEHOLDER, })); - let then_start = self.instructions.get_next_alloc_id(); + let then_start = self.instructions.get_next_alloc_id(); cursor.field(field!("then_block")); self.flatten_code(cursor); diff --git a/src/flattening/initialization.rs b/src/flattening/initialization.rs index b7fae7a..f4e96b6 100644 --- a/src/flattening/initialization.rs +++ b/src/flattening/initialization.rs @@ -81,6 +81,7 @@ impl<'linker> InitializationContext<'linker> { fn gather_ports_in_if_stmt(&mut self, cursor: &mut Cursor) { cursor.go_down_no_check(|cursor| { + cursor.field(field!("statement_type")); cursor.field(field!("condition")); cursor.field(field!("then_block")); self.gather_all_ports_in_block(cursor); diff --git a/stl/util.sus b/stl/util.sus index 3ae0092..aea479b 100644 --- a/stl/util.sus +++ b/stl/util.sus @@ -6,7 +6,7 @@ module DualPortMem #(T, int SIZE) { domain write_clk interface write : bool write, int addr, T data - if write { + when write { mem[addr] = data } @@ -48,16 +48,16 @@ module FIFO #( CrossDomain mem_to_pop mem_to_pop.in = mem - if pop { + when pop { data_valid = read_addr != write_to_pop.out - if data_valid { + when data_valid { // Add a pipelining register, because it can usually be fitted to the reg data_out = mem_to_pop.out[read_addr] read_addr = (read_addr + 1) % DEPTH } } - if push { + when push { mem[write_addr] = data_in write_addr = (write_addr + 1) % DEPTH } @@ -72,9 +72,6 @@ module FIFO #( module JoinDomains #(T1, T2, int OFFSET) { interface identity1 : T1 i1'0 -> T1 o1'0 interface identity2 : T2 i2'OFFSET -> T2 o2'OFFSET - - o1 = i1 - o2 = i2 } module Iterator { @@ -87,10 +84,10 @@ module Iterator { valid = value != current_limit - if start { + when start { current_limit = up_to value = 0 - } else if valid { + } else when valid { value = value + 1 } } @@ -107,10 +104,10 @@ module FixedSizeIterator #(int UP_TO) { last = value == UP_TO - 1 valid = value != UP_TO - if start { + when start { value = 0 } else { - if valid { + when valid { value = value + 1 } } @@ -121,7 +118,7 @@ module SlowClockGenerator #(int PERIOD) { initial cur_value = 0 - if cur_value == PERIOD-1 { + when cur_value == PERIOD-1 { cur_value = 0 } else { cur_value = cur_value + 1 @@ -142,7 +139,7 @@ module SplitAt #(T, int SIZE, int SPLIT_POINT) { module Abs { interface Abs : int a -> int o - if a < 0 { + when a < 0 { o = -a } else { o = a @@ -178,7 +175,7 @@ module PopCount #(int WIDTH) { if WIDTH <= BASE_CASE_SIZE { int[WIDTH] cvt for int I in 0..WIDTH { - if bits[I] { + when bits[I] { cvt[I] = 1 } else { cvt[I] = 0 diff --git a/test.sus b/test.sus index 9892601..784267b 100644 --- a/test.sus +++ b/test.sus @@ -52,7 +52,7 @@ module blur2 { state int prev - if !first { + when !first { blurred = data + prev } prev = data @@ -83,7 +83,7 @@ module Accumulator { initial tot = 0 int new_tot = tot + term - if done { + when done { reg total = new_tot tot = 0 } else { @@ -99,7 +99,7 @@ module blur { initial working = false state int prev - if working { + when working { reg reg reg result = prev + a // Add a pipeline stage for shits and giggles } prev = a @@ -119,19 +119,19 @@ module Unpack4 { initial st = 0 state int[3] stored_packed - if st == INITIAL { + when st == INITIAL { out_stream = packed[0] stored_packed[0] = packed[1] // Shorthand notation is possible here "stored_packed[0:2] = packed[1:3]" stored_packed[1] = packed[2] stored_packed[2] = packed[3] st = 1 - } else if st == 1 { + } else when st == 1 { out_stream = stored_packed[0] st = 2 - } else if st == 2 { + } else when st == 2 { out_stream = stored_packed[1] st = 3 - } else if st == 3 { + } else when st == 3 { out_stream = stored_packed[2] st = INITIAL // Must restore initial conditions //finish // packet is hereby finished. @@ -183,22 +183,22 @@ module test_various_assignments { //timeline (bs -> /, true) | (bs -> v, false) module first_bit_idx_6 { interface first_bit_idx_6 : bool[6] bits -> int first, bool all_zeros - if bits[0] { + when bits[0] { first = 0 all_zeros = false - } else if bits[1] { + } else when bits[1] { first = 1 all_zeros = false - } else if bits[2] { + } else when bits[2] { first = 2 all_zeros = false - } else if bits[3] { + } else when bits[3] { first = 3 all_zeros = false - } else if bits[4] { + } else when bits[4] { first = 4 all_zeros = false - } else if bits[5] { + } else when bits[5] { first = 5 all_zeros = false } else { @@ -471,11 +471,11 @@ module fizz_buzz { bool fizz = v % 3 == 0 bool buzz = v % 5 == 0 - if fizz & buzz { + when fizz & buzz { fb = FIZZ_BUZZ - } else if fizz { + } else when fizz { fb = FIZZ - } else if buzz { + } else when buzz { fb = BUZZ } else { fb = v @@ -633,13 +633,13 @@ module dual_port_mem { interface read : bool read, int rd_addr -> bool[20] rd_data - if write { + when write { mem[wr_addr] = wr_data } cross_memory cr_m cr_m.i = mem - if read { + when read { rd_data = cr_m.o[rd_addr] } } @@ -737,11 +737,11 @@ module sequenceDownFrom { valid = index != 0 ready_cr.i = !valid - if valid { + when valid { index = index - 1 } - if start_cr.o { + when start_cr.o { index = upTo_cr.o } } @@ -756,7 +756,7 @@ module sumUpTo { bool re = sdf.ready bool iter_valid, int iter_index = sdf.iter() - if iter_valid { + when iter_valid { int idx = iter_index } @@ -901,13 +901,13 @@ module run_instruction { instruction_decoder decoder decoder.from(instr) - if decoder.is_jump() : int target_addr { + when decoder.is_jump() : int target_addr { // ... } - if decoder.is_load() : int reg_to, int addr { + when decoder.is_load() : int reg_to, int addr { // ... } - if decoder.is_arith() : int reg_a, int reg_b, Operator op { + when decoder.is_arith() : int reg_a, int reg_b, Operator op { // ... } } @@ -1012,7 +1012,6 @@ module use_sized_int_add { c = sized_int_add(a, b) } - module implicit_domain_forbidden { input int bad_port @@ -1097,3 +1096,25 @@ module UseBuiltinConstants { module FailingAssert { assert #(C: 15 + 3 == 19) } + +/// Test if when seperation +module IfTesting #(int WIDTH) { + // Should be chosen based on what's most efficient for the target architecture + gen int BASE_CASE_SIZE = 5 + + interface PopCount : bool[WIDTH] bits -> int popcount + + + when WIDTH <= BASE_CASE_SIZE { + int[WIDTH] cvt + for int I in 0..WIDTH { + if bits[I] { + cvt[I] = 1 + } else if !bits[I] { + cvt[I] = 0 + } + } + reg popcount = +cvt + } else when WIDTH > BASE_CASE_SIZE { + } +} diff --git a/test.sus_errors.txt b/test.sus_errors.txt index 5f730e6..5aba15a 100644 --- a/test.sus_errors.txt +++ b/test.sus_errors.txt @@ -1,3 +1,17 @@ +Warning: Unused Variable: This variable does not affect the output ports of this module + ╭─[util.sus:73:27] + │ + 73 │ interface identity1 : T1 i1'0 -> T1 o1'0 + │ ─┬ + │ ╰── Unused Variable: This variable does not affect the output ports of this module +────╯ +Warning: Unused Variable: This variable does not affect the output ports of this module + ╭─[util.sus:74:27] + │ + 74 │ interface identity2 : T2 i2'OFFSET -> T2 o2'OFFSET + │ ─┬ + │ ╰── Unused Variable: This variable does not affect the output ports of this module +────╯ Error: 'contains_submodule_submodule' conflicts with other declarations: ╭─[test.sus:441:8] │ @@ -945,66 +959,66 @@ Warning: Unused Variable: This variable does not affect the output ports of this │ ╰──── Unused Variable: This variable does not affect the output ports of this module ─────╯ Error: While parsing 'if_statement', parser found a syntax error in a node of type 'ERROR' - ╭─[test.sus:904:23] + ╭─[test.sus:904:25] │ - 904 │ ╭─▶ if decoder.is_jump() : int target_addr { - │ │ ────────┬──────── - │ │ ╰────────── While parsing 'if_statement', parser found a syntax error in a node of type 'ERROR' + 904 │ ╭─▶ when decoder.is_jump() : int target_addr { + │ │ ────────┬──────── + │ │ ╰────────── While parsing 'if_statement', parser found a syntax error in a node of type 'ERROR' ┆ ┆ 906 │ ├─▶ } │ │ │ ╰─────────── Parent node 'if_statement' ─────╯ Error: While parsing 'if_statement', parser found a syntax error in a node of type 'ERROR' - ╭─[test.sus:907:23] + ╭─[test.sus:907:25] │ - 907 │ ╭─▶ if decoder.is_load() : int reg_to, int addr { - │ │ ───────────┬────────── - │ │ ╰──────────── While parsing 'if_statement', parser found a syntax error in a node of type 'ERROR' + 907 │ ╭─▶ when decoder.is_load() : int reg_to, int addr { + │ │ ───────────┬────────── + │ │ ╰──────────── While parsing 'if_statement', parser found a syntax error in a node of type 'ERROR' ┆ ┆ 909 │ ├─▶ } │ │ │ ╰─────────── Parent node 'if_statement' ─────╯ Error: While parsing 'if_statement', parser found a syntax error in a node of type 'ERROR' - ╭─[test.sus:910:5] + ╭─[test.sus:910:7] │ - 910 │ ╭─▶ if decoder.is_arith() : int reg_a, int reg_b, Operator op { - │ │ ─────────────────────────┬───────────────────────── - │ │ ╰─────────────────────────── While parsing 'if_statement', parser found a syntax error in a node of type 'ERROR' + 910 │ ╭─▶ when decoder.is_arith() : int reg_a, int reg_b, Operator op { + │ │ ─────────────────────────┬───────────────────────── + │ │ ╰─────────────────────────── While parsing 'if_statement', parser found a syntax error in a node of type 'ERROR' ┆ ┆ 912 │ ├─▶ } │ │ │ ╰─────────── Parent node 'if_statement' ─────╯ Error: A function called in this context may only return one result. Split this function call into a separate line instead. - ╭─[test.sus:904:5] + ╭─[test.sus:904:7] │ 893 │ interface is_jump │ ───┬─── │ ╰───── Interface 'is_jump' defined here │ - 904 │ if decoder.is_jump() : int target_addr { - │ ────────┬──────── - │ ╰────────── A function called in this context may only return one result. Split this function call into a separate line instead. + 904 │ when decoder.is_jump() : int target_addr { + │ ────────┬──────── + │ ╰────────── A function called in this context may only return one result. Split this function call into a separate line instead. ─────╯ Error: A function called in this context may only return one result. Split this function call into a separate line instead. - ╭─[test.sus:907:5] + ╭─[test.sus:907:7] │ 894 │ interface is_load │ ───┬─── │ ╰───── Interface 'is_load' defined here │ - 907 │ if decoder.is_load() : int reg_to, int addr { - │ ────────┬──────── - │ ╰────────── A function called in this context may only return one result. Split this function call into a separate line instead. + 907 │ when decoder.is_load() : int reg_to, int addr { + │ ────────┬──────── + │ ╰────────── A function called in this context may only return one result. Split this function call into a separate line instead. ─────╯ Error: No Global of the name 'op' was found. Did you forget to import it? - ╭─[test.sus:910:57] + ╭─[test.sus:910:59] │ - 910 │ if decoder.is_arith() : int reg_a, int reg_b, Operator op { - │ ─┬ - │ ╰── No Global of the name 'op' was found. Did you forget to import it? + 910 │ when decoder.is_arith() : int reg_a, int reg_b, Operator op { + │ ─┬ + │ ╰── No Global of the name 'op' was found. Did you forget to import it? ─────╯ Warning: Unused Variable: This variable does not affect the output ports of this module ╭─[test.sus:900:42] @@ -1180,87 +1194,87 @@ Warning: Unused Variable: This variable does not affect the output ports of this │ ╰──── Unused Variable: This variable does not affect the output ports of this module ─────╯ Error: When using explicit domains, no port is allowed to be declared on the implicit 'clk' domain. - ╭─[test.sus:1019:2] + ╭─[test.sus:1018:2] │ - 1017 │ input int bad_port + 1016 │ input int bad_port │ ──────┬───── │ ╰─────── A domain should be explicitly defined before this port │ - 1019 │ domain bad_domain + 1018 │ domain bad_domain │ ────────┬──────── │ ╰────────── When using explicit domains, no port is allowed to be declared on the implicit 'clk' domain. ──────╯ Warning: Unused Variable: This variable does not affect the output ports of this module - ╭─[test.sus:1017:12] + ╭─[test.sus:1016:12] │ - 1017 │ input int bad_port + 1016 │ input int bad_port │ ────┬─── │ ╰───── Unused Variable: This variable does not affect the output ports of this module ──────╯ Error: Conflicting domain declaration. Domain 'my_domain' was already declared earlier - ╭─[test.sus:1028:9] + ╭─[test.sus:1027:9] │ - 1025 │ domain my_domain + 1024 │ domain my_domain │ ────┬──── │ ╰────── Domain 'my_domain' declared here │ - 1028 │ domain my_domain + 1027 │ domain my_domain │ ────┬──── │ ╰────── Conflicting domain declaration. Domain 'my_domain' was already declared earlier ──────╯ Error: This declaration conflicts with a previous declaration in the same scope - ╭─[test.sus:1026:12] + ╭─[test.sus:1025:12] │ - 1025 │ domain my_domain + 1024 │ domain my_domain │ ────┬──── │ ╰────── Domain 'my_domain' declared here - 1026 │ input int my_domain + 1025 │ input int my_domain │ ────┬──── │ ╰────── This declaration conflicts with a previous declaration in the same scope ──────╯ Warning: Unused Variable: This variable does not affect the output ports of this module - ╭─[test.sus:1026:12] + ╭─[test.sus:1025:12] │ - 1026 │ input int my_domain + 1025 │ input int my_domain │ ────┬──── │ ╰────── Unused Variable: This variable does not affect the output ports of this module ──────╯ Error: Could not fully figure out the type of this object. type_variable_0 - ╭─[test.sus:1038:2] + ╭─[test.sus:1037:2] │ - 1038 │ make_infinite_type_help mtinf + 1037 │ make_infinite_type_help mtinf │ ───────────┬─────────── │ ╰───────────── Could not fully figure out the type of this object. type_variable_0 ──────╯ Error: Could not fully figure out the type of this object. type_variable_0 - ╭─[test.sus:1040:12] + ╭─[test.sus:1039:12] │ - 1040 │ mtinf.a = mtinf.b + 1039 │ mtinf.a = mtinf.b │ ───┬─── │ ╰───── Could not fully figure out the type of this object. type_variable_0 ──────╯ Error: Could not fully figure out the type of this object. type_variable_0[] - ╭─[test.sus:1040:2] + ╭─[test.sus:1039:2] │ - 1040 │ mtinf.a = mtinf.b + 1039 │ mtinf.a = mtinf.b │ ───┬─── │ ╰───── Could not fully figure out the type of this object. type_variable_0[] ──────╯ Error: Typing Error: connection: Creating Infinite Types is Forbidden! expects a type_variable_0[] but was given a type_variable_0 - ╭─[test.sus:1040:12] + ╭─[test.sus:1039:12] │ - 1032 │ interface make_infinite_type_help: T[3] a -> T b + 1031 │ interface make_infinite_type_help: T[3] a -> T b │ ┬ │ ╰── 'a' declared here │ - 1040 │ mtinf.a = mtinf.b + 1039 │ mtinf.a = mtinf.b │ ───┬─── │ ╰───── Typing Error: connection: Creating Infinite Types is Forbidden! expects a type_variable_0[] but was given a type_variable_0 ──────╯ Warning: Unused port 'ready' - ╭─[test.sus:1060:2] + ╭─[test.sus:1059:2] │ - 1060 │ FIFO #(DEPTH: 3, READY_SLACK: 5, T: type int) f + 1059 │ FIFO #(DEPTH: 3, READY_SLACK: 5, T: type int) f │ ──────────────────────┬────────────────────── ┬ │ ╰────────────────────────── Unused port 'ready' │ │ @@ -1273,9 +1287,9 @@ Warning: Unused port 'ready' │ ╰──── Port 'ready' declared here ──────╯ Warning: Unused port 'push' - ╭─[test.sus:1060:2] + ╭─[test.sus:1059:2] │ - 1060 │ FIFO #(DEPTH: 3, READY_SLACK: 5, T: type int) f + 1059 │ FIFO #(DEPTH: 3, READY_SLACK: 5, T: type int) f │ ──────────────────────┬────────────────────── ┬ │ ╰────────────────────────── Unused port 'push' │ │ @@ -1288,9 +1302,9 @@ Warning: Unused port 'push' │ ╰─── Port 'push' declared here ──────╯ Warning: Unused port 'data_in' - ╭─[test.sus:1060:2] + ╭─[test.sus:1059:2] │ - 1060 │ FIFO #(DEPTH: 3, READY_SLACK: 5, T: type int) f + 1059 │ FIFO #(DEPTH: 3, READY_SLACK: 5, T: type int) f │ ──────────────────────┬────────────────────── ┬ │ ╰────────────────────────── Unused port 'data_in' │ │ @@ -1303,9 +1317,9 @@ Warning: Unused port 'data_in' │ ╰───── Port 'data_in' declared here ──────╯ Warning: Unused port 'pop' - ╭─[test.sus:1060:2] + ╭─[test.sus:1059:2] │ - 1060 │ FIFO #(DEPTH: 3, READY_SLACK: 5, T: type int) f + 1059 │ FIFO #(DEPTH: 3, READY_SLACK: 5, T: type int) f │ ──────────────────────┬────────────────────── ┬ │ ╰────────────────────────── Unused port 'pop' │ │ @@ -1318,9 +1332,9 @@ Warning: Unused port 'pop' │ ╰─── Port 'pop' declared here ──────╯ Warning: Unused port 'data_valid' - ╭─[test.sus:1060:2] + ╭─[test.sus:1059:2] │ - 1060 │ FIFO #(DEPTH: 3, READY_SLACK: 5, T: type int) f + 1059 │ FIFO #(DEPTH: 3, READY_SLACK: 5, T: type int) f │ ──────────────────────┬────────────────────── ┬ │ ╰────────────────────────── Unused port 'data_valid' │ │ @@ -1333,9 +1347,9 @@ Warning: Unused port 'data_valid' │ ╰────── Port 'data_valid' declared here ──────╯ Warning: Unused port 'data_out' - ╭─[test.sus:1060:2] + ╭─[test.sus:1059:2] │ - 1060 │ FIFO #(DEPTH: 3, READY_SLACK: 5, T: type int) f + 1059 │ FIFO #(DEPTH: 3, READY_SLACK: 5, T: type int) f │ ──────────────────────┬────────────────────── ┬ │ ╰────────────────────────── Unused port 'data_out' │ │ @@ -1347,24 +1361,59 @@ Warning: Unused port 'data_out' │ ────┬─── │ ╰───── Port 'data_out' declared here ──────╯ +Warning: Used 'if' in a non generative context, use 'when' instead + ╭─[test.sus:1074:2] + │ + 1074 │ if iter_valid { + │ ─┬ + │ ╰── Used 'if' in a non generative context, use 'when' instead +──────╯ Warning: Unused Variable: This variable does not affect the output ports of this module - ╭─[test.sus:1081:10] + ╭─[test.sus:1080:10] │ - 1081 │ int[20] arr + 1080 │ int[20] arr │ ─┬─ │ ╰─── Unused Variable: This variable does not affect the output ports of this module ──────╯ Warning: Unused Variable: This variable does not affect the output ports of this module - ╭─[test.sus:1083:9] + ╭─[test.sus:1082:9] │ - 1083 │ int[5] subArr = Slice #(SIZE: 20, OUT_SIZE: 5, FROM: 3, T: type int)(arr) + 1082 │ int[5] subArr = Slice #(SIZE: 20, OUT_SIZE: 5, FROM: 3, T: type int)(arr) │ ───┬── │ ╰──── Unused Variable: This variable does not affect the output ports of this module ──────╯ Error: Assertion failed - ╭─[test.sus:1098:14] + ╭─[test.sus:1097:14] │ - 1098 │ assert #(C: 15 + 3 == 19) + 1097 │ assert #(C: 15 + 3 == 19) │ ──────┬───── │ ╰─────── Assertion failed ──────╯ +Error: Used 'when' in a generative context, use 'if' instead + ╭─[test.sus:1108:9] + │ + 1108 │ when WIDTH <= BASE_CASE_SIZE { + │ ──┬─ + │ ╰─── Used 'when' in a generative context, use 'if' instead +──────╯ +Warning: Used 'if' in a non generative context, use 'when' instead + ╭─[test.sus:1111:25] + │ + 1111 │ if bits[I] { + │ ─┬ + │ ╰── Used 'if' in a non generative context, use 'when' instead +──────╯ +Warning: Used 'if' in a non generative context, use 'when' instead + ╭─[test.sus:1113:32] + │ + 1113 │ } else if !bits[I] { + │ ─┬ + │ ╰── Used 'if' in a non generative context, use 'when' instead +──────╯ +Error: Used 'when' in a generative context, use 'if' instead + ╭─[test.sus:1118:16] + │ + 1118 │ } else when WIDTH > BASE_CASE_SIZE { + │ ──┬─ + │ ╰─── Used 'when' in a generative context, use 'if' instead +──────╯ diff --git a/test.sus_output.txt b/test.sus_output.txt index b6e895e..01e581f 100644 --- a/test.sus_output.txt +++ b/test.sus_output.txt @@ -121,6 +121,7 @@ TREE SITTER module! use_Iterator TREE SITTER module! UseSlice TREE SITTER module! UseBuiltinConstants TREE SITTER module! FailingAssert +TREE SITTER module! IfTesting Typechecking LatencyOffset Typechecking CrossDomain Typechecking IntToBits @@ -234,6 +235,7 @@ Typechecking use_Iterator Typechecking UseSlice Typechecking UseBuiltinConstants Typechecking FailingAssert +Typechecking IfTesting Instantiating IntToBits Concrete Typechecking IntToBits Latency Counting IntToBits diff --git a/tree-sitter-sus/grammar.js b/tree-sitter-sus/grammar.js index c4bd82c..601d27b 100644 --- a/tree-sitter-sus/grammar.js +++ b/tree-sitter-sus/grammar.js @@ -76,7 +76,7 @@ module.exports = grammar({ 'const', field('const_type', $._type) ), - + // Template Declaration template_declaration_arguments: $ => seq( @@ -99,9 +99,9 @@ module.exports = grammar({ newlineSepSeq($, choice( $.block, $.decl_assign_statement, - - // Decls should only allow a single declaration, and cannot contain expressions, - // but we allow some tolerance in the grammar here, so we can generate better errors after. + + // Decls should only allow a single declaration, and cannot contain expressions, + // but we allow some tolerance in the grammar here, so we can generate better errors after. $.assign_left_side, $.if_statement, $.for_statement, @@ -130,7 +130,10 @@ module.exports = grammar({ ), if_statement: $ => seq( - 'if', + field('statement_type',choice( + 'when', + 'if' + )), field('condition', $._expression), //optional(field('conditional_bindings', $.interface_ports)), field('then_block', $.block), @@ -158,7 +161,7 @@ module.exports = grammar({ 'domain', field('name', $.identifier), ), - + interface_statement: $ => seq( 'interface',//field('interface_kind', choice('action', 'query', 'trigger')), field('name', $.identifier), @@ -268,7 +271,7 @@ module.exports = grammar({ '.', field('name', $.identifier) )), - + parenthesis_expression_list: $ => seq( '(', sepSeq($._expression, $._comma), @@ -299,7 +302,7 @@ module.exports = grammar({ // Template optional(field('template_args', $.template_args)) ), - + template_args: $ => seq( '#(', commaSepSeq($, $.template_arg), @@ -345,3 +348,4 @@ module.exports = grammar({ $.multi_line_comment ] }); + diff --git a/tree-sitter-sus/src/grammar.json b/tree-sitter-sus/src/grammar.json index 3f2a7d3..10103a0 100644 --- a/tree-sitter-sus/src/grammar.json +++ b/tree-sitter-sus/src/grammar.json @@ -552,8 +552,21 @@ "type": "SEQ", "members": [ { - "type": "STRING", - "value": "if" + "type": "FIELD", + "name": "statement_type", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "when" + }, + { + "type": "STRING", + "value": "if" + } + ] + } }, { "type": "FIELD", diff --git a/tree-sitter-sus/src/node-types.json b/tree-sitter-sus/src/node-types.json index e936ca8..e052e4b 100644 --- a/tree-sitter-sus/src/node-types.json +++ b/tree-sitter-sus/src/node-types.json @@ -893,6 +893,20 @@ } ] }, + "statement_type": { + "multiple": false, + "required": true, + "types": [ + { + "type": "if", + "named": false + }, + { + "type": "when", + "named": false + } + ] + }, "then_block": { "multiple": false, "required": true, @@ -1576,6 +1590,10 @@ "type": "type", "named": false }, + { + "type": "when", + "named": false + }, { "type": "{", "named": false diff --git a/tree-sitter-sus/src/parser.c b/tree-sitter-sus/src/parser.c index 75f8ed8..4dd498b 100644 --- a/tree-sitter-sus/src/parser.c +++ b/tree-sitter-sus/src/parser.c @@ -7,11 +7,11 @@ #define LANGUAGE_VERSION 14 #define STATE_COUNT 230 #define LARGE_STATE_COUNT 2 -#define SYMBOL_COUNT 99 +#define SYMBOL_COUNT 100 #define ALIAS_COUNT 0 -#define TOKEN_COUNT 54 +#define TOKEN_COUNT 55 #define EXTERNAL_TOKEN_COUNT 0 -#define FIELD_COUNT 36 +#define FIELD_COUNT 37 #define MAX_ALIAS_SEQUENCE_LENGTH 7 #define PRODUCTION_ID_COUNT 51 @@ -29,91 +29,92 @@ enum ts_symbol_identifiers { anon_sym_EQ = 11, anon_sym_reg = 12, anon_sym_initial = 13, - anon_sym_if = 14, - anon_sym_else = 15, - anon_sym_for = 16, - anon_sym_in = 17, - anon_sym_DOT_DOT = 18, - anon_sym_domain = 19, - anon_sym_interface = 20, - anon_sym_COLON = 21, - anon_sym_DASH_GT = 22, - anon_sym_input = 23, - anon_sym_output = 24, - anon_sym_state = 25, - anon_sym_gen = 26, - anon_sym_SQUOTE = 27, - anon_sym_PLUS = 28, - anon_sym_DASH = 29, - anon_sym_STAR = 30, - anon_sym_BANG = 31, - anon_sym_PIPE = 32, - anon_sym_AMP = 33, - anon_sym_CARET = 34, - anon_sym_EQ_EQ = 35, - anon_sym_BANG_EQ = 36, - anon_sym_LT = 37, - anon_sym_LT_EQ = 38, - anon_sym_GT = 39, - anon_sym_GT_EQ = 40, - anon_sym_SLASH = 41, - anon_sym_PERCENT = 42, - anon_sym_DOT = 43, - anon_sym_LPAREN = 44, - anon_sym_LBRACK = 45, - anon_sym_RBRACK = 46, - anon_sym_COLON_COLON = 47, - anon_sym_type = 48, - sym_number = 49, - anon_sym_COMMA = 50, - anon_sym_LF = 51, - sym_single_line_comment = 52, - sym_multi_line_comment = 53, - sym_source_file = 54, - sym_global_object = 55, - sym_const_and_type = 56, - sym_template_declaration_arguments = 57, - sym_template_declaration_type = 58, - sym_block = 59, - sym_decl_assign_statement = 60, - sym_assign_left_side = 61, - sym_assign_to = 62, - sym_write_modifiers = 63, - sym_if_statement = 64, - sym_for_statement = 65, - sym_domain_statement = 66, - sym_interface_statement = 67, - sym_interface_ports = 68, - sym__interface_ports_output = 69, - sym_declaration_list = 70, - sym_declaration = 71, - sym_latency_specifier = 72, - sym__type = 73, - sym_array_type = 74, - sym__expression = 75, - sym_unary_op = 76, - sym_binary_op = 77, - sym_array_op = 78, - sym_func_call = 79, - sym_field_access = 80, - sym_parenthesis_expression_list = 81, - sym_parenthesis_expression = 82, - sym_array_bracket_expression = 83, - sym_namespace_list = 84, - sym_template_global = 85, - sym_template_args = 86, - sym_template_arg = 87, - sym__comma = 88, - aux_sym__linebreak = 89, - aux_sym_source_file_repeat1 = 90, - aux_sym_template_declaration_arguments_repeat1 = 91, - aux_sym_block_repeat1 = 92, - aux_sym_assign_left_side_repeat1 = 93, - aux_sym_write_modifiers_repeat1 = 94, - aux_sym_declaration_list_repeat1 = 95, - aux_sym_parenthesis_expression_list_repeat1 = 96, - aux_sym_namespace_list_repeat1 = 97, - aux_sym_template_args_repeat1 = 98, + anon_sym_when = 14, + anon_sym_if = 15, + anon_sym_else = 16, + anon_sym_for = 17, + anon_sym_in = 18, + anon_sym_DOT_DOT = 19, + anon_sym_domain = 20, + anon_sym_interface = 21, + anon_sym_COLON = 22, + anon_sym_DASH_GT = 23, + anon_sym_input = 24, + anon_sym_output = 25, + anon_sym_state = 26, + anon_sym_gen = 27, + anon_sym_SQUOTE = 28, + anon_sym_PLUS = 29, + anon_sym_DASH = 30, + anon_sym_STAR = 31, + anon_sym_BANG = 32, + anon_sym_PIPE = 33, + anon_sym_AMP = 34, + anon_sym_CARET = 35, + anon_sym_EQ_EQ = 36, + anon_sym_BANG_EQ = 37, + anon_sym_LT = 38, + anon_sym_LT_EQ = 39, + anon_sym_GT = 40, + anon_sym_GT_EQ = 41, + anon_sym_SLASH = 42, + anon_sym_PERCENT = 43, + anon_sym_DOT = 44, + anon_sym_LPAREN = 45, + anon_sym_LBRACK = 46, + anon_sym_RBRACK = 47, + anon_sym_COLON_COLON = 48, + anon_sym_type = 49, + sym_number = 50, + anon_sym_COMMA = 51, + anon_sym_LF = 52, + sym_single_line_comment = 53, + sym_multi_line_comment = 54, + sym_source_file = 55, + sym_global_object = 56, + sym_const_and_type = 57, + sym_template_declaration_arguments = 58, + sym_template_declaration_type = 59, + sym_block = 60, + sym_decl_assign_statement = 61, + sym_assign_left_side = 62, + sym_assign_to = 63, + sym_write_modifiers = 64, + sym_if_statement = 65, + sym_for_statement = 66, + sym_domain_statement = 67, + sym_interface_statement = 68, + sym_interface_ports = 69, + sym__interface_ports_output = 70, + sym_declaration_list = 71, + sym_declaration = 72, + sym_latency_specifier = 73, + sym__type = 74, + sym_array_type = 75, + sym__expression = 76, + sym_unary_op = 77, + sym_binary_op = 78, + sym_array_op = 79, + sym_func_call = 80, + sym_field_access = 81, + sym_parenthesis_expression_list = 82, + sym_parenthesis_expression = 83, + sym_array_bracket_expression = 84, + sym_namespace_list = 85, + sym_template_global = 86, + sym_template_args = 87, + sym_template_arg = 88, + sym__comma = 89, + aux_sym__linebreak = 90, + aux_sym_source_file_repeat1 = 91, + aux_sym_template_declaration_arguments_repeat1 = 92, + aux_sym_block_repeat1 = 93, + aux_sym_assign_left_side_repeat1 = 94, + aux_sym_write_modifiers_repeat1 = 95, + aux_sym_declaration_list_repeat1 = 96, + aux_sym_parenthesis_expression_list_repeat1 = 97, + aux_sym_namespace_list_repeat1 = 98, + aux_sym_template_args_repeat1 = 99, }; static const char * const ts_symbol_names[] = { @@ -131,6 +132,7 @@ static const char * const ts_symbol_names[] = { [anon_sym_EQ] = "=", [anon_sym_reg] = "reg", [anon_sym_initial] = "initial", + [anon_sym_when] = "when", [anon_sym_if] = "if", [anon_sym_else] = "else", [anon_sym_for] = "for", @@ -233,6 +235,7 @@ static const TSSymbol ts_symbol_map[] = { [anon_sym_EQ] = anon_sym_EQ, [anon_sym_reg] = anon_sym_reg, [anon_sym_initial] = anon_sym_initial, + [anon_sym_when] = anon_sym_when, [anon_sym_if] = anon_sym_if, [anon_sym_else] = anon_sym_else, [anon_sym_for] = anon_sym_for, @@ -377,6 +380,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = false, }, + [anon_sym_when] = { + .visible = true, + .named = false, + }, [anon_sym_if] = { .visible = true, .named = false, @@ -748,14 +755,15 @@ enum ts_field_identifiers { field_operator = 26, field_outputs = 27, field_right = 28, - field_template_args = 29, - field_template_declaration_arguments = 30, - field_then_block = 31, - field_to = 32, - field_type = 33, - field_type_arg = 34, - field_val_arg = 35, - field_write_modifiers = 36, + field_statement_type = 29, + field_template_args = 30, + field_template_declaration_arguments = 31, + field_then_block = 32, + field_to = 33, + field_type = 34, + field_type_arg = 35, + field_val_arg = 36, + field_write_modifiers = 37, }; static const char * const ts_field_names[] = { @@ -788,6 +796,7 @@ static const char * const ts_field_names[] = { [field_operator] = "operator", [field_outputs] = "outputs", [field_right] = "right", + [field_statement_type] = "statement_type", [field_template_args] = "template_args", [field_template_declaration_arguments] = "template_declaration_arguments", [field_then_block] = "then_block", @@ -827,28 +836,28 @@ static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { [26] = {.index = 51, .length = 3}, [27] = {.index = 54, .length = 3}, [28] = {.index = 57, .length = 1}, - [29] = {.index = 58, .length = 2}, - [30] = {.index = 60, .length = 2}, - [31] = {.index = 62, .length = 2}, - [32] = {.index = 64, .length = 3}, - [33] = {.index = 67, .length = 2}, - [34] = {.index = 69, .length = 2}, - [35] = {.index = 71, .length = 4}, - [36] = {.index = 75, .length = 4}, - [37] = {.index = 79, .length = 4}, - [38] = {.index = 83, .length = 2}, - [39] = {.index = 85, .length = 1}, - [40] = {.index = 86, .length = 1}, - [41] = {.index = 87, .length = 2}, - [42] = {.index = 89, .length = 5}, - [43] = {.index = 94, .length = 3}, - [44] = {.index = 97, .length = 1}, - [45] = {.index = 98, .length = 2}, - [46] = {.index = 100, .length = 1}, - [47] = {.index = 101, .length = 1}, - [48] = {.index = 102, .length = 1}, - [49] = {.index = 103, .length = 2}, - [50] = {.index = 105, .length = 4}, + [29] = {.index = 58, .length = 3}, + [30] = {.index = 61, .length = 2}, + [31] = {.index = 63, .length = 2}, + [32] = {.index = 65, .length = 3}, + [33] = {.index = 68, .length = 2}, + [34] = {.index = 70, .length = 2}, + [35] = {.index = 72, .length = 4}, + [36] = {.index = 76, .length = 4}, + [37] = {.index = 80, .length = 4}, + [38] = {.index = 84, .length = 2}, + [39] = {.index = 86, .length = 1}, + [40] = {.index = 87, .length = 1}, + [41] = {.index = 88, .length = 2}, + [42] = {.index = 90, .length = 5}, + [43] = {.index = 95, .length = 4}, + [44] = {.index = 99, .length = 1}, + [45] = {.index = 100, .length = 2}, + [46] = {.index = 102, .length = 1}, + [47] = {.index = 103, .length = 1}, + [48] = {.index = 104, .length = 1}, + [49] = {.index = 105, .length = 2}, + [50] = {.index = 107, .length = 4}, }; static const TSFieldMapEntry ts_field_map_entries[] = { @@ -940,73 +949,75 @@ static const TSFieldMapEntry ts_field_map_entries[] = { {field_item, 2}, [58] = {field_condition, 1}, + {field_statement_type, 0}, {field_then_block, 2}, - [60] = + [61] = {field_interface_ports, 2}, {field_name, 1}, - [62] = + [63] = {field_assign_left, 0}, {field_assign_value, 2}, - [64] = + [65] = {field_left, 0}, {field_operator, 1}, {field_right, 2}, - [67] = + [68] = {field_left, 0}, {field_name, 2}, - [69] = + [70] = {field_name, 0}, {field_val_arg, 2}, - [71] = + [72] = {field_declaration_modifiers, 1}, {field_io_port_modifiers, 0}, {field_name, 3}, {field_type, 2}, - [75] = + [76] = {field_io_port_modifiers, 0}, {field_latency_specifier, 3}, {field_name, 2}, {field_type, 1}, - [79] = + [80] = {field_declaration_modifiers, 0}, {field_latency_specifier, 3}, {field_name, 2}, {field_type, 1}, - [83] = + [84] = {field_item, 2}, {field_item, 3, .inherited = true}, - [85] = - {field_outputs, 1, .inherited = true}, [86] = - {field_inputs, 1}, + {field_outputs, 1, .inherited = true}, [87] = + {field_inputs, 1}, + [88] = {field_name, 0}, {field_type_arg, 3}, - [89] = + [90] = {field_declaration_modifiers, 1}, {field_io_port_modifiers, 0}, {field_latency_specifier, 4}, {field_name, 3}, {field_type, 2}, - [94] = + [95] = {field_condition, 1}, {field_else_block, 4}, + {field_statement_type, 0}, {field_then_block, 2}, - [97] = + [99] = {field_outputs, 1}, - [98] = + [100] = {field_inputs, 1}, {field_outputs, 2, .inherited = true}, - [100] = + [102] = {field_outputs, 2, .inherited = true}, - [101] = + [103] = {field_inputs, 2}, - [102] = + [104] = {field_outputs, 2}, - [103] = + [105] = {field_inputs, 2}, {field_outputs, 3, .inherited = true}, - [105] = + [107] = {field_block, 6}, {field_for_decl, 1}, {field_from, 3}, @@ -1120,11 +1131,11 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [95] = 95, [96] = 96, [97] = 97, - [98] = 98, + [98] = 25, [99] = 99, [100] = 100, [101] = 101, - [102] = 38, + [102] = 102, [103] = 103, [104] = 104, [105] = 105, @@ -1710,264 +1721,277 @@ static bool ts_lex_keywords(TSLexer *lexer, TSStateId state) { 'r', 10, 's', 11, 't', 12, + 'w', 13, ); if (lookahead == '\t' || lookahead == '\r' || lookahead == ' ') SKIP(0); END_STATE(); case 1: - if (lookahead == '_') ADVANCE(13); + if (lookahead == '_') ADVANCE(14); END_STATE(); case 2: - if (lookahead == 'o') ADVANCE(14); + if (lookahead == 'o') ADVANCE(15); END_STATE(); case 3: - if (lookahead == 'o') ADVANCE(15); + if (lookahead == 'o') ADVANCE(16); END_STATE(); case 4: - if (lookahead == 'l') ADVANCE(16); - if (lookahead == 'x') ADVANCE(17); + if (lookahead == 'l') ADVANCE(17); + if (lookahead == 'x') ADVANCE(18); END_STATE(); case 5: - if (lookahead == 'o') ADVANCE(18); + if (lookahead == 'o') ADVANCE(19); END_STATE(); case 6: - if (lookahead == 'e') ADVANCE(19); + if (lookahead == 'e') ADVANCE(20); END_STATE(); case 7: - if (lookahead == 'f') ADVANCE(20); - if (lookahead == 'n') ADVANCE(21); + if (lookahead == 'f') ADVANCE(21); + if (lookahead == 'n') ADVANCE(22); END_STATE(); case 8: - if (lookahead == 'o') ADVANCE(22); + if (lookahead == 'o') ADVANCE(23); END_STATE(); case 9: - if (lookahead == 'u') ADVANCE(23); + if (lookahead == 'u') ADVANCE(24); END_STATE(); case 10: - if (lookahead == 'e') ADVANCE(24); + if (lookahead == 'e') ADVANCE(25); END_STATE(); case 11: - if (lookahead == 't') ADVANCE(25); + if (lookahead == 't') ADVANCE(26); END_STATE(); case 12: - if (lookahead == 'y') ADVANCE(26); + if (lookahead == 'y') ADVANCE(27); END_STATE(); case 13: - if (lookahead == 'b') ADVANCE(27); + if (lookahead == 'h') ADVANCE(28); END_STATE(); case 14: - if (lookahead == 'n') ADVANCE(28); + if (lookahead == 'b') ADVANCE(29); END_STATE(); case 15: - if (lookahead == 'm') ADVANCE(29); + if (lookahead == 'n') ADVANCE(30); END_STATE(); case 16: - if (lookahead == 's') ADVANCE(30); + if (lookahead == 'm') ADVANCE(31); END_STATE(); case 17: - if (lookahead == 't') ADVANCE(31); + if (lookahead == 's') ADVANCE(32); END_STATE(); case 18: - if (lookahead == 'r') ADVANCE(32); + if (lookahead == 't') ADVANCE(33); END_STATE(); case 19: - if (lookahead == 'n') ADVANCE(33); + if (lookahead == 'r') ADVANCE(34); END_STATE(); case 20: - ACCEPT_TOKEN(anon_sym_if); + if (lookahead == 'n') ADVANCE(35); END_STATE(); case 21: - ACCEPT_TOKEN(anon_sym_in); - if (lookahead == 'i') ADVANCE(34); - if (lookahead == 'p') ADVANCE(35); - if (lookahead == 't') ADVANCE(36); + ACCEPT_TOKEN(anon_sym_if); END_STATE(); case 22: - if (lookahead == 'd') ADVANCE(37); + ACCEPT_TOKEN(anon_sym_in); + if (lookahead == 'i') ADVANCE(36); + if (lookahead == 'p') ADVANCE(37); + if (lookahead == 't') ADVANCE(38); END_STATE(); case 23: - if (lookahead == 't') ADVANCE(38); + if (lookahead == 'd') ADVANCE(39); END_STATE(); case 24: - if (lookahead == 'g') ADVANCE(39); + if (lookahead == 't') ADVANCE(40); END_STATE(); case 25: - if (lookahead == 'a') ADVANCE(40); - if (lookahead == 'r') ADVANCE(41); + if (lookahead == 'g') ADVANCE(41); END_STATE(); case 26: - if (lookahead == 'p') ADVANCE(42); + if (lookahead == 'a') ADVANCE(42); + if (lookahead == 'r') ADVANCE(43); END_STATE(); case 27: - if (lookahead == 'u') ADVANCE(43); + if (lookahead == 'p') ADVANCE(44); END_STATE(); case 28: - if (lookahead == 's') ADVANCE(44); + if (lookahead == 'e') ADVANCE(45); END_STATE(); case 29: - if (lookahead == 'a') ADVANCE(45); + if (lookahead == 'u') ADVANCE(46); END_STATE(); case 30: - if (lookahead == 'e') ADVANCE(46); + if (lookahead == 's') ADVANCE(47); END_STATE(); case 31: - if (lookahead == 'e') ADVANCE(47); + if (lookahead == 'a') ADVANCE(48); END_STATE(); case 32: - ACCEPT_TOKEN(anon_sym_for); + if (lookahead == 'e') ADVANCE(49); END_STATE(); case 33: - ACCEPT_TOKEN(anon_sym_gen); + if (lookahead == 'e') ADVANCE(50); END_STATE(); case 34: - if (lookahead == 't') ADVANCE(48); + ACCEPT_TOKEN(anon_sym_for); END_STATE(); case 35: - if (lookahead == 'u') ADVANCE(49); + ACCEPT_TOKEN(anon_sym_gen); END_STATE(); case 36: - if (lookahead == 'e') ADVANCE(50); + if (lookahead == 't') ADVANCE(51); END_STATE(); case 37: - if (lookahead == 'u') ADVANCE(51); + if (lookahead == 'u') ADVANCE(52); END_STATE(); case 38: - if (lookahead == 'p') ADVANCE(52); + if (lookahead == 'e') ADVANCE(53); END_STATE(); case 39: - ACCEPT_TOKEN(anon_sym_reg); + if (lookahead == 'u') ADVANCE(54); END_STATE(); case 40: - if (lookahead == 't') ADVANCE(53); + if (lookahead == 'p') ADVANCE(55); END_STATE(); case 41: - if (lookahead == 'u') ADVANCE(54); + ACCEPT_TOKEN(anon_sym_reg); END_STATE(); case 42: - if (lookahead == 'e') ADVANCE(55); + if (lookahead == 't') ADVANCE(56); END_STATE(); case 43: - if (lookahead == 'i') ADVANCE(56); + if (lookahead == 'u') ADVANCE(57); END_STATE(); case 44: - if (lookahead == 't') ADVANCE(57); + if (lookahead == 'e') ADVANCE(58); END_STATE(); case 45: - if (lookahead == 'i') ADVANCE(58); + if (lookahead == 'n') ADVANCE(59); END_STATE(); case 46: - ACCEPT_TOKEN(anon_sym_else); + if (lookahead == 'i') ADVANCE(60); END_STATE(); case 47: - if (lookahead == 'r') ADVANCE(59); + if (lookahead == 't') ADVANCE(61); END_STATE(); case 48: - if (lookahead == 'i') ADVANCE(60); + if (lookahead == 'i') ADVANCE(62); END_STATE(); case 49: - if (lookahead == 't') ADVANCE(61); + ACCEPT_TOKEN(anon_sym_else); END_STATE(); case 50: - if (lookahead == 'r') ADVANCE(62); + if (lookahead == 'r') ADVANCE(63); END_STATE(); case 51: - if (lookahead == 'l') ADVANCE(63); + if (lookahead == 'i') ADVANCE(64); END_STATE(); case 52: - if (lookahead == 'u') ADVANCE(64); + if (lookahead == 't') ADVANCE(65); END_STATE(); case 53: - if (lookahead == 'e') ADVANCE(65); + if (lookahead == 'r') ADVANCE(66); END_STATE(); case 54: - if (lookahead == 'c') ADVANCE(66); + if (lookahead == 'l') ADVANCE(67); END_STATE(); case 55: - ACCEPT_TOKEN(anon_sym_type); + if (lookahead == 'u') ADVANCE(68); END_STATE(); case 56: - if (lookahead == 'l') ADVANCE(67); + if (lookahead == 'e') ADVANCE(69); END_STATE(); case 57: - ACCEPT_TOKEN(anon_sym_const); + if (lookahead == 'c') ADVANCE(70); END_STATE(); case 58: - if (lookahead == 'n') ADVANCE(68); + ACCEPT_TOKEN(anon_sym_type); END_STATE(); case 59: - if (lookahead == 'n') ADVANCE(69); + ACCEPT_TOKEN(anon_sym_when); END_STATE(); case 60: - if (lookahead == 'a') ADVANCE(70); + if (lookahead == 'l') ADVANCE(71); END_STATE(); case 61: - ACCEPT_TOKEN(anon_sym_input); + ACCEPT_TOKEN(anon_sym_const); END_STATE(); case 62: - if (lookahead == 'f') ADVANCE(71); + if (lookahead == 'n') ADVANCE(72); END_STATE(); case 63: - if (lookahead == 'e') ADVANCE(72); + if (lookahead == 'n') ADVANCE(73); END_STATE(); case 64: - if (lookahead == 't') ADVANCE(73); + if (lookahead == 'a') ADVANCE(74); END_STATE(); case 65: - ACCEPT_TOKEN(anon_sym_state); + ACCEPT_TOKEN(anon_sym_input); END_STATE(); case 66: - if (lookahead == 't') ADVANCE(74); + if (lookahead == 'f') ADVANCE(75); END_STATE(); case 67: - if (lookahead == 't') ADVANCE(75); + if (lookahead == 'e') ADVANCE(76); END_STATE(); case 68: - ACCEPT_TOKEN(anon_sym_domain); + if (lookahead == 't') ADVANCE(77); END_STATE(); case 69: - ACCEPT_TOKEN(anon_sym_extern); + ACCEPT_TOKEN(anon_sym_state); END_STATE(); case 70: - if (lookahead == 'l') ADVANCE(76); + if (lookahead == 't') ADVANCE(78); END_STATE(); case 71: - if (lookahead == 'a') ADVANCE(77); + if (lookahead == 't') ADVANCE(79); END_STATE(); case 72: - ACCEPT_TOKEN(anon_sym_module); + ACCEPT_TOKEN(anon_sym_domain); END_STATE(); case 73: - ACCEPT_TOKEN(anon_sym_output); + ACCEPT_TOKEN(anon_sym_extern); END_STATE(); case 74: - ACCEPT_TOKEN(anon_sym_struct); + if (lookahead == 'l') ADVANCE(80); END_STATE(); case 75: - if (lookahead == 'i') ADVANCE(78); + if (lookahead == 'a') ADVANCE(81); END_STATE(); case 76: - ACCEPT_TOKEN(anon_sym_initial); + ACCEPT_TOKEN(anon_sym_module); END_STATE(); case 77: - if (lookahead == 'c') ADVANCE(79); + ACCEPT_TOKEN(anon_sym_output); END_STATE(); case 78: - if (lookahead == 'n') ADVANCE(80); + ACCEPT_TOKEN(anon_sym_struct); END_STATE(); case 79: - if (lookahead == 'e') ADVANCE(81); + if (lookahead == 'i') ADVANCE(82); END_STATE(); case 80: - if (lookahead == '_') ADVANCE(82); + ACCEPT_TOKEN(anon_sym_initial); END_STATE(); case 81: - ACCEPT_TOKEN(anon_sym_interface); + if (lookahead == 'c') ADVANCE(83); END_STATE(); case 82: - if (lookahead == '_') ADVANCE(83); + if (lookahead == 'n') ADVANCE(84); END_STATE(); case 83: + if (lookahead == 'e') ADVANCE(85); + END_STATE(); + case 84: + if (lookahead == '_') ADVANCE(86); + END_STATE(); + case 85: + ACCEPT_TOKEN(anon_sym_interface); + END_STATE(); + case 86: + if (lookahead == '_') ADVANCE(87); + END_STATE(); + case 87: ACCEPT_TOKEN(anon_sym___builtin__); END_STATE(); default: @@ -2001,7 +2025,7 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [22] = {.lex_state = 2}, [23] = {.lex_state = 2}, [24] = {.lex_state = 2}, - [25] = {.lex_state = 2}, + [25] = {.lex_state = 1}, [26] = {.lex_state = 2}, [27] = {.lex_state = 2}, [28] = {.lex_state = 2}, @@ -2014,28 +2038,28 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [35] = {.lex_state = 2}, [36] = {.lex_state = 2}, [37] = {.lex_state = 2}, - [38] = {.lex_state = 1}, + [38] = {.lex_state = 2}, [39] = {.lex_state = 2}, - [40] = {.lex_state = 1}, + [40] = {.lex_state = 2}, [41] = {.lex_state = 2}, [42] = {.lex_state = 2}, [43] = {.lex_state = 2}, [44] = {.lex_state = 2}, [45] = {.lex_state = 2}, - [46] = {.lex_state = 2}, + [46] = {.lex_state = 1}, [47] = {.lex_state = 2}, [48] = {.lex_state = 2}, [49] = {.lex_state = 2}, [50] = {.lex_state = 2}, [51] = {.lex_state = 2}, [52] = {.lex_state = 2}, - [53] = {.lex_state = 1}, + [53] = {.lex_state = 2}, [54] = {.lex_state = 1}, - [55] = {.lex_state = 2}, + [55] = {.lex_state = 1}, [56] = {.lex_state = 2}, [57] = {.lex_state = 2}, [58] = {.lex_state = 2}, - [59] = {.lex_state = 2}, + [59] = {.lex_state = 1}, [60] = {.lex_state = 1}, [61] = {.lex_state = 1}, [62] = {.lex_state = 1}, @@ -2046,13 +2070,13 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [67] = {.lex_state = 1}, [68] = {.lex_state = 1}, [69] = {.lex_state = 1}, - [70] = {.lex_state = 2}, - [71] = {.lex_state = 2}, + [70] = {.lex_state = 1}, + [71] = {.lex_state = 1}, [72] = {.lex_state = 1}, - [73] = {.lex_state = 1}, - [74] = {.lex_state = 1}, + [73] = {.lex_state = 2}, + [74] = {.lex_state = 2}, [75] = {.lex_state = 1}, - [76] = {.lex_state = 1}, + [76] = {.lex_state = 2}, [77] = {.lex_state = 1}, [78] = {.lex_state = 1}, [79] = {.lex_state = 1}, @@ -2093,14 +2117,14 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [114] = {.lex_state = 1}, [115] = {.lex_state = 0}, [116] = {.lex_state = 0}, - [117] = {.lex_state = 1}, + [117] = {.lex_state = 0}, [118] = {.lex_state = 0}, [119] = {.lex_state = 0}, [120] = {.lex_state = 0}, - [121] = {.lex_state = 1}, + [121] = {.lex_state = 0}, [122] = {.lex_state = 0}, - [123] = {.lex_state = 0}, - [124] = {.lex_state = 0}, + [123] = {.lex_state = 1}, + [124] = {.lex_state = 1}, [125] = {.lex_state = 0}, [126] = {.lex_state = 0}, [127] = {.lex_state = 0}, @@ -2224,6 +2248,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_EQ] = ACTIONS(1), [anon_sym_reg] = ACTIONS(1), [anon_sym_initial] = ACTIONS(1), + [anon_sym_when] = ACTIONS(1), [anon_sym_if] = ACTIONS(1), [anon_sym_else] = ACTIONS(1), [anon_sym_for] = ACTIONS(1), @@ -2265,10 +2290,10 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [sym_multi_line_comment] = ACTIONS(3), }, [1] = { - [sym_source_file] = STATE(226), + [sym_source_file] = STATE(225), [sym_global_object] = STATE(143), - [sym_const_and_type] = STATE(225), - [aux_sym__linebreak] = STATE(92), + [sym_const_and_type] = STATE(223), + [aux_sym__linebreak] = STATE(94), [ts_builtin_sym_end] = ACTIONS(5), [anon_sym___builtin__] = ACTIONS(7), [anon_sym_extern] = ACTIONS(7), @@ -2293,8 +2318,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_reg, ACTIONS(23), 1, anon_sym_initial, - ACTIONS(25), 1, - anon_sym_if, ACTIONS(27), 1, anon_sym_for, ACTIONS(29), 1, @@ -2313,28 +2336,31 @@ static const uint16_t ts_small_parse_table[] = { aux_sym__linebreak, STATE(17), 1, sym_namespace_list, - STATE(40), 1, + STATE(46), 1, sym_write_modifiers, - STATE(52), 1, + STATE(51), 1, sym_template_global, - STATE(79), 1, + STATE(80), 1, aux_sym_write_modifiers_repeat1, - STATE(120), 1, + STATE(117), 1, sym_assign_to, - STATE(132), 1, + STATE(127), 1, sym_assign_left_side, STATE(150), 1, sym_declaration, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, + ACTIONS(25), 2, + anon_sym_when, + anon_sym_if, ACTIONS(33), 2, anon_sym_input, anon_sym_output, ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 2, + STATE(177), 2, sym__type, sym_array_type, STATE(144), 6, @@ -2352,7 +2378,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(49), 7, + STATE(50), 7, sym__expression, sym_unary_op, sym_binary_op, @@ -2360,7 +2386,7 @@ static const uint16_t ts_small_parse_table[] = { sym_func_call, sym_field_access, sym_parenthesis_expression, - [106] = 28, + [107] = 28, ACTIONS(15), 1, sym_identifier, ACTIONS(17), 1, @@ -2369,8 +2395,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_reg, ACTIONS(23), 1, anon_sym_initial, - ACTIONS(25), 1, - anon_sym_if, ACTIONS(27), 1, anon_sym_for, ACTIONS(29), 1, @@ -2389,33 +2413,36 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LF, STATE(17), 1, sym_namespace_list, - STATE(38), 1, + STATE(25), 1, aux_sym__linebreak, - STATE(40), 1, + STATE(46), 1, sym_write_modifiers, - STATE(52), 1, + STATE(51), 1, sym_template_global, - STATE(79), 1, + STATE(80), 1, aux_sym_write_modifiers_repeat1, - STATE(120), 1, + STATE(117), 1, sym_assign_to, - STATE(133), 1, + STATE(129), 1, sym_assign_left_side, STATE(150), 1, sym_declaration, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, + ACTIONS(25), 2, + anon_sym_when, + anon_sym_if, ACTIONS(33), 2, anon_sym_input, anon_sym_output, ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 2, + STATE(177), 2, sym__type, sym_array_type, - STATE(174), 6, + STATE(160), 6, sym_block, sym_decl_assign_statement, sym_if_statement, @@ -2430,7 +2457,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(49), 7, + STATE(50), 7, sym__expression, sym_unary_op, sym_binary_op, @@ -2438,7 +2465,7 @@ static const uint16_t ts_small_parse_table[] = { sym_func_call, sym_field_access, sym_parenthesis_expression, - [212] = 28, + [214] = 28, ACTIONS(15), 1, sym_identifier, ACTIONS(17), 1, @@ -2447,8 +2474,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_reg, ACTIONS(23), 1, anon_sym_initial, - ACTIONS(25), 1, - anon_sym_if, ACTIONS(27), 1, anon_sym_for, ACTIONS(29), 1, @@ -2467,15 +2492,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, STATE(17), 1, sym_namespace_list, - STATE(38), 1, + STATE(25), 1, aux_sym__linebreak, - STATE(40), 1, + STATE(46), 1, sym_write_modifiers, - STATE(52), 1, + STATE(51), 1, sym_template_global, - STATE(79), 1, + STATE(80), 1, aux_sym_write_modifiers_repeat1, - STATE(120), 1, + STATE(117), 1, sym_assign_to, STATE(150), 1, sym_declaration, @@ -2484,13 +2509,16 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, + ACTIONS(25), 2, + anon_sym_when, + anon_sym_if, ACTIONS(33), 2, anon_sym_input, anon_sym_output, ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 2, + STATE(177), 2, sym__type, sym_array_type, STATE(209), 6, @@ -2508,7 +2536,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(49), 7, + STATE(50), 7, sym__expression, sym_unary_op, sym_binary_op, @@ -2516,7 +2544,7 @@ static const uint16_t ts_small_parse_table[] = { sym_func_call, sym_field_access, sym_parenthesis_expression, - [318] = 28, + [321] = 28, ACTIONS(15), 1, sym_identifier, ACTIONS(17), 1, @@ -2525,8 +2553,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_reg, ACTIONS(23), 1, anon_sym_initial, - ACTIONS(25), 1, - anon_sym_if, ACTIONS(27), 1, anon_sym_for, ACTIONS(29), 1, @@ -2545,15 +2571,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, STATE(17), 1, sym_namespace_list, - STATE(38), 1, + STATE(25), 1, aux_sym__linebreak, - STATE(40), 1, + STATE(46), 1, sym_write_modifiers, - STATE(52), 1, + STATE(51), 1, sym_template_global, - STATE(79), 1, + STATE(80), 1, aux_sym_write_modifiers_repeat1, - STATE(120), 1, + STATE(117), 1, sym_assign_to, STATE(150), 1, sym_declaration, @@ -2562,13 +2588,16 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, + ACTIONS(25), 2, + anon_sym_when, + anon_sym_if, ACTIONS(33), 2, anon_sym_input, anon_sym_output, ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 2, + STATE(177), 2, sym__type, sym_array_type, STATE(209), 6, @@ -2586,7 +2615,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(49), 7, + STATE(50), 7, sym__expression, sym_unary_op, sym_binary_op, @@ -2594,7 +2623,7 @@ static const uint16_t ts_small_parse_table[] = { sym_func_call, sym_field_access, sym_parenthesis_expression, - [424] = 28, + [428] = 28, ACTIONS(15), 1, sym_identifier, ACTIONS(17), 1, @@ -2603,8 +2632,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_reg, ACTIONS(23), 1, anon_sym_initial, - ACTIONS(25), 1, - anon_sym_if, ACTIONS(27), 1, anon_sym_for, ACTIONS(29), 1, @@ -2623,15 +2650,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, STATE(17), 1, sym_namespace_list, - STATE(38), 1, + STATE(25), 1, aux_sym__linebreak, - STATE(40), 1, + STATE(46), 1, sym_write_modifiers, - STATE(52), 1, + STATE(51), 1, sym_template_global, - STATE(79), 1, + STATE(80), 1, aux_sym_write_modifiers_repeat1, - STATE(120), 1, + STATE(117), 1, sym_assign_to, STATE(150), 1, sym_declaration, @@ -2640,13 +2667,16 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, + ACTIONS(25), 2, + anon_sym_when, + anon_sym_if, ACTIONS(33), 2, anon_sym_input, anon_sym_output, ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 2, + STATE(177), 2, sym__type, sym_array_type, STATE(209), 6, @@ -2664,7 +2694,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(49), 7, + STATE(50), 7, sym__expression, sym_unary_op, sym_binary_op, @@ -2672,7 +2702,7 @@ static const uint16_t ts_small_parse_table[] = { sym_func_call, sym_field_access, sym_parenthesis_expression, - [530] = 28, + [535] = 28, ACTIONS(15), 1, sym_identifier, ACTIONS(17), 1, @@ -2681,8 +2711,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_reg, ACTIONS(23), 1, anon_sym_initial, - ACTIONS(25), 1, - anon_sym_if, ACTIONS(27), 1, anon_sym_for, ACTIONS(29), 1, @@ -2701,15 +2729,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, STATE(17), 1, sym_namespace_list, - STATE(38), 1, + STATE(25), 1, aux_sym__linebreak, - STATE(40), 1, + STATE(46), 1, sym_write_modifiers, - STATE(52), 1, + STATE(51), 1, sym_template_global, - STATE(79), 1, + STATE(80), 1, aux_sym_write_modifiers_repeat1, - STATE(120), 1, + STATE(117), 1, sym_assign_to, STATE(150), 1, sym_declaration, @@ -2718,13 +2746,16 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, + ACTIONS(25), 2, + anon_sym_when, + anon_sym_if, ACTIONS(33), 2, anon_sym_input, anon_sym_output, ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 2, + STATE(177), 2, sym__type, sym_array_type, STATE(209), 6, @@ -2742,7 +2773,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(49), 7, + STATE(50), 7, sym__expression, sym_unary_op, sym_binary_op, @@ -2750,7 +2781,7 @@ static const uint16_t ts_small_parse_table[] = { sym_func_call, sym_field_access, sym_parenthesis_expression, - [636] = 28, + [642] = 28, ACTIONS(15), 1, sym_identifier, ACTIONS(17), 1, @@ -2759,8 +2790,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_reg, ACTIONS(23), 1, anon_sym_initial, - ACTIONS(25), 1, - anon_sym_if, ACTIONS(27), 1, anon_sym_for, ACTIONS(29), 1, @@ -2779,15 +2808,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, STATE(17), 1, sym_namespace_list, - STATE(38), 1, + STATE(25), 1, aux_sym__linebreak, - STATE(40), 1, + STATE(46), 1, sym_write_modifiers, - STATE(52), 1, + STATE(51), 1, sym_template_global, - STATE(79), 1, + STATE(80), 1, aux_sym_write_modifiers_repeat1, - STATE(120), 1, + STATE(117), 1, sym_assign_to, STATE(150), 1, sym_declaration, @@ -2796,13 +2825,16 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, + ACTIONS(25), 2, + anon_sym_when, + anon_sym_if, ACTIONS(33), 2, anon_sym_input, anon_sym_output, ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 2, + STATE(177), 2, sym__type, sym_array_type, STATE(209), 6, @@ -2820,7 +2852,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(49), 7, + STATE(50), 7, sym__expression, sym_unary_op, sym_binary_op, @@ -2828,7 +2860,7 @@ static const uint16_t ts_small_parse_table[] = { sym_func_call, sym_field_access, sym_parenthesis_expression, - [742] = 28, + [749] = 28, ACTIONS(15), 1, sym_identifier, ACTIONS(17), 1, @@ -2837,8 +2869,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_reg, ACTIONS(23), 1, anon_sym_initial, - ACTIONS(25), 1, - anon_sym_if, ACTIONS(27), 1, anon_sym_for, ACTIONS(29), 1, @@ -2857,15 +2887,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, STATE(17), 1, sym_namespace_list, - STATE(38), 1, + STATE(25), 1, aux_sym__linebreak, - STATE(40), 1, + STATE(46), 1, sym_write_modifiers, - STATE(52), 1, + STATE(51), 1, sym_template_global, - STATE(79), 1, + STATE(80), 1, aux_sym_write_modifiers_repeat1, - STATE(120), 1, + STATE(117), 1, sym_assign_to, STATE(150), 1, sym_declaration, @@ -2874,13 +2904,16 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, + ACTIONS(25), 2, + anon_sym_when, + anon_sym_if, ACTIONS(33), 2, anon_sym_input, anon_sym_output, ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 2, + STATE(177), 2, sym__type, sym_array_type, STATE(209), 6, @@ -2898,7 +2931,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(49), 7, + STATE(50), 7, sym__expression, sym_unary_op, sym_binary_op, @@ -2906,7 +2939,7 @@ static const uint16_t ts_small_parse_table[] = { sym_func_call, sym_field_access, sym_parenthesis_expression, - [848] = 27, + [856] = 27, ACTIONS(15), 1, sym_identifier, ACTIONS(17), 1, @@ -2915,8 +2948,6 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_reg, ACTIONS(23), 1, anon_sym_initial, - ACTIONS(25), 1, - anon_sym_if, ACTIONS(27), 1, anon_sym_for, ACTIONS(29), 1, @@ -2933,15 +2964,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LF, STATE(17), 1, sym_namespace_list, - STATE(38), 1, + STATE(25), 1, aux_sym__linebreak, - STATE(40), 1, + STATE(46), 1, sym_write_modifiers, - STATE(52), 1, + STATE(51), 1, sym_template_global, - STATE(79), 1, + STATE(80), 1, aux_sym_write_modifiers_repeat1, - STATE(120), 1, + STATE(117), 1, sym_assign_to, STATE(150), 1, sym_declaration, @@ -2950,13 +2981,16 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, + ACTIONS(25), 2, + anon_sym_when, + anon_sym_if, ACTIONS(33), 2, anon_sym_input, anon_sym_output, ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 2, + STATE(177), 2, sym__type, sym_array_type, STATE(209), 6, @@ -2974,7 +3008,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(49), 7, + STATE(50), 7, sym__expression, sym_unary_op, sym_binary_op, @@ -2982,7 +3016,7 @@ static const uint16_t ts_small_parse_table[] = { sym_func_call, sym_field_access, sym_parenthesis_expression, - [951] = 18, + [960] = 18, ACTIONS(15), 1, sym_identifier, ACTIONS(21), 1, @@ -2997,11 +3031,11 @@ static const uint16_t ts_small_parse_table[] = { sym_number, STATE(17), 1, sym_namespace_list, - STATE(40), 1, + STATE(46), 1, sym_write_modifiers, - STATE(52), 1, + STATE(51), 1, sym_template_global, - STATE(79), 1, + STATE(80), 1, aux_sym_write_modifiers_repeat1, STATE(142), 1, sym_assign_to, @@ -3016,7 +3050,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 2, + STATE(177), 2, sym__type, sym_array_type, ACTIONS(37), 7, @@ -3027,7 +3061,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(49), 7, + STATE(50), 7, sym__expression, sym_unary_op, sym_binary_op, @@ -3035,7 +3069,7 @@ static const uint16_t ts_small_parse_table[] = { sym_func_call, sym_field_access, sym_parenthesis_expression, - [1022] = 5, + [1031] = 5, ACTIONS(67), 1, anon_sym_COLON_COLON, STATE(13), 1, @@ -3074,7 +3108,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1066] = 5, + [1075] = 5, ACTIONS(67), 1, anon_sym_COLON_COLON, STATE(14), 1, @@ -3113,7 +3147,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1110] = 5, + [1119] = 5, ACTIONS(77), 1, anon_sym_COLON_COLON, STATE(14), 1, @@ -3152,10 +3186,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1154] = 5, + [1163] = 5, ACTIONS(82), 1, anon_sym_POUND_LPAREN, - STATE(34), 1, + STATE(29), 1, sym_template_args, ACTIONS(3), 2, sym_single_line_comment, @@ -3190,7 +3224,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1197] = 3, + [1206] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -3226,10 +3260,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_COLON_COLON, anon_sym_COMMA, anon_sym_LF, - [1236] = 5, + [1245] = 5, ACTIONS(82), 1, anon_sym_POUND_LPAREN, - STATE(33), 1, + STATE(28), 1, sym_template_args, ACTIONS(3), 2, sym_single_line_comment, @@ -3264,7 +3298,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1279] = 8, + [1288] = 8, ACTIONS(98), 1, anon_sym_DOT, ACTIONS(100), 1, @@ -3273,7 +3307,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, @@ -3304,7 +3338,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1327] = 12, + [1336] = 12, ACTIONS(98), 1, anon_sym_DOT, ACTIONS(100), 1, @@ -3319,7 +3353,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, @@ -3348,7 +3382,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1383] = 13, + [1392] = 13, ACTIONS(98), 1, anon_sym_DOT, ACTIONS(100), 1, @@ -3365,7 +3399,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AMP, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, @@ -3393,7 +3427,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1441] = 8, + [1450] = 8, ACTIONS(98), 1, anon_sym_DOT, ACTIONS(100), 1, @@ -3402,7 +3436,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LBRACK, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, @@ -3433,7 +3467,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1489] = 10, + [1498] = 10, ACTIONS(98), 1, anon_sym_DOT, ACTIONS(100), 1, @@ -3444,7 +3478,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, @@ -3475,7 +3509,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1541] = 15, + [1550] = 15, ACTIONS(98), 1, anon_sym_DOT, ACTIONS(100), 1, @@ -3496,7 +3530,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_CARET, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, @@ -3522,7 +3556,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1603] = 14, + [1612] = 14, ACTIONS(98), 1, anon_sym_DOT, ACTIONS(100), 1, @@ -3541,7 +3575,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, @@ -3568,11 +3602,47 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1663] = 3, + [1672] = 5, + ACTIONS(126), 1, + anon_sym_LF, + STATE(25), 1, + aux_sym__linebreak, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + ACTIONS(122), 13, + anon_sym_reg, + anon_sym_initial, + anon_sym_when, + anon_sym_if, + anon_sym_for, + anon_sym_domain, + anon_sym_interface, + anon_sym_input, + anon_sym_output, + anon_sym_state, + anon_sym_gen, + anon_sym_DASH, + sym_identifier, + ACTIONS(124), 13, + anon_sym_RPAREN, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_DASH_GT, + anon_sym_PLUS, + anon_sym_STAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_LPAREN, + anon_sym_COLON_COLON, + sym_number, + [1713] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(122), 8, + ACTIONS(129), 8, anon_sym_EQ, anon_sym_in, anon_sym_DASH, @@ -3581,7 +3651,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_DOT, sym_identifier, - ACTIONS(124), 20, + ACTIONS(131), 20, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -3602,11 +3672,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1700] = 3, + [1750] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(126), 8, + ACTIONS(133), 8, anon_sym_EQ, anon_sym_in, anon_sym_DASH, @@ -3615,7 +3685,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_DOT, sym_identifier, - ACTIONS(128), 20, + ACTIONS(135), 20, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -3636,11 +3706,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1737] = 3, + [1787] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(130), 8, + ACTIONS(137), 8, anon_sym_EQ, anon_sym_in, anon_sym_DASH, @@ -3649,7 +3719,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_DOT, sym_identifier, - ACTIONS(132), 20, + ACTIONS(139), 20, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -3670,11 +3740,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1774] = 3, + [1824] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(134), 8, + ACTIONS(141), 8, anon_sym_EQ, anon_sym_in, anon_sym_DASH, @@ -3683,7 +3753,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_DOT, sym_identifier, - ACTIONS(136), 20, + ACTIONS(143), 20, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -3704,11 +3774,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1811] = 3, + [1861] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(138), 8, + ACTIONS(145), 8, anon_sym_EQ, anon_sym_in, anon_sym_DASH, @@ -3717,7 +3787,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_DOT, sym_identifier, - ACTIONS(140), 20, + ACTIONS(147), 20, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -3738,11 +3808,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1848] = 3, + [1898] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(142), 8, + ACTIONS(149), 8, anon_sym_EQ, anon_sym_in, anon_sym_DASH, @@ -3751,7 +3821,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_DOT, sym_identifier, - ACTIONS(144), 20, + ACTIONS(151), 20, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -3772,11 +3842,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1885] = 3, + [1935] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(146), 8, + ACTIONS(153), 8, anon_sym_EQ, anon_sym_in, anon_sym_DASH, @@ -3785,7 +3855,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_DOT, sym_identifier, - ACTIONS(148), 20, + ACTIONS(155), 20, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -3806,11 +3876,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1922] = 3, + [1972] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(150), 8, + ACTIONS(157), 8, anon_sym_EQ, anon_sym_in, anon_sym_DASH, @@ -3819,7 +3889,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_DOT, sym_identifier, - ACTIONS(152), 20, + ACTIONS(159), 20, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -3840,11 +3910,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1959] = 3, + [2009] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(154), 8, + ACTIONS(161), 8, anon_sym_EQ, anon_sym_in, anon_sym_DASH, @@ -3853,7 +3923,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_DOT, sym_identifier, - ACTIONS(156), 20, + ACTIONS(163), 20, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -3874,11 +3944,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [1996] = 3, + [2046] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(158), 8, + ACTIONS(165), 8, anon_sym_EQ, anon_sym_in, anon_sym_DASH, @@ -3887,7 +3957,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_DOT, sym_identifier, - ACTIONS(160), 20, + ACTIONS(167), 20, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -3908,11 +3978,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [2033] = 3, + [2083] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(162), 8, + ACTIONS(169), 8, anon_sym_EQ, anon_sym_in, anon_sym_DASH, @@ -3921,7 +3991,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_DOT, sym_identifier, - ACTIONS(164), 20, + ACTIONS(171), 20, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -3942,11 +4012,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [2070] = 3, + [2120] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(166), 8, + ACTIONS(173), 8, anon_sym_EQ, anon_sym_in, anon_sym_DASH, @@ -3955,7 +4025,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_DOT, sym_identifier, - ACTIONS(168), 20, + ACTIONS(175), 20, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -3976,11 +4046,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [2107] = 3, + [2157] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(170), 8, + ACTIONS(177), 8, anon_sym_EQ, anon_sym_in, anon_sym_DASH, @@ -3989,7 +4059,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_SLASH, anon_sym_DOT, sym_identifier, - ACTIONS(172), 20, + ACTIONS(179), 20, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -4010,42 +4080,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [2144] = 5, - ACTIONS(178), 1, - anon_sym_LF, - STATE(38), 1, - aux_sym__linebreak, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, - ACTIONS(174), 12, - anon_sym_reg, - anon_sym_initial, - anon_sym_if, - anon_sym_for, - anon_sym_domain, - anon_sym_interface, - anon_sym_input, - anon_sym_output, - anon_sym_state, - anon_sym_gen, - anon_sym_DASH, - sym_identifier, - ACTIONS(176), 13, - anon_sym_RPAREN, - anon_sym_LBRACE, - anon_sym_RBRACE, - anon_sym_DASH_GT, - anon_sym_PLUS, - anon_sym_STAR, - anon_sym_BANG, - anon_sym_PIPE, - anon_sym_AMP, - anon_sym_CARET, - anon_sym_LPAREN, - anon_sym_COLON_COLON, - sym_number, - [2184] = 3, + [2194] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -4078,61 +4113,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [2220] = 13, - ACTIONS(15), 1, - sym_identifier, - ACTIONS(39), 1, - anon_sym_LPAREN, - ACTIONS(41), 1, - anon_sym_COLON_COLON, - ACTIONS(185), 1, - sym_number, - STATE(17), 1, - sym_namespace_list, - STATE(52), 1, - sym_template_global, - STATE(151), 1, - sym_declaration, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, - ACTIONS(33), 2, - anon_sym_input, - anon_sym_output, - ACTIONS(35), 2, - anon_sym_state, - anon_sym_gen, - STATE(178), 2, - sym__type, - sym_array_type, - ACTIONS(37), 7, - anon_sym_PLUS, - anon_sym_DASH, - anon_sym_STAR, - anon_sym_BANG, - anon_sym_PIPE, - anon_sym_AMP, - anon_sym_CARET, - STATE(48), 7, - sym__expression, - sym_unary_op, - sym_binary_op, - sym_array_op, - sym_func_call, - sym_field_access, - sym_parenthesis_expression, - [2276] = 3, + [2230] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(189), 6, + ACTIONS(187), 6, anon_sym_EQ, anon_sym_DASH, anon_sym_LT, anon_sym_GT, anon_sym_SLASH, anon_sym_DOT, - ACTIONS(187), 21, + ACTIONS(185), 21, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -4154,18 +4146,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [2312] = 3, + [2266] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(193), 6, + ACTIONS(191), 6, anon_sym_EQ, anon_sym_DASH, anon_sym_LT, anon_sym_GT, anon_sym_SLASH, anon_sym_DOT, - ACTIONS(191), 21, + ACTIONS(189), 21, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -4187,18 +4179,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [2348] = 3, + [2302] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(197), 6, + ACTIONS(195), 6, anon_sym_EQ, anon_sym_DASH, anon_sym_LT, anon_sym_GT, anon_sym_SLASH, anon_sym_DOT, - ACTIONS(195), 21, + ACTIONS(193), 21, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -4220,18 +4212,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [2384] = 3, + [2338] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(201), 6, + ACTIONS(199), 6, anon_sym_EQ, anon_sym_DASH, anon_sym_LT, anon_sym_GT, anon_sym_SLASH, anon_sym_DOT, - ACTIONS(199), 21, + ACTIONS(197), 21, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -4253,18 +4245,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [2420] = 3, + [2374] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(205), 6, + ACTIONS(203), 6, anon_sym_EQ, anon_sym_DASH, anon_sym_LT, anon_sym_GT, anon_sym_SLASH, anon_sym_DOT, - ACTIONS(203), 21, + ACTIONS(201), 21, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -4286,18 +4278,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [2456] = 3, + [2410] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(209), 6, + ACTIONS(207), 6, anon_sym_EQ, anon_sym_DASH, anon_sym_LT, anon_sym_GT, anon_sym_SLASH, anon_sym_DOT, - ACTIONS(207), 21, + ACTIONS(205), 21, anon_sym_RPAREN, anon_sym_LBRACE, anon_sym_RBRACE, @@ -4319,19 +4311,62 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACK, anon_sym_COMMA, anon_sym_LF, - [2492] = 17, - ACTIONS(100), 1, + [2446] = 13, + ACTIONS(15), 1, + sym_identifier, + ACTIONS(39), 1, anon_sym_LPAREN, - ACTIONS(102), 1, - anon_sym_LBRACK, - ACTIONS(108), 1, - anon_sym_PLUS, - ACTIONS(110), 1, - anon_sym_DASH, - ACTIONS(114), 1, - anon_sym_SLASH, - ACTIONS(116), 1, - anon_sym_AMP, + ACTIONS(41), 1, + anon_sym_COLON_COLON, + ACTIONS(209), 1, + sym_number, + STATE(17), 1, + sym_namespace_list, + STATE(51), 1, + sym_template_global, + STATE(151), 1, + sym_declaration, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + ACTIONS(33), 2, + anon_sym_input, + anon_sym_output, + ACTIONS(35), 2, + anon_sym_state, + anon_sym_gen, + STATE(177), 2, + sym__type, + sym_array_type, + ACTIONS(37), 7, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_BANG, + anon_sym_PIPE, + anon_sym_AMP, + anon_sym_CARET, + STATE(49), 7, + sym__expression, + sym_unary_op, + sym_binary_op, + sym_array_op, + sym_func_call, + sym_field_access, + sym_parenthesis_expression, + [2502] = 17, + ACTIONS(100), 1, + anon_sym_LPAREN, + ACTIONS(102), 1, + anon_sym_LBRACK, + ACTIONS(108), 1, + anon_sym_PLUS, + ACTIONS(110), 1, + anon_sym_DASH, + ACTIONS(114), 1, + anon_sym_SLASH, + ACTIONS(116), 1, + anon_sym_AMP, ACTIONS(118), 1, anon_sym_PIPE, ACTIONS(120), 1, @@ -4342,7 +4377,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DOT, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, @@ -4365,7 +4400,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH_GT, anon_sym_COMMA, anon_sym_LF, - [2555] = 16, + [2565] = 18, ACTIONS(100), 1, anon_sym_LPAREN, ACTIONS(102), 1, @@ -4380,12 +4415,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_CARET, ACTIONS(219), 1, anon_sym_DOT, + ACTIONS(221), 1, + anon_sym_RPAREN, ACTIONS(223), 1, - anon_sym_EQ, + anon_sym_COMMA, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, + STATE(75), 1, + sym__comma, + STATE(166), 1, + aux_sym_parenthesis_expression_list_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -4398,16 +4439,12 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(217), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(221), 3, - anon_sym_RBRACE, - anon_sym_COMMA, - anon_sym_LF, ACTIONS(215), 4, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_LT_EQ, anon_sym_GT_EQ, - [2613] = 16, + [2627] = 16, ACTIONS(100), 1, anon_sym_LPAREN, ACTIONS(102), 1, @@ -4426,7 +4463,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, @@ -4449,7 +4486,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_LT_EQ, anon_sym_GT_EQ, - [2671] = 18, + [2685] = 16, ACTIONS(100), 1, anon_sym_LPAREN, ACTIONS(102), 1, @@ -4464,18 +4501,12 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_CARET, ACTIONS(219), 1, anon_sym_DOT, - ACTIONS(229), 1, - anon_sym_RPAREN, ACTIONS(231), 1, - anon_sym_COMMA, + anon_sym_EQ, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, - STATE(73), 1, - sym__comma, - STATE(166), 1, - aux_sym_parenthesis_expression_list_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -4488,12 +4519,46 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(217), 2, anon_sym_LT, anon_sym_GT, + ACTIONS(229), 3, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LF, ACTIONS(215), 4, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_LT_EQ, anon_sym_GT_EQ, - [2733] = 15, + [2743] = 5, + ACTIONS(233), 1, + sym_identifier, + ACTIONS(239), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + ACTIONS(237), 4, + anon_sym_EQ, + anon_sym_LT, + anon_sym_GT, + anon_sym_SLASH, + ACTIONS(235), 16, + anon_sym_RBRACE, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_PIPE, + anon_sym_AMP, + anon_sym_CARET, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_PERCENT, + anon_sym_DOT, + anon_sym_LPAREN, + anon_sym_COMMA, + anon_sym_LF, + [2778] = 15, ACTIONS(100), 1, anon_sym_LPAREN, ACTIONS(102), 1, @@ -4510,7 +4575,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DOT, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, @@ -4524,7 +4589,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(217), 2, anon_sym_LT, anon_sym_GT, - ACTIONS(233), 3, + ACTIONS(242), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_LF, @@ -4533,46 +4598,56 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_LT_EQ, anon_sym_GT_EQ, - [2788] = 5, - ACTIONS(235), 1, - sym_identifier, - ACTIONS(241), 1, + [2833] = 16, + ACTIONS(17), 1, + anon_sym_LBRACE, + ACTIONS(100), 1, + anon_sym_LPAREN, + ACTIONS(102), 1, anon_sym_LBRACK, + ACTIONS(114), 1, + anon_sym_SLASH, + ACTIONS(116), 1, + anon_sym_AMP, + ACTIONS(118), 1, + anon_sym_PIPE, + ACTIONS(120), 1, + anon_sym_CARET, + ACTIONS(219), 1, + anon_sym_DOT, + STATE(39), 1, + sym_parenthesis_expression_list, + STATE(40), 1, + sym_array_bracket_expression, + STATE(211), 1, + sym_block, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(239), 4, - anon_sym_EQ, - anon_sym_LT, - anon_sym_GT, - anon_sym_SLASH, - ACTIONS(237), 16, - anon_sym_RBRACE, + ACTIONS(108), 2, anon_sym_PLUS, anon_sym_DASH, + ACTIONS(112), 2, anon_sym_STAR, - anon_sym_PIPE, - anon_sym_AMP, - anon_sym_CARET, + anon_sym_PERCENT, + ACTIONS(217), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(215), 4, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_LT_EQ, anon_sym_GT_EQ, - anon_sym_PERCENT, - anon_sym_DOT, - anon_sym_LPAREN, - anon_sym_COMMA, - anon_sym_LF, - [2823] = 9, + [2889] = 9, + ACTIONS(15), 1, + sym_identifier, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, ACTIONS(244), 1, - sym_identifier, + anon_sym_type, ACTIONS(246), 1, - anon_sym_RPAREN, - ACTIONS(248), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -4587,7 +4662,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(50), 8, + STATE(52), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -4596,15 +4671,15 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [2865] = 9, - ACTIONS(15), 1, - sym_identifier, + [2931] = 9, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, + ACTIONS(248), 1, + sym_identifier, ACTIONS(250), 1, - anon_sym_type, + anon_sym_RPAREN, ACTIONS(252), 1, sym_number, STATE(17), 1, @@ -4620,7 +4695,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(51), 8, + STATE(48), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -4629,46 +4704,7 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [2907] = 15, - ACTIONS(100), 1, - anon_sym_LPAREN, - ACTIONS(102), 1, - anon_sym_LBRACK, - ACTIONS(114), 1, - anon_sym_SLASH, - ACTIONS(116), 1, - anon_sym_AMP, - ACTIONS(118), 1, - anon_sym_PIPE, - ACTIONS(120), 1, - anon_sym_CARET, - ACTIONS(219), 1, - anon_sym_DOT, - STATE(39), 1, - sym_parenthesis_expression_list, - STATE(41), 1, - sym_array_bracket_expression, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, - ACTIONS(108), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(112), 2, - anon_sym_STAR, - anon_sym_PERCENT, - ACTIONS(217), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(254), 2, - anon_sym_RBRACE, - anon_sym_LF, - ACTIONS(215), 4, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_LT_EQ, - anon_sym_GT_EQ, - [2961] = 16, + [2973] = 16, ACTIONS(17), 1, anon_sym_LBRACE, ACTIONS(100), 1, @@ -4687,9 +4723,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DOT, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, - STATE(211), 1, + STATE(175), 1, sym_block, ACTIONS(3), 2, sym_single_line_comment, @@ -4708,9 +4744,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_LT_EQ, anon_sym_GT_EQ, - [3017] = 16, - ACTIONS(17), 1, - anon_sym_LBRACE, + [3029] = 15, ACTIONS(100), 1, anon_sym_LPAREN, ACTIONS(102), 1, @@ -4727,10 +4761,8 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DOT, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, - STATE(177), 1, - sym_block, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -4743,12 +4775,15 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(217), 2, anon_sym_LT, anon_sym_GT, + ACTIONS(254), 2, + anon_sym_RBRACE, + anon_sym_LF, ACTIONS(215), 4, anon_sym_EQ_EQ, anon_sym_BANG_EQ, anon_sym_LT_EQ, anon_sym_GT_EQ, - [3073] = 15, + [3083] = 15, ACTIONS(100), 1, anon_sym_LPAREN, ACTIONS(102), 1, @@ -4765,7 +4800,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DOT, STATE(39), 1, sym_parenthesis_expression_list, - STATE(41), 1, + STATE(40), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, @@ -4787,52 +4822,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BANG_EQ, anon_sym_LT_EQ, anon_sym_GT_EQ, - [3127] = 15, - ACTIONS(100), 1, - anon_sym_LPAREN, - ACTIONS(102), 1, - anon_sym_LBRACK, - ACTIONS(114), 1, - anon_sym_SLASH, - ACTIONS(116), 1, - anon_sym_AMP, - ACTIONS(118), 1, - anon_sym_PIPE, - ACTIONS(120), 1, - anon_sym_CARET, - ACTIONS(219), 1, - anon_sym_DOT, - ACTIONS(258), 1, - anon_sym_RPAREN, - STATE(39), 1, - sym_parenthesis_expression_list, - STATE(41), 1, - sym_array_bracket_expression, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, - ACTIONS(108), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(112), 2, - anon_sym_STAR, - anon_sym_PERCENT, - ACTIONS(217), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(215), 4, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_LT_EQ, - anon_sym_GT_EQ, - [3180] = 8, + [3137] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(260), 1, + ACTIONS(258), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -4847,7 +4844,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(55), 8, + STATE(57), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -4856,14 +4853,14 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3219] = 8, + [3176] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(262), 1, + ACTIONS(260), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -4878,7 +4875,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(57), 8, + STATE(21), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -4887,14 +4884,14 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3258] = 8, + [3215] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(264), 1, + ACTIONS(262), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -4909,7 +4906,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(23), 8, + STATE(19), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -4918,14 +4915,14 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3297] = 8, + [3254] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(266), 1, + ACTIONS(264), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -4940,7 +4937,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(21), 8, + STATE(24), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -4949,14 +4946,14 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3336] = 8, + [3293] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(268), 1, + ACTIONS(266), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -4971,7 +4968,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(18), 8, + STATE(23), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -4980,14 +4977,14 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3375] = 8, + [3332] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(270), 1, + ACTIONS(268), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -5002,7 +4999,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(59), 8, + STATE(20), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -5011,14 +5008,14 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3414] = 8, + [3371] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(272), 1, + ACTIONS(270), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -5042,14 +5039,14 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3453] = 8, + [3410] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(274), 1, + ACTIONS(272), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -5064,7 +5061,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(20), 8, + STATE(56), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -5073,14 +5070,14 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3492] = 8, + [3449] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(276), 1, + ACTIONS(274), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -5095,7 +5092,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(19), 8, + STATE(47), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -5104,14 +5101,14 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3531] = 8, + [3488] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(278), 1, + ACTIONS(276), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -5126,7 +5123,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(71), 8, + STATE(74), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -5135,90 +5132,14 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3570] = 15, - ACTIONS(98), 1, - anon_sym_DOT, - ACTIONS(100), 1, - anon_sym_LPAREN, - ACTIONS(102), 1, - anon_sym_LBRACK, - ACTIONS(114), 1, - anon_sym_SLASH, - ACTIONS(116), 1, - anon_sym_AMP, - ACTIONS(118), 1, - anon_sym_PIPE, - ACTIONS(120), 1, - anon_sym_CARET, - ACTIONS(280), 1, - anon_sym_DOT_DOT, - STATE(39), 1, - sym_parenthesis_expression_list, - STATE(41), 1, - sym_array_bracket_expression, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, - ACTIONS(108), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(112), 2, - anon_sym_STAR, - anon_sym_PERCENT, - ACTIONS(217), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(215), 4, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_LT_EQ, - anon_sym_GT_EQ, - [3623] = 15, - ACTIONS(100), 1, - anon_sym_LPAREN, - ACTIONS(102), 1, - anon_sym_LBRACK, - ACTIONS(114), 1, - anon_sym_SLASH, - ACTIONS(116), 1, - anon_sym_AMP, - ACTIONS(118), 1, - anon_sym_PIPE, - ACTIONS(120), 1, - anon_sym_CARET, - ACTIONS(219), 1, - anon_sym_DOT, - ACTIONS(282), 1, - anon_sym_RBRACK, - STATE(39), 1, - sym_parenthesis_expression_list, - STATE(41), 1, - sym_array_bracket_expression, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, - ACTIONS(108), 2, - anon_sym_PLUS, - anon_sym_DASH, - ACTIONS(112), 2, - anon_sym_STAR, - anon_sym_PERCENT, - ACTIONS(217), 2, - anon_sym_LT, - anon_sym_GT, - ACTIONS(215), 4, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_LT_EQ, - anon_sym_GT_EQ, - [3676] = 8, + [3527] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(284), 1, + ACTIONS(278), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -5233,7 +5154,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(47), 8, + STATE(18), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -5242,14 +5163,14 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3715] = 8, + [3566] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(286), 1, + ACTIONS(280), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -5264,7 +5185,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(58), 8, + STATE(76), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -5273,14 +5194,14 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3754] = 8, + [3605] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(288), 1, + ACTIONS(282), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -5295,7 +5216,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(56), 8, + STATE(73), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -5304,14 +5225,14 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3793] = 8, + [3644] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(290), 1, + ACTIONS(284), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -5326,7 +5247,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(70), 8, + STATE(53), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -5335,14 +5256,90 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3832] = 8, + [3683] = 15, + ACTIONS(100), 1, + anon_sym_LPAREN, + ACTIONS(102), 1, + anon_sym_LBRACK, + ACTIONS(114), 1, + anon_sym_SLASH, + ACTIONS(116), 1, + anon_sym_AMP, + ACTIONS(118), 1, + anon_sym_PIPE, + ACTIONS(120), 1, + anon_sym_CARET, + ACTIONS(219), 1, + anon_sym_DOT, + ACTIONS(286), 1, + anon_sym_RBRACK, + STATE(39), 1, + sym_parenthesis_expression_list, + STATE(40), 1, + sym_array_bracket_expression, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + ACTIONS(108), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(112), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(217), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(215), 4, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [3736] = 15, + ACTIONS(98), 1, + anon_sym_DOT, + ACTIONS(100), 1, + anon_sym_LPAREN, + ACTIONS(102), 1, + anon_sym_LBRACK, + ACTIONS(114), 1, + anon_sym_SLASH, + ACTIONS(116), 1, + anon_sym_AMP, + ACTIONS(118), 1, + anon_sym_PIPE, + ACTIONS(120), 1, + anon_sym_CARET, + ACTIONS(288), 1, + anon_sym_DOT_DOT, + STATE(39), 1, + sym_parenthesis_expression_list, + STATE(40), 1, + sym_array_bracket_expression, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + ACTIONS(108), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(112), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(217), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(215), 4, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [3789] = 8, ACTIONS(39), 1, anon_sym_LPAREN, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, - ACTIONS(292), 1, + ACTIONS(290), 1, sym_number, STATE(17), 1, sym_namespace_list, @@ -5357,7 +5354,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_CARET, - STATE(24), 8, + STATE(58), 8, sym__expression, sym_unary_op, sym_binary_op, @@ -5366,10 +5363,48 @@ static const uint16_t ts_small_parse_table[] = { sym_field_access, sym_parenthesis_expression, sym_template_global, - [3871] = 5, + [3828] = 15, + ACTIONS(100), 1, + anon_sym_LPAREN, + ACTIONS(102), 1, + anon_sym_LBRACK, + ACTIONS(114), 1, + anon_sym_SLASH, + ACTIONS(116), 1, + anon_sym_AMP, + ACTIONS(118), 1, + anon_sym_PIPE, + ACTIONS(120), 1, + anon_sym_CARET, + ACTIONS(219), 1, + anon_sym_DOT, + ACTIONS(292), 1, + anon_sym_RPAREN, + STATE(39), 1, + sym_parenthesis_expression_list, + STATE(40), 1, + sym_array_bracket_expression, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + ACTIONS(108), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(112), 2, + anon_sym_STAR, + anon_sym_PERCENT, + ACTIONS(217), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(215), 4, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [3881] = 5, ACTIONS(49), 1, anon_sym_LF, - STATE(38), 1, + STATE(25), 1, aux_sym__linebreak, ACTIONS(3), 2, sym_single_line_comment, @@ -5393,7 +5428,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, anon_sym_COLON_COLON, sym_number, - [3903] = 5, + [3913] = 5, ACTIONS(302), 1, anon_sym_LF, STATE(77), 1, @@ -5420,10 +5455,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, anon_sym_COLON_COLON, sym_number, - [3935] = 5, - ACTIONS(21), 1, + [3945] = 5, + ACTIONS(306), 1, anon_sym_reg, - STATE(80), 1, + STATE(79), 1, aux_sym_write_modifiers_repeat1, ACTIONS(3), 2, sym_single_line_comment, @@ -5434,7 +5469,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_state, anon_sym_gen, sym_identifier, - ACTIONS(306), 10, + ACTIONS(309), 10, anon_sym_PLUS, anon_sym_DASH, anon_sym_STAR, @@ -5445,15 +5480,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, anon_sym_COLON_COLON, sym_number, - [3965] = 5, - ACTIONS(310), 1, + [3975] = 5, + ACTIONS(21), 1, anon_sym_reg, - STATE(80), 1, + STATE(79), 1, aux_sym_write_modifiers_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(308), 5, + ACTIONS(311), 5, anon_sym_input, anon_sym_output, anon_sym_state, @@ -5470,7 +5505,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, anon_sym_COLON_COLON, sym_number, - [3995] = 3, + [4005] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -5492,7 +5527,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, anon_sym_COLON_COLON, sym_number, - [4020] = 13, + [4030] = 13, ACTIONS(15), 1, sym_identifier, ACTIONS(41), 1, @@ -5503,13 +5538,13 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH_GT, STATE(17), 1, sym_namespace_list, - STATE(38), 1, + STATE(25), 1, aux_sym__linebreak, - STATE(109), 1, + STATE(113), 1, sym_declaration, - STATE(169), 1, + STATE(170), 1, sym_declaration_list, - STATE(203), 1, + STATE(204), 1, sym__interface_ports_output, ACTIONS(3), 2, sym_single_line_comment, @@ -5520,11 +5555,11 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 3, + STATE(177), 3, sym__type, sym_array_type, sym_template_global, - [4065] = 13, + [4075] = 13, ACTIONS(15), 1, sym_identifier, ACTIONS(41), 1, @@ -5537,11 +5572,11 @@ static const uint16_t ts_small_parse_table[] = { sym_namespace_list, STATE(82), 1, aux_sym__linebreak, - STATE(109), 1, + STATE(113), 1, sym_declaration, STATE(162), 1, sym_declaration_list, - STATE(200), 1, + STATE(203), 1, sym__interface_ports_output, ACTIONS(3), 2, sym_single_line_comment, @@ -5552,51 +5587,22 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 3, + STATE(177), 3, sym__type, sym_array_type, sym_template_global, - [4110] = 11, + [4120] = 11, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(49), 1, - anon_sym_LF, ACTIONS(323), 1, sym_identifier, ACTIONS(325), 1, anon_sym_RPAREN, - STATE(17), 1, - sym_namespace_list, - STATE(38), 1, - aux_sym__linebreak, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, - ACTIONS(33), 2, - anon_sym_input, - anon_sym_output, - ACTIONS(35), 2, - anon_sym_state, - anon_sym_gen, - STATE(115), 2, - sym_template_declaration_type, - sym_declaration, - STATE(178), 3, - sym__type, - sym_array_type, - sym_template_global, - [4150] = 11, - ACTIONS(41), 1, - anon_sym_COLON_COLON, - ACTIONS(323), 1, - sym_identifier, ACTIONS(327), 1, - anon_sym_RPAREN, - ACTIONS(329), 1, anon_sym_LF, STATE(17), 1, sym_namespace_list, - STATE(84), 1, + STATE(86), 1, aux_sym__linebreak, ACTIONS(3), 2, sym_single_line_comment, @@ -5610,21 +5616,21 @@ static const uint16_t ts_small_parse_table[] = { STATE(125), 2, sym_template_declaration_type, sym_declaration, - STATE(178), 3, + STATE(177), 3, sym__type, sym_array_type, sym_template_global, - [4190] = 3, + [4160] = 3, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(331), 5, + ACTIONS(329), 5, anon_sym_input, anon_sym_output, anon_sym_state, anon_sym_gen, sym_identifier, - ACTIONS(333), 10, + ACTIONS(331), 10, anon_sym_PLUS, anon_sym_DASH, anon_sym_STAR, @@ -5635,7 +5641,36 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LPAREN, anon_sym_COLON_COLON, sym_number, - [4214] = 11, + [4184] = 11, + ACTIONS(41), 1, + anon_sym_COLON_COLON, + ACTIONS(49), 1, + anon_sym_LF, + ACTIONS(323), 1, + sym_identifier, + ACTIONS(333), 1, + anon_sym_RPAREN, + STATE(17), 1, + sym_namespace_list, + STATE(25), 1, + aux_sym__linebreak, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + ACTIONS(33), 2, + anon_sym_input, + anon_sym_output, + ACTIONS(35), 2, + anon_sym_state, + anon_sym_gen, + STATE(118), 2, + sym_template_declaration_type, + sym_declaration, + STATE(177), 3, + sym__type, + sym_array_type, + sym_template_global, + [4224] = 11, ACTIONS(15), 1, sym_identifier, ACTIONS(41), 1, @@ -5646,7 +5681,7 @@ static const uint16_t ts_small_parse_table[] = { sym_namespace_list, STATE(88), 1, aux_sym__linebreak, - STATE(109), 1, + STATE(113), 1, sym_declaration, STATE(201), 1, sym_declaration_list, @@ -5659,11 +5694,11 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 3, + STATE(177), 3, sym__type, sym_array_type, sym_template_global, - [4253] = 11, + [4263] = 11, ACTIONS(15), 1, sym_identifier, ACTIONS(41), 1, @@ -5672,9 +5707,9 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_LF, STATE(17), 1, sym_namespace_list, - STATE(38), 1, + STATE(25), 1, aux_sym__linebreak, - STATE(109), 1, + STATE(113), 1, sym_declaration, STATE(208), 1, sym_declaration_list, @@ -5687,11 +5722,11 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 3, + STATE(177), 3, sym__type, sym_array_type, sym_template_global, - [4292] = 8, + [4302] = 8, ACTIONS(41), 1, anon_sym_COLON_COLON, ACTIONS(323), 1, @@ -5707,21 +5742,21 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(185), 2, + STATE(184), 2, sym_template_declaration_type, sym_declaration, - STATE(178), 3, + STATE(177), 3, sym__type, sym_array_type, sym_template_global, - [4323] = 8, + [4333] = 8, ACTIONS(15), 1, sym_identifier, ACTIONS(41), 1, anon_sym_COLON_COLON, STATE(17), 1, sym_namespace_list, - STATE(218), 1, + STATE(137), 1, sym_declaration, ACTIONS(3), 2, sym_single_line_comment, @@ -5732,18 +5767,18 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 3, + STATE(177), 3, sym__type, sym_array_type, sym_template_global, - [4353] = 8, + [4363] = 8, ACTIONS(15), 1, sym_identifier, ACTIONS(41), 1, anon_sym_COLON_COLON, STATE(17), 1, sym_namespace_list, - STATE(136), 1, + STATE(213), 1, sym_declaration, ACTIONS(3), 2, sym_single_line_comment, @@ -5754,22 +5789,22 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(35), 2, anon_sym_state, anon_sym_gen, - STATE(178), 3, + STATE(177), 3, sym__type, sym_array_type, sym_template_global, - [4383] = 9, + [4393] = 9, ACTIONS(11), 1, anon_sym_const, ACTIONS(337), 1, ts_builtin_sym_end, ACTIONS(339), 1, anon_sym_LF, - STATE(102), 1, + STATE(98), 1, aux_sym__linebreak, - STATE(149), 1, + STATE(207), 1, sym_global_object, - STATE(225), 1, + STATE(223), 1, sym_const_and_type, ACTIONS(3), 2, sym_single_line_comment, @@ -5780,18 +5815,18 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(9), 2, anon_sym_module, anon_sym_struct, - [4414] = 9, + [4424] = 9, ACTIONS(11), 1, anon_sym_const, ACTIONS(339), 1, anon_sym_LF, ACTIONS(341), 1, ts_builtin_sym_end, - STATE(102), 1, + STATE(98), 1, aux_sym__linebreak, - STATE(206), 1, + STATE(207), 1, sym_global_object, - STATE(225), 1, + STATE(223), 1, sym_const_and_type, ACTIONS(3), 2, sym_single_line_comment, @@ -5802,18 +5837,18 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(9), 2, anon_sym_module, anon_sym_struct, - [4445] = 9, + [4455] = 9, ACTIONS(11), 1, anon_sym_const, ACTIONS(339), 1, anon_sym_LF, ACTIONS(343), 1, ts_builtin_sym_end, - STATE(102), 1, + STATE(98), 1, aux_sym__linebreak, - STATE(206), 1, + STATE(149), 1, sym_global_object, - STATE(225), 1, + STATE(223), 1, sym_const_and_type, ACTIONS(3), 2, sym_single_line_comment, @@ -5824,18 +5859,18 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(9), 2, anon_sym_module, anon_sym_struct, - [4476] = 9, + [4486] = 9, ACTIONS(11), 1, anon_sym_const, ACTIONS(339), 1, anon_sym_LF, ACTIONS(345), 1, ts_builtin_sym_end, - STATE(102), 1, + STATE(98), 1, aux_sym__linebreak, - STATE(206), 1, + STATE(207), 1, sym_global_object, - STATE(225), 1, + STATE(223), 1, sym_const_and_type, ACTIONS(3), 2, sym_single_line_comment, @@ -5846,18 +5881,18 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(9), 2, anon_sym_module, anon_sym_struct, - [4507] = 9, + [4517] = 9, ACTIONS(11), 1, anon_sym_const, ACTIONS(339), 1, anon_sym_LF, ACTIONS(347), 1, ts_builtin_sym_end, - STATE(102), 1, + STATE(98), 1, aux_sym__linebreak, - STATE(206), 1, + STATE(207), 1, sym_global_object, - STATE(225), 1, + STATE(223), 1, sym_const_and_type, ACTIONS(3), 2, sym_single_line_comment, @@ -5868,32 +5903,16 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(9), 2, anon_sym_module, anon_sym_struct, - [4538] = 4, - ACTIONS(351), 1, - anon_sym_SQUOTE, - STATE(106), 1, - sym_latency_specifier, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, - ACTIONS(349), 7, - anon_sym_RPAREN, - anon_sym_RBRACE, - anon_sym_EQ, - anon_sym_in, - anon_sym_DASH_GT, - anon_sym_COMMA, - anon_sym_LF, - [4558] = 8, + [4548] = 8, ACTIONS(11), 1, anon_sym_const, ACTIONS(339), 1, anon_sym_LF, - STATE(102), 1, + STATE(98), 1, aux_sym__linebreak, - STATE(206), 1, + STATE(207), 1, sym_global_object, - STATE(225), 1, + STATE(223), 1, sym_const_and_type, ACTIONS(3), 2, sym_single_line_comment, @@ -5904,15 +5923,31 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(9), 2, anon_sym_module, anon_sym_struct, - [4586] = 4, - ACTIONS(351), 1, + [4576] = 4, + ACTIONS(349), 1, + anon_sym_LF, + STATE(98), 1, + aux_sym__linebreak, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + ACTIONS(124), 7, + ts_builtin_sym_end, + anon_sym___builtin__, + anon_sym_extern, + anon_sym_module, + anon_sym_struct, + anon_sym_const, + anon_sym_RPAREN, + [4596] = 4, + ACTIONS(354), 1, anon_sym_SQUOTE, STATE(107), 1, sym_latency_specifier, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(353), 7, + ACTIONS(352), 7, anon_sym_RPAREN, anon_sym_RBRACE, anon_sym_EQ, @@ -5920,15 +5955,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH_GT, anon_sym_COMMA, anon_sym_LF, - [4606] = 4, - ACTIONS(351), 1, + [4616] = 4, + ACTIONS(354), 1, anon_sym_SQUOTE, STATE(108), 1, sym_latency_specifier, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(355), 7, + ACTIONS(356), 7, anon_sym_RPAREN, anon_sym_RBRACE, anon_sym_EQ, @@ -5936,15 +5971,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH_GT, anon_sym_COMMA, anon_sym_LF, - [4626] = 4, - ACTIONS(351), 1, + [4636] = 4, + ACTIONS(354), 1, anon_sym_SQUOTE, - STATE(105), 1, + STATE(106), 1, sym_latency_specifier, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(357), 7, + ACTIONS(358), 7, anon_sym_RPAREN, anon_sym_RBRACE, anon_sym_EQ, @@ -5952,23 +5987,23 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH_GT, anon_sym_COMMA, anon_sym_LF, - [4646] = 4, - ACTIONS(359), 1, - anon_sym_LF, - STATE(102), 1, - aux_sym__linebreak, + [4656] = 4, + ACTIONS(354), 1, + anon_sym_SQUOTE, + STATE(105), 1, + sym_latency_specifier, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(176), 7, - ts_builtin_sym_end, - anon_sym___builtin__, - anon_sym_extern, - anon_sym_module, - anon_sym_struct, - anon_sym_const, + ACTIONS(360), 7, anon_sym_RPAREN, - [4666] = 5, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_in, + anon_sym_DASH_GT, + anon_sym_COMMA, + anon_sym_LF, + [4676] = 5, ACTIONS(67), 1, anon_sym_COLON_COLON, STATE(13), 1, @@ -5984,7 +6019,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RPAREN, anon_sym_COMMA, anon_sym_LF, - [4687] = 6, + [4697] = 6, ACTIONS(15), 1, sym_identifier, ACTIONS(41), 1, @@ -5997,11 +6032,11 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(364), 2, anon_sym_state, anon_sym_gen, - STATE(181), 3, + STATE(180), 3, sym__type, sym_array_type, sym_template_global, - [4710] = 2, + [4720] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -6013,7 +6048,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH_GT, anon_sym_COMMA, anon_sym_LF, - [4724] = 2, + [4734] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -6025,7 +6060,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH_GT, anon_sym_COMMA, anon_sym_LF, - [4738] = 2, + [4748] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -6037,7 +6072,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH_GT, anon_sym_COMMA, anon_sym_LF, - [4752] = 2, + [4762] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -6049,190 +6084,220 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_DASH_GT, anon_sym_COMMA, anon_sym_LF, - [4766] = 5, - ACTIONS(231), 1, + [4776] = 7, + ACTIONS(223), 1, anon_sym_COMMA, - STATE(91), 1, + ACTIONS(374), 1, + anon_sym_RPAREN, + ACTIONS(376), 1, + anon_sym_LF, + STATE(132), 1, + aux_sym_template_args_repeat1, + STATE(186), 1, + aux_sym__linebreak, + STATE(193), 1, sym__comma, - STATE(124), 1, - aux_sym_declaration_list_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(374), 3, - anon_sym_RBRACE, - anon_sym_DASH_GT, - anon_sym_LF, - [4785] = 5, + [4799] = 5, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, STATE(17), 1, sym_namespace_list, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - STATE(190), 3, + STATE(131), 3, sym__type, sym_array_type, sym_template_global, - [4804] = 7, - ACTIONS(231), 1, + [4818] = 7, + ACTIONS(223), 1, anon_sym_COMMA, - ACTIONS(376), 1, - anon_sym_RPAREN, ACTIONS(378), 1, - anon_sym_LF, - STATE(131), 1, - aux_sym_template_args_repeat1, - STATE(187), 1, - aux_sym__linebreak, - STATE(193), 1, - sym__comma, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, - [4827] = 7, - ACTIONS(231), 1, - anon_sym_COMMA, - ACTIONS(380), 1, anon_sym_RPAREN, - ACTIONS(382), 1, + ACTIONS(380), 1, anon_sym_LF, STATE(89), 1, sym__comma, - STATE(128), 1, + STATE(130), 1, aux_sym_template_declaration_arguments_repeat1, - STATE(186), 1, + STATE(185), 1, aux_sym__linebreak, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [4850] = 7, - ACTIONS(231), 1, - anon_sym_COMMA, + [4841] = 5, ACTIONS(384), 1, - anon_sym_RPAREN, - ACTIONS(386), 1, + anon_sym_COMMA, + STATE(11), 1, + sym__comma, + STATE(112), 1, + aux_sym_assign_left_side_repeat1, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + ACTIONS(382), 3, + anon_sym_RBRACE, + anon_sym_EQ, anon_sym_LF, - STATE(123), 1, - aux_sym_template_args_repeat1, - STATE(189), 1, - aux_sym__linebreak, - STATE(193), 1, + [4860] = 5, + ACTIONS(223), 1, + anon_sym_COMMA, + STATE(90), 1, sym__comma, + STATE(121), 1, + aux_sym_declaration_list_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [4873] = 5, + ACTIONS(387), 3, + anon_sym_RBRACE, + anon_sym_DASH_GT, + anon_sym_LF, + [4879] = 5, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, STATE(17), 1, sym_namespace_list, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - STATE(183), 3, + STATE(181), 3, sym__type, sym_array_type, sym_template_global, - [4892] = 7, - ACTIONS(231), 1, + [4898] = 7, + ACTIONS(223), 1, anon_sym_COMMA, - ACTIONS(388), 1, + ACTIONS(389), 1, anon_sym_RPAREN, - ACTIONS(390), 1, + ACTIONS(391), 1, anon_sym_LF, - STATE(89), 1, - sym__comma, - STATE(118), 1, - aux_sym_template_declaration_arguments_repeat1, - STATE(175), 1, + STATE(109), 1, + aux_sym_template_args_repeat1, + STATE(178), 1, aux_sym__linebreak, + STATE(193), 1, + sym__comma, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [4915] = 7, - ACTIONS(231), 1, + [4921] = 7, + ACTIONS(223), 1, anon_sym_COMMA, - ACTIONS(392), 1, + ACTIONS(393), 1, anon_sym_RPAREN, - ACTIONS(394), 1, + ACTIONS(395), 1, anon_sym_LF, - STATE(111), 1, + STATE(132), 1, aux_sym_template_args_repeat1, - STATE(180), 1, + STATE(183), 1, aux_sym__linebreak, STATE(193), 1, sym__comma, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [4938] = 5, - ACTIONS(41), 1, - anon_sym_COLON_COLON, - ACTIONS(244), 1, - sym_identifier, - STATE(17), 1, - sym_namespace_list, + [4944] = 5, + ACTIONS(223), 1, + anon_sym_COMMA, + STATE(11), 1, + sym__comma, + STATE(120), 1, + aux_sym_assign_left_side_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - STATE(130), 3, - sym__type, - sym_array_type, - sym_template_global, - [4957] = 7, - ACTIONS(231), 1, + ACTIONS(397), 3, + anon_sym_RBRACE, + anon_sym_EQ, + anon_sym_LF, + [4963] = 7, + ACTIONS(223), 1, anon_sym_COMMA, - ACTIONS(396), 1, + ACTIONS(399), 1, anon_sym_RPAREN, - ACTIONS(398), 1, + ACTIONS(401), 1, anon_sym_LF, STATE(89), 1, sym__comma, - STATE(128), 1, + STATE(119), 1, + aux_sym_template_declaration_arguments_repeat1, + STATE(190), 1, + aux_sym__linebreak, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + [4986] = 7, + ACTIONS(223), 1, + anon_sym_COMMA, + ACTIONS(403), 1, + anon_sym_RPAREN, + ACTIONS(405), 1, + anon_sym_LF, + STATE(89), 1, + sym__comma, + STATE(130), 1, aux_sym_template_declaration_arguments_repeat1, STATE(176), 1, aux_sym__linebreak, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [4980] = 5, - ACTIONS(402), 1, + [5009] = 5, + ACTIONS(223), 1, anon_sym_COMMA, STATE(11), 1, sym__comma, - STATE(119), 1, + STATE(112), 1, aux_sym_assign_left_side_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(400), 3, + ACTIONS(407), 3, anon_sym_RBRACE, anon_sym_EQ, anon_sym_LF, - [4999] = 5, - ACTIONS(231), 1, + [5028] = 5, + ACTIONS(223), 1, anon_sym_COMMA, - STATE(11), 1, + STATE(90), 1, sym__comma, STATE(126), 1, - aux_sym_assign_left_side_repeat1, + aux_sym_declaration_list_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(405), 3, + ACTIONS(409), 3, anon_sym_RBRACE, - anon_sym_EQ, + anon_sym_DASH_GT, + anon_sym_LF, + [5047] = 7, + ACTIONS(223), 1, + anon_sym_COMMA, + ACTIONS(411), 1, + anon_sym_RPAREN, + ACTIONS(413), 1, anon_sym_LF, - [5018] = 5, + STATE(116), 1, + aux_sym_template_args_repeat1, + STATE(189), 1, + aux_sym__linebreak, + STATE(193), 1, + sym__comma, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + [5070] = 5, ACTIONS(41), 1, anon_sym_COLON_COLON, - ACTIONS(244), 1, + ACTIONS(248), 1, sym_identifier, STATE(17), 1, sym_namespace_list, @@ -6243,212 +6308,185 @@ static const uint16_t ts_small_parse_table[] = { sym__type, sym_array_type, sym_template_global, - [5037] = 5, - ACTIONS(409), 1, - anon_sym_COMMA, - STATE(91), 1, - sym__comma, - STATE(122), 1, - aux_sym_declaration_list_repeat1, + [5089] = 5, + ACTIONS(41), 1, + anon_sym_COLON_COLON, + ACTIONS(248), 1, + sym_identifier, + STATE(17), 1, + sym_namespace_list, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(407), 3, - anon_sym_RBRACE, - anon_sym_DASH_GT, - anon_sym_LF, - [5056] = 7, - ACTIONS(231), 1, + STATE(188), 3, + sym__type, + sym_array_type, + sym_template_global, + [5108] = 7, + ACTIONS(223), 1, anon_sym_COMMA, - ACTIONS(412), 1, + ACTIONS(415), 1, anon_sym_RPAREN, - ACTIONS(414), 1, + ACTIONS(417), 1, anon_sym_LF, - STATE(131), 1, - aux_sym_template_args_repeat1, - STATE(184), 1, - aux_sym__linebreak, - STATE(193), 1, + STATE(89), 1, sym__comma, + STATE(111), 1, + aux_sym_template_declaration_arguments_repeat1, + STATE(187), 1, + aux_sym__linebreak, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5079] = 5, - ACTIONS(231), 1, + [5131] = 5, + ACTIONS(421), 1, anon_sym_COMMA, - STATE(91), 1, + STATE(90), 1, sym__comma, - STATE(122), 1, + STATE(126), 1, aux_sym_declaration_list_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(416), 3, + ACTIONS(419), 3, anon_sym_RBRACE, anon_sym_DASH_GT, anon_sym_LF, - [5098] = 7, - ACTIONS(231), 1, - anon_sym_COMMA, - ACTIONS(418), 1, - anon_sym_RPAREN, - ACTIONS(420), 1, + [5150] = 6, + ACTIONS(424), 1, + anon_sym_RBRACE, + ACTIONS(426), 1, + anon_sym_EQ, + ACTIONS(428), 1, anon_sym_LF, - STATE(89), 1, - sym__comma, - STATE(112), 1, - aux_sym_template_declaration_arguments_repeat1, - STATE(188), 1, + STATE(4), 1, aux_sym__linebreak, + STATE(148), 1, + aux_sym_block_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5121] = 5, - ACTIONS(231), 1, - anon_sym_COMMA, - STATE(11), 1, - sym__comma, - STATE(119), 1, - aux_sym_assign_left_side_repeat1, + [5170] = 6, + ACTIONS(49), 1, + anon_sym_LF, + ACTIONS(430), 1, + sym_identifier, + ACTIONS(432), 1, + anon_sym_RPAREN, + STATE(25), 1, + aux_sym__linebreak, + STATE(122), 1, + sym_template_arg, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(422), 3, - anon_sym_RBRACE, + [5190] = 6, + ACTIONS(426), 1, anon_sym_EQ, + ACTIONS(434), 1, + anon_sym_RBRACE, + ACTIONS(436), 1, anon_sym_LF, - [5140] = 2, + STATE(7), 1, + aux_sym__linebreak, + STATE(155), 1, + aux_sym_block_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(424), 5, - anon_sym_RPAREN, - anon_sym_LBRACK, - sym_identifier, - anon_sym_COMMA, - anon_sym_LF, - [5152] = 5, - ACTIONS(428), 1, + [5210] = 5, + ACTIONS(440), 1, anon_sym_COMMA, STATE(89), 1, sym__comma, - STATE(128), 1, + STATE(130), 1, aux_sym_template_declaration_arguments_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(426), 2, + ACTIONS(438), 2, anon_sym_RPAREN, anon_sym_LF, - [5170] = 6, - ACTIONS(49), 1, - anon_sym_LF, - ACTIONS(431), 1, - sym_identifier, - ACTIONS(433), 1, - anon_sym_RPAREN, - STATE(38), 1, - aux_sym__linebreak, - STATE(113), 1, - sym_template_arg, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, - [5190] = 4, + [5228] = 4, ACTIONS(102), 1, anon_sym_LBRACK, - STATE(127), 1, + STATE(134), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(435), 3, + ACTIONS(443), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_LF, - [5206] = 5, - ACTIONS(439), 1, + [5244] = 5, + ACTIONS(447), 1, anon_sym_COMMA, - STATE(131), 1, + STATE(132), 1, aux_sym_template_args_repeat1, STATE(193), 1, sym__comma, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(437), 2, + ACTIONS(445), 2, anon_sym_RPAREN, anon_sym_LF, - [5224] = 6, - ACTIONS(442), 1, - anon_sym_RBRACE, - ACTIONS(444), 1, - anon_sym_EQ, - ACTIONS(446), 1, + [5262] = 6, + ACTIONS(430), 1, + sym_identifier, + ACTIONS(450), 1, + anon_sym_RPAREN, + ACTIONS(452), 1, anon_sym_LF, - STATE(4), 1, + STATE(115), 1, + sym_template_arg, + STATE(128), 1, aux_sym__linebreak, - STATE(148), 1, - aux_sym_block_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5244] = 6, - ACTIONS(444), 1, - anon_sym_EQ, - ACTIONS(448), 1, - anon_sym_RBRACE, - ACTIONS(450), 1, - anon_sym_LF, - STATE(6), 1, - aux_sym__linebreak, - STATE(155), 1, - aux_sym_block_repeat1, + [5282] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5264] = 6, - ACTIONS(431), 1, - sym_identifier, - ACTIONS(452), 1, + ACTIONS(454), 5, anon_sym_RPAREN, - ACTIONS(454), 1, + anon_sym_LBRACK, + sym_identifier, + anon_sym_COMMA, anon_sym_LF, - STATE(116), 1, - sym_template_arg, - STATE(129), 1, - aux_sym__linebreak, + [5294] = 4, + ACTIONS(17), 1, + anon_sym_LBRACE, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5284] = 2, + ACTIONS(456), 2, + anon_sym_when, + anon_sym_if, + STATE(200), 2, + sym_block, + sym_if_statement, + [5310] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(456), 4, + ACTIONS(458), 4, ts_builtin_sym_end, anon_sym_RBRACE, anon_sym_else, anon_sym_LF, - [5295] = 2, + [5321] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(458), 4, + ACTIONS(460), 4, anon_sym_RBRACE, anon_sym_DASH_GT, anon_sym_COMMA, anon_sym_LF, - [5306] = 2, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, - ACTIONS(460), 4, - ts_builtin_sym_end, - anon_sym_RBRACE, - anon_sym_else, - anon_sym_LF, - [5317] = 2, + [5332] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -6457,7 +6495,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_else, anon_sym_LF, - [5328] = 5, + [5343] = 5, ACTIONS(464), 1, anon_sym_RBRACE, ACTIONS(466), 1, @@ -6469,7 +6507,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5345] = 2, + [5360] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -6478,7 +6516,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_else, anon_sym_LF, - [5356] = 4, + [5371] = 4, ACTIONS(471), 1, anon_sym_COLON, STATE(197), 1, @@ -6489,7 +6527,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(469), 2, anon_sym_RBRACE, anon_sym_LF, - [5371] = 2, + [5386] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -6498,22 +6536,22 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_EQ, anon_sym_COMMA, anon_sym_LF, - [5382] = 5, + [5397] = 5, ACTIONS(475), 1, ts_builtin_sym_end, ACTIONS(477), 1, anon_sym_LF, - STATE(93), 1, + STATE(92), 1, aux_sym__linebreak, STATE(146), 1, aux_sym_source_file_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5399] = 5, - ACTIONS(442), 1, + [5414] = 5, + ACTIONS(424), 1, anon_sym_RBRACE, - ACTIONS(446), 1, + ACTIONS(428), 1, anon_sym_LF, STATE(4), 1, aux_sym__linebreak, @@ -6522,7 +6560,7 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5416] = 2, + [5431] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -6531,19 +6569,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_else, anon_sym_LF, - [5427] = 5, + [5442] = 5, ACTIONS(481), 1, ts_builtin_sym_end, ACTIONS(483), 1, anon_sym_LF, - STATE(96), 1, + STATE(95), 1, aux_sym__linebreak, STATE(153), 1, aux_sym_source_file_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5444] = 5, + [5459] = 5, ACTIONS(485), 1, anon_sym_RBRACE, ACTIONS(487), 1, @@ -6555,49 +6593,49 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5461] = 5, + [5476] = 5, ACTIONS(489), 1, anon_sym_RBRACE, ACTIONS(491), 1, anon_sym_LF, - STATE(7), 1, + STATE(9), 1, aux_sym__linebreak, STATE(139), 1, aux_sym_block_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5478] = 5, + [5493] = 5, ACTIONS(493), 1, ts_builtin_sym_end, ACTIONS(495), 1, anon_sym_LF, - STATE(95), 1, + STATE(96), 1, aux_sym__linebreak, STATE(156), 1, aux_sym_source_file_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5495] = 2, + [5510] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(225), 4, + ACTIONS(229), 4, anon_sym_RBRACE, anon_sym_EQ, anon_sym_COMMA, anon_sym_LF, - [5506] = 2, + [5521] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(221), 4, + ACTIONS(225), 4, anon_sym_RBRACE, anon_sym_EQ, anon_sym_COMMA, anon_sym_LF, - [5517] = 2, + [5532] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -6606,79 +6644,79 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_else, anon_sym_LF, - [5528] = 5, + [5543] = 5, ACTIONS(499), 1, ts_builtin_sym_end, ACTIONS(501), 1, anon_sym_LF, - STATE(98), 1, + STATE(97), 1, aux_sym__linebreak, STATE(153), 1, aux_sym_source_file_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5545] = 5, + [5560] = 5, ACTIONS(504), 1, anon_sym_RBRACE, ACTIONS(506), 1, anon_sym_LF, - STATE(8), 1, + STATE(6), 1, aux_sym__linebreak, STATE(139), 1, aux_sym_block_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5562] = 5, + [5577] = 5, ACTIONS(508), 1, anon_sym_RBRACE, ACTIONS(510), 1, anon_sym_LF, - STATE(9), 1, + STATE(8), 1, aux_sym__linebreak, STATE(139), 1, aux_sym_block_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5579] = 5, + [5594] = 5, ACTIONS(512), 1, ts_builtin_sym_end, ACTIONS(514), 1, anon_sym_LF, - STATE(94), 1, + STATE(93), 1, aux_sym__linebreak, STATE(153), 1, aux_sym_source_file_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5596] = 5, + [5611] = 5, ACTIONS(17), 1, anon_sym_LBRACE, ACTIONS(516), 1, anon_sym_POUND_LPAREN, - STATE(194), 1, + STATE(195), 1, sym_template_declaration_arguments, STATE(205), 1, sym_block, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5613] = 5, + [5628] = 5, ACTIONS(17), 1, anon_sym_LBRACE, ACTIONS(516), 1, anon_sym_POUND_LPAREN, - STATE(204), 1, + STATE(199), 1, sym_template_declaration_arguments, - STATE(207), 1, + STATE(206), 1, sym_block, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5630] = 2, + [5645] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -6687,28 +6725,29 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_else, anon_sym_LF, - [5641] = 4, - ACTIONS(17), 1, - anon_sym_LBRACE, - ACTIONS(520), 1, - anon_sym_if, + [5656] = 5, + ACTIONS(434), 1, + anon_sym_RBRACE, + ACTIONS(436), 1, + anon_sym_LF, + STATE(7), 1, + aux_sym__linebreak, + STATE(154), 1, + aux_sym_block_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - STATE(199), 2, - sym_block, - sym_if_statement, - [5656] = 3, - ACTIONS(524), 1, + [5673] = 3, + ACTIONS(522), 1, anon_sym_COLON, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(522), 3, + ACTIONS(520), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_LF, - [5669] = 4, + [5686] = 4, ACTIONS(319), 1, anon_sym_DASH_GT, STATE(202), 1, @@ -6716,19 +6755,19 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(526), 2, + ACTIONS(524), 2, anon_sym_RBRACE, anon_sym_LF, - [5684] = 2, + [5701] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(528), 4, + ACTIONS(526), 4, ts_builtin_sym_end, anon_sym_RBRACE, anon_sym_else, anon_sym_LF, - [5695] = 2, + [5712] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -6737,46 +6776,57 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RBRACE, anon_sym_else, anon_sym_LF, - [5706] = 2, + [5723] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(530), 4, + ACTIONS(526), 4, ts_builtin_sym_end, anon_sym_RBRACE, anon_sym_else, anon_sym_LF, - [5717] = 5, - ACTIONS(231), 1, + [5734] = 5, + ACTIONS(223), 1, anon_sym_COMMA, - ACTIONS(532), 1, + ACTIONS(530), 1, anon_sym_RPAREN, - STATE(73), 1, + STATE(75), 1, sym__comma, STATE(171), 1, aux_sym_parenthesis_expression_list_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5734] = 2, + [5751] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(534), 4, + ACTIONS(532), 4, ts_builtin_sym_end, anon_sym_RBRACE, anon_sym_else, anon_sym_LF, - [5745] = 2, + [5762] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(534), 4, + ACTIONS(532), 4, ts_builtin_sym_end, anon_sym_RBRACE, anon_sym_else, anon_sym_LF, - [5756] = 4, + [5773] = 4, + ACTIONS(11), 1, + anon_sym_const, + STATE(224), 1, + sym_const_and_type, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + ACTIONS(534), 2, + anon_sym_module, + anon_sym_struct, + [5788] = 4, ACTIONS(319), 1, anon_sym_DASH_GT, STATE(210), 1, @@ -6787,99 +6837,85 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(536), 2, anon_sym_RBRACE, anon_sym_LF, - [5771] = 4, - ACTIONS(11), 1, - anon_sym_const, - STATE(221), 1, - sym_const_and_type, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, - ACTIONS(538), 2, - anon_sym_module, - anon_sym_struct, - [5786] = 5, - ACTIONS(540), 1, + [5803] = 5, + ACTIONS(538), 1, anon_sym_RPAREN, - ACTIONS(542), 1, + ACTIONS(540), 1, anon_sym_COMMA, - STATE(73), 1, + STATE(75), 1, sym__comma, STATE(171), 1, aux_sym_parenthesis_expression_list_repeat1, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5803] = 2, + [5820] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(545), 4, + ACTIONS(543), 4, ts_builtin_sym_end, anon_sym_RBRACE, anon_sym_else, anon_sym_LF, - [5814] = 2, + [5831] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(545), 4, + ACTIONS(543), 4, ts_builtin_sym_end, anon_sym_RBRACE, anon_sym_else, anon_sym_LF, - [5825] = 5, - ACTIONS(448), 1, - anon_sym_RBRACE, - ACTIONS(450), 1, - anon_sym_LF, - STATE(6), 1, - aux_sym__linebreak, - STATE(154), 1, - aux_sym_block_repeat1, + [5842] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5842] = 4, - ACTIONS(339), 1, + ACTIONS(545), 4, + ts_builtin_sym_end, + anon_sym_RBRACE, + anon_sym_else, anon_sym_LF, - ACTIONS(547), 1, - anon_sym_RPAREN, - STATE(102), 1, - aux_sym__linebreak, + [5853] = 3, + ACTIONS(549), 1, + anon_sym_else, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5856] = 4, + ACTIONS(547), 2, + anon_sym_RBRACE, + anon_sym_LF, + [5865] = 4, ACTIONS(339), 1, anon_sym_LF, - ACTIONS(549), 1, + ACTIONS(551), 1, anon_sym_RPAREN, - STATE(102), 1, + STATE(98), 1, aux_sym__linebreak, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5870] = 3, + [5879] = 4, + ACTIONS(102), 1, + anon_sym_LBRACK, ACTIONS(553), 1, - anon_sym_else, + sym_identifier, + STATE(134), 1, + sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(551), 2, - anon_sym_RBRACE, + [5893] = 4, + ACTIONS(339), 1, anon_sym_LF, - [5882] = 4, - ACTIONS(102), 1, - anon_sym_LBRACK, ACTIONS(555), 1, - sym_identifier, - STATE(127), 1, - sym_array_bracket_expression, + anon_sym_RPAREN, + STATE(98), 1, + aux_sym__linebreak, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5896] = 2, + [5907] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, @@ -6887,116 +6923,116 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_RPAREN, anon_sym_COMMA, anon_sym_LF, - [5906] = 4, - ACTIONS(339), 1, - anon_sym_LF, - ACTIONS(559), 1, - anon_sym_RPAREN, - STATE(102), 1, - aux_sym__linebreak, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, - [5920] = 4, + [5917] = 4, ACTIONS(102), 1, anon_sym_LBRACK, - ACTIONS(561), 1, + ACTIONS(559), 1, sym_identifier, - STATE(127), 1, + STATE(134), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5934] = 4, + [5931] = 4, ACTIONS(102), 1, anon_sym_LBRACK, - ACTIONS(563), 1, + ACTIONS(561), 1, sym_identifier, - STATE(127), 1, + STATE(134), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5948] = 4, + [5945] = 4, ACTIONS(102), 1, anon_sym_LBRACK, - ACTIONS(565), 1, + ACTIONS(563), 1, sym_identifier, - STATE(127), 1, + STATE(134), 1, sym_array_bracket_expression, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5962] = 4, + [5959] = 4, ACTIONS(339), 1, anon_sym_LF, - ACTIONS(567), 1, + ACTIONS(565), 1, anon_sym_RPAREN, - STATE(102), 1, + STATE(98), 1, aux_sym__linebreak, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [5976] = 2, + [5973] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - ACTIONS(569), 3, + ACTIONS(567), 3, anon_sym_RPAREN, anon_sym_COMMA, anon_sym_LF, - [5986] = 4, + [5983] = 4, ACTIONS(339), 1, anon_sym_LF, - ACTIONS(571), 1, + ACTIONS(569), 1, anon_sym_RPAREN, - STATE(102), 1, + STATE(98), 1, aux_sym__linebreak, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6000] = 4, + [5997] = 4, ACTIONS(339), 1, anon_sym_LF, - ACTIONS(573), 1, + ACTIONS(571), 1, anon_sym_RPAREN, - STATE(102), 1, + STATE(98), 1, aux_sym__linebreak, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6014] = 4, + [6011] = 4, ACTIONS(339), 1, anon_sym_LF, - ACTIONS(575), 1, + ACTIONS(573), 1, anon_sym_RPAREN, - STATE(102), 1, + STATE(98), 1, aux_sym__linebreak, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6028] = 4, + [6025] = 4, + ACTIONS(102), 1, + anon_sym_LBRACK, + ACTIONS(575), 1, + sym_identifier, + STATE(134), 1, + sym_array_bracket_expression, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + [6039] = 4, ACTIONS(339), 1, anon_sym_LF, ACTIONS(577), 1, anon_sym_RPAREN, - STATE(102), 1, + STATE(98), 1, aux_sym__linebreak, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6042] = 4, - ACTIONS(102), 1, - anon_sym_LBRACK, + [6053] = 4, + ACTIONS(339), 1, + anon_sym_LF, ACTIONS(579), 1, - sym_identifier, - STATE(127), 1, - sym_array_bracket_expression, + anon_sym_RPAREN, + STATE(98), 1, + aux_sym__linebreak, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6056] = 3, - ACTIONS(444), 1, + [6067] = 3, + ACTIONS(426), 1, anon_sym_EQ, ACTIONS(3), 2, sym_single_line_comment, @@ -7004,29 +7040,21 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(581), 2, anon_sym_RBRACE, anon_sym_LF, - [6068] = 2, + [6079] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(583), 2, ts_builtin_sym_end, anon_sym_LF, - [6077] = 3, - ACTIONS(431), 1, + [6088] = 3, + ACTIONS(430), 1, sym_identifier, STATE(179), 1, sym_template_arg, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6088] = 3, - ACTIONS(17), 1, - anon_sym_LBRACE, - STATE(195), 1, - sym_block, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, [6099] = 2, ACTIONS(3), 2, sym_single_line_comment, @@ -7035,222 +7063,230 @@ static const uint16_t ts_small_parse_table[] = { ts_builtin_sym_end, anon_sym_LF, [6108] = 3, - ACTIONS(244), 1, + ACTIONS(17), 1, + anon_sym_LBRACE, + STATE(194), 1, + sym_block, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + [6119] = 3, + ACTIONS(248), 1, sym_identifier, STATE(15), 1, sym_namespace_list, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6119] = 2, + [6130] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(587), 2, anon_sym_RBRACE, anon_sym_LF, - [6128] = 2, + [6139] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(589), 2, anon_sym_RBRACE, anon_sym_LF, - [6137] = 2, + [6148] = 3, + ACTIONS(17), 1, + anon_sym_LBRACE, + STATE(192), 1, + sym_block, + ACTIONS(3), 2, + sym_single_line_comment, + sym_multi_line_comment, + [6159] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(591), 2, anon_sym_RBRACE, anon_sym_LF, - [6146] = 2, + [6168] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(593), 2, anon_sym_RBRACE, anon_sym_LF, - [6155] = 2, + [6177] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(595), 2, anon_sym_RBRACE, anon_sym_LF, - [6164] = 2, + [6186] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(597), 2, anon_sym_RBRACE, anon_sym_LF, - [6173] = 2, + [6195] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(599), 2, anon_sym_RBRACE, anon_sym_LF, - [6182] = 3, - ACTIONS(17), 1, - anon_sym_LBRACE, - STATE(192), 1, - sym_block, - ACTIONS(3), 2, - sym_single_line_comment, - sym_multi_line_comment, - [6193] = 2, + [6204] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(601), 2, ts_builtin_sym_end, anon_sym_LF, - [6202] = 2, + [6213] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(603), 2, ts_builtin_sym_end, anon_sym_LF, - [6211] = 2, + [6222] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(605), 2, ts_builtin_sym_end, anon_sym_LF, - [6220] = 2, + [6231] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(607), 2, anon_sym_RBRACE, anon_sym_LF, - [6229] = 2, + [6240] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(581), 2, anon_sym_RBRACE, anon_sym_LF, - [6238] = 2, + [6249] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(609), 2, anon_sym_RBRACE, anon_sym_LF, - [6247] = 2, + [6258] = 2, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, ACTIONS(611), 2, anon_sym_RBRACE, anon_sym_LF, - [6256] = 2, + [6267] = 2, ACTIONS(613), 1, - sym_identifier, + anon_sym_LBRACE, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6264] = 2, + [6275] = 2, ACTIONS(615), 1, - anon_sym_LBRACE, + anon_sym_in, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6272] = 2, + [6283] = 2, ACTIONS(617), 1, - sym_identifier, + anon_sym_LBRACE, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6280] = 2, + [6291] = 2, ACTIONS(619), 1, - anon_sym_LBRACE, + sym_identifier, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6288] = 2, + [6299] = 2, ACTIONS(621), 1, anon_sym_LBRACE, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6296] = 2, + [6307] = 2, ACTIONS(623), 1, - sym_identifier, + anon_sym_LBRACE, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6304] = 2, + [6315] = 2, ACTIONS(625), 1, - anon_sym_in, + anon_sym_LBRACE, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6312] = 2, + [6323] = 2, ACTIONS(627), 1, anon_sym_LBRACE, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6320] = 2, + [6331] = 2, ACTIONS(629), 1, anon_sym_LBRACE, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6328] = 2, + [6339] = 2, ACTIONS(631), 1, sym_identifier, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6336] = 2, + [6347] = 2, ACTIONS(633), 1, anon_sym_LBRACE, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6344] = 2, + [6355] = 2, ACTIONS(635), 1, - anon_sym_LBRACE, + sym_identifier, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6352] = 2, + [6363] = 2, ACTIONS(637), 1, - anon_sym_LBRACE, + sym_identifier, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6360] = 2, + [6371] = 2, ACTIONS(639), 1, - sym_identifier, + ts_builtin_sym_end, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6368] = 2, + [6379] = 2, ACTIONS(641), 1, - ts_builtin_sym_end, + sym_identifier, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6376] = 2, + [6387] = 2, ACTIONS(643), 1, anon_sym_LBRACE, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6384] = 2, + [6395] = 2, ACTIONS(645), 1, anon_sym_LBRACE, ACTIONS(3), 2, sym_single_line_comment, sym_multi_line_comment, - [6392] = 2, + [6403] = 2, ACTIONS(647), 1, sym_identifier, ACTIONS(3), 2, @@ -7260,233 +7296,233 @@ static const uint16_t ts_small_parse_table[] = { static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(2)] = 0, - [SMALL_STATE(3)] = 106, - [SMALL_STATE(4)] = 212, - [SMALL_STATE(5)] = 318, - [SMALL_STATE(6)] = 424, - [SMALL_STATE(7)] = 530, - [SMALL_STATE(8)] = 636, - [SMALL_STATE(9)] = 742, - [SMALL_STATE(10)] = 848, - [SMALL_STATE(11)] = 951, - [SMALL_STATE(12)] = 1022, - [SMALL_STATE(13)] = 1066, - [SMALL_STATE(14)] = 1110, - [SMALL_STATE(15)] = 1154, - [SMALL_STATE(16)] = 1197, - [SMALL_STATE(17)] = 1236, - [SMALL_STATE(18)] = 1279, - [SMALL_STATE(19)] = 1327, - [SMALL_STATE(20)] = 1383, - [SMALL_STATE(21)] = 1441, - [SMALL_STATE(22)] = 1489, - [SMALL_STATE(23)] = 1541, - [SMALL_STATE(24)] = 1603, - [SMALL_STATE(25)] = 1663, - [SMALL_STATE(26)] = 1700, - [SMALL_STATE(27)] = 1737, - [SMALL_STATE(28)] = 1774, - [SMALL_STATE(29)] = 1811, - [SMALL_STATE(30)] = 1848, - [SMALL_STATE(31)] = 1885, - [SMALL_STATE(32)] = 1922, - [SMALL_STATE(33)] = 1959, - [SMALL_STATE(34)] = 1996, - [SMALL_STATE(35)] = 2033, - [SMALL_STATE(36)] = 2070, - [SMALL_STATE(37)] = 2107, - [SMALL_STATE(38)] = 2144, - [SMALL_STATE(39)] = 2184, - [SMALL_STATE(40)] = 2220, - [SMALL_STATE(41)] = 2276, - [SMALL_STATE(42)] = 2312, - [SMALL_STATE(43)] = 2348, - [SMALL_STATE(44)] = 2384, - [SMALL_STATE(45)] = 2420, - [SMALL_STATE(46)] = 2456, - [SMALL_STATE(47)] = 2492, - [SMALL_STATE(48)] = 2555, - [SMALL_STATE(49)] = 2613, - [SMALL_STATE(50)] = 2671, - [SMALL_STATE(51)] = 2733, - [SMALL_STATE(52)] = 2788, - [SMALL_STATE(53)] = 2823, - [SMALL_STATE(54)] = 2865, - [SMALL_STATE(55)] = 2907, - [SMALL_STATE(56)] = 2961, - [SMALL_STATE(57)] = 3017, - [SMALL_STATE(58)] = 3073, - [SMALL_STATE(59)] = 3127, - [SMALL_STATE(60)] = 3180, - [SMALL_STATE(61)] = 3219, - [SMALL_STATE(62)] = 3258, - [SMALL_STATE(63)] = 3297, - [SMALL_STATE(64)] = 3336, - [SMALL_STATE(65)] = 3375, - [SMALL_STATE(66)] = 3414, - [SMALL_STATE(67)] = 3453, - [SMALL_STATE(68)] = 3492, - [SMALL_STATE(69)] = 3531, - [SMALL_STATE(70)] = 3570, - [SMALL_STATE(71)] = 3623, - [SMALL_STATE(72)] = 3676, - [SMALL_STATE(73)] = 3715, - [SMALL_STATE(74)] = 3754, - [SMALL_STATE(75)] = 3793, - [SMALL_STATE(76)] = 3832, - [SMALL_STATE(77)] = 3871, - [SMALL_STATE(78)] = 3903, - [SMALL_STATE(79)] = 3935, - [SMALL_STATE(80)] = 3965, - [SMALL_STATE(81)] = 3995, - [SMALL_STATE(82)] = 4020, - [SMALL_STATE(83)] = 4065, - [SMALL_STATE(84)] = 4110, - [SMALL_STATE(85)] = 4150, - [SMALL_STATE(86)] = 4190, - [SMALL_STATE(87)] = 4214, - [SMALL_STATE(88)] = 4253, - [SMALL_STATE(89)] = 4292, - [SMALL_STATE(90)] = 4323, - [SMALL_STATE(91)] = 4353, - [SMALL_STATE(92)] = 4383, - [SMALL_STATE(93)] = 4414, - [SMALL_STATE(94)] = 4445, - [SMALL_STATE(95)] = 4476, - [SMALL_STATE(96)] = 4507, - [SMALL_STATE(97)] = 4538, - [SMALL_STATE(98)] = 4558, - [SMALL_STATE(99)] = 4586, - [SMALL_STATE(100)] = 4606, - [SMALL_STATE(101)] = 4626, - [SMALL_STATE(102)] = 4646, - [SMALL_STATE(103)] = 4666, - [SMALL_STATE(104)] = 4687, - [SMALL_STATE(105)] = 4710, - [SMALL_STATE(106)] = 4724, - [SMALL_STATE(107)] = 4738, - [SMALL_STATE(108)] = 4752, - [SMALL_STATE(109)] = 4766, - [SMALL_STATE(110)] = 4785, - [SMALL_STATE(111)] = 4804, - [SMALL_STATE(112)] = 4827, - [SMALL_STATE(113)] = 4850, - [SMALL_STATE(114)] = 4873, - [SMALL_STATE(115)] = 4892, - [SMALL_STATE(116)] = 4915, - [SMALL_STATE(117)] = 4938, - [SMALL_STATE(118)] = 4957, - [SMALL_STATE(119)] = 4980, - [SMALL_STATE(120)] = 4999, - [SMALL_STATE(121)] = 5018, - [SMALL_STATE(122)] = 5037, - [SMALL_STATE(123)] = 5056, - [SMALL_STATE(124)] = 5079, - [SMALL_STATE(125)] = 5098, - [SMALL_STATE(126)] = 5121, - [SMALL_STATE(127)] = 5140, - [SMALL_STATE(128)] = 5152, - [SMALL_STATE(129)] = 5170, - [SMALL_STATE(130)] = 5190, - [SMALL_STATE(131)] = 5206, - [SMALL_STATE(132)] = 5224, - [SMALL_STATE(133)] = 5244, - [SMALL_STATE(134)] = 5264, - [SMALL_STATE(135)] = 5284, - [SMALL_STATE(136)] = 5295, - [SMALL_STATE(137)] = 5306, - [SMALL_STATE(138)] = 5317, - [SMALL_STATE(139)] = 5328, - [SMALL_STATE(140)] = 5345, - [SMALL_STATE(141)] = 5356, - [SMALL_STATE(142)] = 5371, - [SMALL_STATE(143)] = 5382, - [SMALL_STATE(144)] = 5399, - [SMALL_STATE(145)] = 5416, - [SMALL_STATE(146)] = 5427, - [SMALL_STATE(147)] = 5444, - [SMALL_STATE(148)] = 5461, - [SMALL_STATE(149)] = 5478, - [SMALL_STATE(150)] = 5495, - [SMALL_STATE(151)] = 5506, - [SMALL_STATE(152)] = 5517, - [SMALL_STATE(153)] = 5528, - [SMALL_STATE(154)] = 5545, - [SMALL_STATE(155)] = 5562, - [SMALL_STATE(156)] = 5579, - [SMALL_STATE(157)] = 5596, - [SMALL_STATE(158)] = 5613, - [SMALL_STATE(159)] = 5630, - [SMALL_STATE(160)] = 5641, - [SMALL_STATE(161)] = 5656, - [SMALL_STATE(162)] = 5669, - [SMALL_STATE(163)] = 5684, - [SMALL_STATE(164)] = 5695, - [SMALL_STATE(165)] = 5706, - [SMALL_STATE(166)] = 5717, - [SMALL_STATE(167)] = 5734, - [SMALL_STATE(168)] = 5745, - [SMALL_STATE(169)] = 5756, - [SMALL_STATE(170)] = 5771, - [SMALL_STATE(171)] = 5786, - [SMALL_STATE(172)] = 5803, - [SMALL_STATE(173)] = 5814, - [SMALL_STATE(174)] = 5825, - [SMALL_STATE(175)] = 5842, - [SMALL_STATE(176)] = 5856, - [SMALL_STATE(177)] = 5870, - [SMALL_STATE(178)] = 5882, - [SMALL_STATE(179)] = 5896, - [SMALL_STATE(180)] = 5906, - [SMALL_STATE(181)] = 5920, - [SMALL_STATE(182)] = 5934, - [SMALL_STATE(183)] = 5948, - [SMALL_STATE(184)] = 5962, - [SMALL_STATE(185)] = 5976, - [SMALL_STATE(186)] = 5986, - [SMALL_STATE(187)] = 6000, - [SMALL_STATE(188)] = 6014, - [SMALL_STATE(189)] = 6028, - [SMALL_STATE(190)] = 6042, - [SMALL_STATE(191)] = 6056, - [SMALL_STATE(192)] = 6068, - [SMALL_STATE(193)] = 6077, - [SMALL_STATE(194)] = 6088, - [SMALL_STATE(195)] = 6099, - [SMALL_STATE(196)] = 6108, - [SMALL_STATE(197)] = 6119, - [SMALL_STATE(198)] = 6128, - [SMALL_STATE(199)] = 6137, - [SMALL_STATE(200)] = 6146, - [SMALL_STATE(201)] = 6155, - [SMALL_STATE(202)] = 6164, - [SMALL_STATE(203)] = 6173, - [SMALL_STATE(204)] = 6182, - [SMALL_STATE(205)] = 6193, - [SMALL_STATE(206)] = 6202, - [SMALL_STATE(207)] = 6211, - [SMALL_STATE(208)] = 6220, - [SMALL_STATE(209)] = 6229, - [SMALL_STATE(210)] = 6238, - [SMALL_STATE(211)] = 6247, - [SMALL_STATE(212)] = 6256, - [SMALL_STATE(213)] = 6264, - [SMALL_STATE(214)] = 6272, - [SMALL_STATE(215)] = 6280, - [SMALL_STATE(216)] = 6288, - [SMALL_STATE(217)] = 6296, - [SMALL_STATE(218)] = 6304, - [SMALL_STATE(219)] = 6312, - [SMALL_STATE(220)] = 6320, - [SMALL_STATE(221)] = 6328, - [SMALL_STATE(222)] = 6336, - [SMALL_STATE(223)] = 6344, - [SMALL_STATE(224)] = 6352, - [SMALL_STATE(225)] = 6360, - [SMALL_STATE(226)] = 6368, - [SMALL_STATE(227)] = 6376, - [SMALL_STATE(228)] = 6384, - [SMALL_STATE(229)] = 6392, + [SMALL_STATE(3)] = 107, + [SMALL_STATE(4)] = 214, + [SMALL_STATE(5)] = 321, + [SMALL_STATE(6)] = 428, + [SMALL_STATE(7)] = 535, + [SMALL_STATE(8)] = 642, + [SMALL_STATE(9)] = 749, + [SMALL_STATE(10)] = 856, + [SMALL_STATE(11)] = 960, + [SMALL_STATE(12)] = 1031, + [SMALL_STATE(13)] = 1075, + [SMALL_STATE(14)] = 1119, + [SMALL_STATE(15)] = 1163, + [SMALL_STATE(16)] = 1206, + [SMALL_STATE(17)] = 1245, + [SMALL_STATE(18)] = 1288, + [SMALL_STATE(19)] = 1336, + [SMALL_STATE(20)] = 1392, + [SMALL_STATE(21)] = 1450, + [SMALL_STATE(22)] = 1498, + [SMALL_STATE(23)] = 1550, + [SMALL_STATE(24)] = 1612, + [SMALL_STATE(25)] = 1672, + [SMALL_STATE(26)] = 1713, + [SMALL_STATE(27)] = 1750, + [SMALL_STATE(28)] = 1787, + [SMALL_STATE(29)] = 1824, + [SMALL_STATE(30)] = 1861, + [SMALL_STATE(31)] = 1898, + [SMALL_STATE(32)] = 1935, + [SMALL_STATE(33)] = 1972, + [SMALL_STATE(34)] = 2009, + [SMALL_STATE(35)] = 2046, + [SMALL_STATE(36)] = 2083, + [SMALL_STATE(37)] = 2120, + [SMALL_STATE(38)] = 2157, + [SMALL_STATE(39)] = 2194, + [SMALL_STATE(40)] = 2230, + [SMALL_STATE(41)] = 2266, + [SMALL_STATE(42)] = 2302, + [SMALL_STATE(43)] = 2338, + [SMALL_STATE(44)] = 2374, + [SMALL_STATE(45)] = 2410, + [SMALL_STATE(46)] = 2446, + [SMALL_STATE(47)] = 2502, + [SMALL_STATE(48)] = 2565, + [SMALL_STATE(49)] = 2627, + [SMALL_STATE(50)] = 2685, + [SMALL_STATE(51)] = 2743, + [SMALL_STATE(52)] = 2778, + [SMALL_STATE(53)] = 2833, + [SMALL_STATE(54)] = 2889, + [SMALL_STATE(55)] = 2931, + [SMALL_STATE(56)] = 2973, + [SMALL_STATE(57)] = 3029, + [SMALL_STATE(58)] = 3083, + [SMALL_STATE(59)] = 3137, + [SMALL_STATE(60)] = 3176, + [SMALL_STATE(61)] = 3215, + [SMALL_STATE(62)] = 3254, + [SMALL_STATE(63)] = 3293, + [SMALL_STATE(64)] = 3332, + [SMALL_STATE(65)] = 3371, + [SMALL_STATE(66)] = 3410, + [SMALL_STATE(67)] = 3449, + [SMALL_STATE(68)] = 3488, + [SMALL_STATE(69)] = 3527, + [SMALL_STATE(70)] = 3566, + [SMALL_STATE(71)] = 3605, + [SMALL_STATE(72)] = 3644, + [SMALL_STATE(73)] = 3683, + [SMALL_STATE(74)] = 3736, + [SMALL_STATE(75)] = 3789, + [SMALL_STATE(76)] = 3828, + [SMALL_STATE(77)] = 3881, + [SMALL_STATE(78)] = 3913, + [SMALL_STATE(79)] = 3945, + [SMALL_STATE(80)] = 3975, + [SMALL_STATE(81)] = 4005, + [SMALL_STATE(82)] = 4030, + [SMALL_STATE(83)] = 4075, + [SMALL_STATE(84)] = 4120, + [SMALL_STATE(85)] = 4160, + [SMALL_STATE(86)] = 4184, + [SMALL_STATE(87)] = 4224, + [SMALL_STATE(88)] = 4263, + [SMALL_STATE(89)] = 4302, + [SMALL_STATE(90)] = 4333, + [SMALL_STATE(91)] = 4363, + [SMALL_STATE(92)] = 4393, + [SMALL_STATE(93)] = 4424, + [SMALL_STATE(94)] = 4455, + [SMALL_STATE(95)] = 4486, + [SMALL_STATE(96)] = 4517, + [SMALL_STATE(97)] = 4548, + [SMALL_STATE(98)] = 4576, + [SMALL_STATE(99)] = 4596, + [SMALL_STATE(100)] = 4616, + [SMALL_STATE(101)] = 4636, + [SMALL_STATE(102)] = 4656, + [SMALL_STATE(103)] = 4676, + [SMALL_STATE(104)] = 4697, + [SMALL_STATE(105)] = 4720, + [SMALL_STATE(106)] = 4734, + [SMALL_STATE(107)] = 4748, + [SMALL_STATE(108)] = 4762, + [SMALL_STATE(109)] = 4776, + [SMALL_STATE(110)] = 4799, + [SMALL_STATE(111)] = 4818, + [SMALL_STATE(112)] = 4841, + [SMALL_STATE(113)] = 4860, + [SMALL_STATE(114)] = 4879, + [SMALL_STATE(115)] = 4898, + [SMALL_STATE(116)] = 4921, + [SMALL_STATE(117)] = 4944, + [SMALL_STATE(118)] = 4963, + [SMALL_STATE(119)] = 4986, + [SMALL_STATE(120)] = 5009, + [SMALL_STATE(121)] = 5028, + [SMALL_STATE(122)] = 5047, + [SMALL_STATE(123)] = 5070, + [SMALL_STATE(124)] = 5089, + [SMALL_STATE(125)] = 5108, + [SMALL_STATE(126)] = 5131, + [SMALL_STATE(127)] = 5150, + [SMALL_STATE(128)] = 5170, + [SMALL_STATE(129)] = 5190, + [SMALL_STATE(130)] = 5210, + [SMALL_STATE(131)] = 5228, + [SMALL_STATE(132)] = 5244, + [SMALL_STATE(133)] = 5262, + [SMALL_STATE(134)] = 5282, + [SMALL_STATE(135)] = 5294, + [SMALL_STATE(136)] = 5310, + [SMALL_STATE(137)] = 5321, + [SMALL_STATE(138)] = 5332, + [SMALL_STATE(139)] = 5343, + [SMALL_STATE(140)] = 5360, + [SMALL_STATE(141)] = 5371, + [SMALL_STATE(142)] = 5386, + [SMALL_STATE(143)] = 5397, + [SMALL_STATE(144)] = 5414, + [SMALL_STATE(145)] = 5431, + [SMALL_STATE(146)] = 5442, + [SMALL_STATE(147)] = 5459, + [SMALL_STATE(148)] = 5476, + [SMALL_STATE(149)] = 5493, + [SMALL_STATE(150)] = 5510, + [SMALL_STATE(151)] = 5521, + [SMALL_STATE(152)] = 5532, + [SMALL_STATE(153)] = 5543, + [SMALL_STATE(154)] = 5560, + [SMALL_STATE(155)] = 5577, + [SMALL_STATE(156)] = 5594, + [SMALL_STATE(157)] = 5611, + [SMALL_STATE(158)] = 5628, + [SMALL_STATE(159)] = 5645, + [SMALL_STATE(160)] = 5656, + [SMALL_STATE(161)] = 5673, + [SMALL_STATE(162)] = 5686, + [SMALL_STATE(163)] = 5701, + [SMALL_STATE(164)] = 5712, + [SMALL_STATE(165)] = 5723, + [SMALL_STATE(166)] = 5734, + [SMALL_STATE(167)] = 5751, + [SMALL_STATE(168)] = 5762, + [SMALL_STATE(169)] = 5773, + [SMALL_STATE(170)] = 5788, + [SMALL_STATE(171)] = 5803, + [SMALL_STATE(172)] = 5820, + [SMALL_STATE(173)] = 5831, + [SMALL_STATE(174)] = 5842, + [SMALL_STATE(175)] = 5853, + [SMALL_STATE(176)] = 5865, + [SMALL_STATE(177)] = 5879, + [SMALL_STATE(178)] = 5893, + [SMALL_STATE(179)] = 5907, + [SMALL_STATE(180)] = 5917, + [SMALL_STATE(181)] = 5931, + [SMALL_STATE(182)] = 5945, + [SMALL_STATE(183)] = 5959, + [SMALL_STATE(184)] = 5973, + [SMALL_STATE(185)] = 5983, + [SMALL_STATE(186)] = 5997, + [SMALL_STATE(187)] = 6011, + [SMALL_STATE(188)] = 6025, + [SMALL_STATE(189)] = 6039, + [SMALL_STATE(190)] = 6053, + [SMALL_STATE(191)] = 6067, + [SMALL_STATE(192)] = 6079, + [SMALL_STATE(193)] = 6088, + [SMALL_STATE(194)] = 6099, + [SMALL_STATE(195)] = 6108, + [SMALL_STATE(196)] = 6119, + [SMALL_STATE(197)] = 6130, + [SMALL_STATE(198)] = 6139, + [SMALL_STATE(199)] = 6148, + [SMALL_STATE(200)] = 6159, + [SMALL_STATE(201)] = 6168, + [SMALL_STATE(202)] = 6177, + [SMALL_STATE(203)] = 6186, + [SMALL_STATE(204)] = 6195, + [SMALL_STATE(205)] = 6204, + [SMALL_STATE(206)] = 6213, + [SMALL_STATE(207)] = 6222, + [SMALL_STATE(208)] = 6231, + [SMALL_STATE(209)] = 6240, + [SMALL_STATE(210)] = 6249, + [SMALL_STATE(211)] = 6258, + [SMALL_STATE(212)] = 6267, + [SMALL_STATE(213)] = 6275, + [SMALL_STATE(214)] = 6283, + [SMALL_STATE(215)] = 6291, + [SMALL_STATE(216)] = 6299, + [SMALL_STATE(217)] = 6307, + [SMALL_STATE(218)] = 6315, + [SMALL_STATE(219)] = 6323, + [SMALL_STATE(220)] = 6331, + [SMALL_STATE(221)] = 6339, + [SMALL_STATE(222)] = 6347, + [SMALL_STATE(223)] = 6355, + [SMALL_STATE(224)] = 6363, + [SMALL_STATE(225)] = 6371, + [SMALL_STATE(226)] = 6379, + [SMALL_STATE(227)] = 6387, + [SMALL_STATE(228)] = 6395, + [SMALL_STATE(229)] = 6403, }; static const TSParseActionEntry ts_parse_actions[] = { @@ -7494,44 +7530,44 @@ static const TSParseActionEntry ts_parse_actions[] = { [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT_EXTRA(), [5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0, 0, 0), - [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(170), - [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(225), - [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), - [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), + [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(169), + [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(223), + [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(124), + [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(12), [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), - [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(165), + [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(164), [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(81), - [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(86), - [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(61), - [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(90), - [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(229), - [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(214), + [23] = {.entry = {.count = 1, .reusable = false}}, SHIFT(85), + [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(66), + [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(91), + [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(226), + [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(215), [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(104), - [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(114), - [37] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), - [39] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), + [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(123), + [37] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), + [39] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), [41] = {.entry = {.count = 1, .reusable = true}}, SHIFT(196), - [43] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), + [43] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), [45] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159), - [49] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), - [51] = {.entry = {.count = 1, .reusable = true}}, SHIFT(137), + [49] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), + [51] = {.entry = {.count = 1, .reusable = true}}, SHIFT(174), [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163), - [55] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135), - [57] = {.entry = {.count = 1, .reusable = true}}, SHIFT(164), - [59] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172), - [61] = {.entry = {.count = 1, .reusable = true}}, SHIFT(173), + [55] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172), + [57] = {.entry = {.count = 1, .reusable = true}}, SHIFT(136), + [59] = {.entry = {.count = 1, .reusable = true}}, SHIFT(173), + [61] = {.entry = {.count = 1, .reusable = true}}, SHIFT(165), [63] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_namespace_list, 1, 0, 1), [65] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_namespace_list, 1, 0, 1), - [67] = {.entry = {.count = 1, .reusable = true}}, SHIFT(217), + [67] = {.entry = {.count = 1, .reusable = true}}, SHIFT(229), [69] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_namespace_list, 2, 0, 4), [71] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_namespace_list, 2, 0, 4), [73] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_namespace_list_repeat1, 2, 0, 10), [75] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_namespace_list_repeat1, 2, 0, 10), - [77] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_namespace_list_repeat1, 2, 0, 10), SHIFT_REPEAT(217), + [77] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_namespace_list_repeat1, 2, 0, 10), SHIFT_REPEAT(229), [80] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_global, 2, 0, 7), - [82] = {.entry = {.count = 1, .reusable = true}}, SHIFT(134), + [82] = {.entry = {.count = 1, .reusable = true}}, SHIFT(133), [84] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_global, 2, 0, 7), [86] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_namespace_list_repeat1, 2, 0, 5), [88] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_namespace_list_repeat1, 2, 0, 5), @@ -7539,184 +7575,184 @@ static const TSParseActionEntry ts_parse_actions[] = { [92] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_global, 1, 0, 3), [94] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unary_op, 2, 0, 21), [96] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unary_op, 2, 0, 21), - [98] = {.entry = {.count = 1, .reusable = false}}, SHIFT(212), - [100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), - [102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), + [98] = {.entry = {.count = 1, .reusable = false}}, SHIFT(221), + [100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), + [102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), [104] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_binary_op, 3, 0, 32), [106] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_binary_op, 3, 0, 32), - [108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), - [110] = {.entry = {.count = 1, .reusable = false}}, SHIFT(66), - [112] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), - [114] = {.entry = {.count = 1, .reusable = false}}, SHIFT(63), - [116] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), - [118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), - [120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), - [122] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 3, 0, 5), - [124] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 3, 0, 5), - [126] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 2, 0, 0), - [128] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 2, 0, 0), - [130] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 4, 0, 5), - [132] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 4, 0, 5), - [134] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 4, 0, 11), - [136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 4, 0, 11), - [138] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 4, 0, 28), - [140] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 4, 0, 28), - [142] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array_bracket_expression, 3, 0, 24), - [144] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_bracket_expression, 3, 0, 24), - [146] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 6, 0, 38), - [148] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 6, 0, 38), - [150] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 3, 0, 0), - [152] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 3, 0, 0), - [154] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_global, 2, 0, 9), - [156] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_global, 2, 0, 9), - [158] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_global, 3, 0, 17), - [160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_global, 3, 0, 17), - [162] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 5, 0, 11), - [164] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 5, 0, 11), - [166] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 5, 0, 28), - [168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 5, 0, 28), - [170] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 5, 0, 38), - [172] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 5, 0, 38), - [174] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__linebreak, 2, 0, 0), - [176] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__linebreak, 2, 0, 0), - [178] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__linebreak, 2, 0, 0), SHIFT_REPEAT(38), + [108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), + [110] = {.entry = {.count = 1, .reusable = false}}, SHIFT(65), + [112] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), + [114] = {.entry = {.count = 1, .reusable = false}}, SHIFT(60), + [116] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), + [118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), + [120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), + [122] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__linebreak, 2, 0, 0), + [124] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__linebreak, 2, 0, 0), + [126] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__linebreak, 2, 0, 0), SHIFT_REPEAT(25), + [129] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 4, 0, 5), + [131] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 4, 0, 5), + [133] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 2, 0, 0), + [135] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 2, 0, 0), + [137] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_global, 2, 0, 9), + [139] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_global, 2, 0, 9), + [141] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_global, 3, 0, 17), + [143] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_global, 3, 0, 17), + [145] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 4, 0, 11), + [147] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 4, 0, 11), + [149] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 4, 0, 28), + [151] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 4, 0, 28), + [153] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 5, 0, 28), + [155] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 5, 0, 28), + [157] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array_bracket_expression, 3, 0, 24), + [159] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_bracket_expression, 3, 0, 24), + [161] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 3, 0, 0), + [163] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 3, 0, 0), + [165] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 3, 0, 5), + [167] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 3, 0, 5), + [169] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 5, 0, 38), + [171] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 5, 0, 38), + [173] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 5, 0, 11), + [175] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 5, 0, 11), + [177] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_template_args, 6, 0, 38), + [179] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_args, 6, 0, 38), [181] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_func_call, 2, 0, 23), [183] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_func_call, 2, 0, 23), - [185] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), - [187] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_op, 2, 0, 8), - [189] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array_op, 2, 0, 8), - [191] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesis_expression, 3, 0, 24), - [193] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesis_expression, 3, 0, 24), - [195] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesis_expression_list, 2, 0, 0), - [197] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesis_expression_list, 2, 0, 0), - [199] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field_access, 3, 0, 33), - [201] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_field_access, 3, 0, 33), - [203] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesis_expression_list, 3, 0, 5), - [205] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesis_expression_list, 3, 0, 5), - [207] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesis_expression_list, 4, 0, 11), - [209] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesis_expression_list, 4, 0, 11), + [185] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_op, 2, 0, 8), + [187] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_array_op, 2, 0, 8), + [189] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesis_expression_list, 2, 0, 0), + [191] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesis_expression_list, 2, 0, 0), + [193] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_field_access, 3, 0, 33), + [195] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_field_access, 3, 0, 33), + [197] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesis_expression_list, 3, 0, 5), + [199] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesis_expression_list, 3, 0, 5), + [201] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesis_expression_list, 4, 0, 11), + [203] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesis_expression_list, 4, 0, 11), + [205] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_parenthesis_expression, 3, 0, 24), + [207] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_parenthesis_expression, 3, 0, 24), + [209] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), [211] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_latency_specifier, 2, 0, 24), [213] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_latency_specifier, 2, 0, 24), - [215] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), - [217] = {.entry = {.count = 1, .reusable = false}}, SHIFT(62), - [219] = {.entry = {.count = 1, .reusable = true}}, SHIFT(212), - [221] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_to, 2, 0, 22), - [223] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assign_to, 2, 0, 22), - [225] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_to, 1, 0, 14), - [227] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assign_to, 1, 0, 14), - [229] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), - [231] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), - [233] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_arg, 3, 0, 34), - [235] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type, 1, 0, 0), - [237] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression, 1, 0, 0), - [239] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expression, 1, 0, 0), - [241] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym__type, 1, 0, 0), REDUCE(sym__expression, 1, 0, 0), - [244] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), - [246] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), - [248] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), - [250] = {.entry = {.count = 1, .reusable = false}}, SHIFT(117), - [252] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [215] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), + [217] = {.entry = {.count = 1, .reusable = false}}, SHIFT(63), + [219] = {.entry = {.count = 1, .reusable = true}}, SHIFT(221), + [221] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), + [223] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [225] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_to, 2, 0, 22), + [227] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assign_to, 2, 0, 22), + [229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_to, 1, 0, 14), + [231] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assign_to, 1, 0, 14), + [233] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type, 1, 0, 0), + [235] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expression, 1, 0, 0), + [237] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__expression, 1, 0, 0), + [239] = {.entry = {.count = 2, .reusable = true}}, REDUCE(sym__type, 1, 0, 0), REDUCE(sym__expression, 1, 0, 0), + [242] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_arg, 3, 0, 34), + [244] = {.entry = {.count = 1, .reusable = false}}, SHIFT(110), + [246] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [248] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), + [250] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), + [252] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), [254] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_decl_assign_statement, 3, 0, 31), [256] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_parenthesis_expression_list_repeat1, 2, 0, 5), - [258] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), - [260] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), - [262] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), - [264] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [266] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), - [268] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), - [270] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), - [272] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), - [274] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), - [276] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), - [278] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), - [280] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), - [282] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), - [284] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), - [286] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), - [288] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), - [290] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), - [292] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [258] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [260] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [262] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), + [264] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [266] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [268] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), + [270] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), + [272] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [274] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [276] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), + [278] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [280] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), + [282] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), + [284] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), + [286] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [288] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), + [290] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [292] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), [294] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__comma, 2, 0, 0), [296] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comma, 2, 0, 0), [298] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__comma, 1, 0, 0), [300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__comma, 1, 0, 0), [302] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), - [304] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_write_modifiers, 1, 0, 15), - [306] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_write_modifiers, 1, 0, 15), - [308] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_write_modifiers_repeat1, 2, 0, 10), - [310] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_write_modifiers_repeat1, 2, 0, 10), SHIFT_REPEAT(81), - [313] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_write_modifiers_repeat1, 2, 0, 10), + [304] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_write_modifiers_repeat1, 2, 0, 10), + [306] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_write_modifiers_repeat1, 2, 0, 10), SHIFT_REPEAT(81), + [309] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_write_modifiers_repeat1, 2, 0, 10), + [311] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_write_modifiers, 1, 0, 15), + [313] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_write_modifiers, 1, 0, 15), [315] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_write_modifiers_repeat1, 1, 0, 1), [317] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_write_modifiers_repeat1, 1, 0, 1), [319] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), [321] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), [323] = {.entry = {.count = 1, .reusable = false}}, SHIFT(103), - [325] = {.entry = {.count = 1, .reusable = true}}, SHIFT(216), - [327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(219), - [329] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), - [331] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_write_modifiers, 1, 0, 1), - [333] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_write_modifiers, 1, 0, 1), + [325] = {.entry = {.count = 1, .reusable = true}}, SHIFT(219), + [327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(86), + [329] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_write_modifiers, 1, 0, 1), + [331] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_write_modifiers, 1, 0, 1), + [333] = {.entry = {.count = 1, .reusable = true}}, SHIFT(214), [335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), - [337] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1, 0, 0), - [339] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), - [341] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 2, 0, 1), - [343] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 4, 0, 11), - [345] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 3, 0, 5), - [347] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 3, 0, 4), - [349] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 3, 0, 26), - [351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), - [353] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 4, 0, 35), - [355] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 2, 0, 19), - [357] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 3, 0, 25), - [359] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__linebreak, 2, 0, 0), SHIFT_REPEAT(102), + [337] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 2, 0, 1), + [339] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [341] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 4, 0, 11), + [343] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1, 0, 0), + [345] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 3, 0, 4), + [347] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 3, 0, 5), + [349] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__linebreak, 2, 0, 0), SHIFT_REPEAT(98), + [352] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 3, 0, 26), + [354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), + [356] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 4, 0, 35), + [358] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 2, 0, 19), + [360] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 3, 0, 25), [362] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_type, 1, 0, 13), - [364] = {.entry = {.count = 1, .reusable = false}}, SHIFT(121), + [364] = {.entry = {.count = 1, .reusable = false}}, SHIFT(114), [366] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 4, 0, 36), - [368] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 4, 0, 37), - [370] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 5, 0, 42), - [372] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 3, 0, 27), - [374] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration_list, 1, 0, 1), - [376] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), - [378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187), - [380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(213), - [382] = {.entry = {.count = 1, .reusable = true}}, SHIFT(186), - [384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), - [386] = {.entry = {.count = 1, .reusable = true}}, SHIFT(189), - [388] = {.entry = {.count = 1, .reusable = true}}, SHIFT(223), - [390] = {.entry = {.count = 1, .reusable = true}}, SHIFT(175), - [392] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), - [394] = {.entry = {.count = 1, .reusable = true}}, SHIFT(180), - [396] = {.entry = {.count = 1, .reusable = true}}, SHIFT(224), - [398] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), - [400] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_assign_left_side_repeat1, 2, 0, 10), - [402] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_assign_left_side_repeat1, 2, 0, 10), SHIFT_REPEAT(78), - [405] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_left_side, 1, 0, 1), - [407] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_declaration_list_repeat1, 2, 0, 10), - [409] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_declaration_list_repeat1, 2, 0, 10), SHIFT_REPEAT(78), - [412] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), - [414] = {.entry = {.count = 1, .reusable = true}}, SHIFT(184), - [416] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration_list, 2, 0, 4), - [418] = {.entry = {.count = 1, .reusable = true}}, SHIFT(215), - [420] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), - [422] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_left_side, 2, 0, 4), - [424] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_type, 2, 0, 8), - [426] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_template_declaration_arguments_repeat1, 2, 0, 10), - [428] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_template_declaration_arguments_repeat1, 2, 0, 10), SHIFT_REPEAT(78), - [431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), - [433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), - [435] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_arg, 4, 0, 41), - [437] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_template_args_repeat1, 2, 0, 10), - [439] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_template_args_repeat1, 2, 0, 10), SHIFT_REPEAT(78), - [442] = {.entry = {.count = 1, .reusable = true}}, SHIFT(145), - [444] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), - [446] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [448] = {.entry = {.count = 1, .reusable = true}}, SHIFT(152), - [450] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), - [452] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), - [454] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129), - [456] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 5, 0, 28), - [458] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_declaration_list_repeat1, 2, 0, 5), - [460] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 4, 0, 5), + [368] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 3, 0, 27), + [370] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 4, 0, 37), + [372] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration, 5, 0, 42), + [374] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [376] = {.entry = {.count = 1, .reusable = true}}, SHIFT(186), + [378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(227), + [380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(185), + [382] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_assign_left_side_repeat1, 2, 0, 10), + [384] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_assign_left_side_repeat1, 2, 0, 10), SHIFT_REPEAT(78), + [387] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration_list, 1, 0, 1), + [389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(178), + [393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(183), + [397] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_left_side, 1, 0, 1), + [399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(222), + [401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(190), + [403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(216), + [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), + [407] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assign_left_side, 2, 0, 4), + [409] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_declaration_list, 2, 0, 4), + [411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(189), + [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(228), + [417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187), + [419] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_declaration_list_repeat1, 2, 0, 10), + [421] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_declaration_list_repeat1, 2, 0, 10), SHIFT_REPEAT(78), + [424] = {.entry = {.count = 1, .reusable = true}}, SHIFT(145), + [426] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), + [428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [430] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), + [432] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [434] = {.entry = {.count = 1, .reusable = true}}, SHIFT(152), + [436] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), + [438] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_template_declaration_arguments_repeat1, 2, 0, 10), + [440] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_template_declaration_arguments_repeat1, 2, 0, 10), SHIFT_REPEAT(78), + [443] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_arg, 4, 0, 41), + [445] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_template_args_repeat1, 2, 0, 10), + [447] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_template_args_repeat1, 2, 0, 10), SHIFT_REPEAT(78), + [450] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), + [452] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128), + [454] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_array_type, 2, 0, 8), + [456] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), + [458] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 5, 0, 28), + [460] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_declaration_list_repeat1, 2, 0, 5), [462] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 4, 0, 11), [464] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 10), [466] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 10), SHIFT_REPEAT(10), @@ -7724,91 +7760,91 @@ static const TSParseActionEntry ts_parse_actions[] = { [471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(83), [473] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_assign_left_side_repeat1, 2, 0, 5), [475] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1, 0, 1), - [477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), + [477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), [479] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 3, 0, 5), [481] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 2, 0, 4), - [483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), + [483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), [485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138), [487] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), [489] = {.entry = {.count = 1, .reusable = true}}, SHIFT(140), - [491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), + [491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), [493] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 2, 0, 5), - [495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), + [495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), [497] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 4, 0, 28), [499] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 10), - [501] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 10), SHIFT_REPEAT(98), + [501] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 10), SHIFT_REPEAT(97), [504] = {.entry = {.count = 1, .reusable = true}}, SHIFT(167), - [506] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [506] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), [508] = {.entry = {.count = 1, .reusable = true}}, SHIFT(168), - [510] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), + [510] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), [512] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 3, 0, 11), - [514] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), - [516] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [514] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), + [516] = {.entry = {.count = 1, .reusable = true}}, SHIFT(84), [518] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 3, 0, 0), - [520] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), - [522] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_arg, 1, 0, 13), - [524] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), - [526] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_ports, 2, 0, 40), - [528] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 5, 0, 11), - [530] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2, 0, 0), - [532] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), - [534] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 5, 0, 38), + [520] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_arg, 1, 0, 13), + [522] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), + [524] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_ports, 2, 0, 40), + [526] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 5, 0, 11), + [528] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2, 0, 0), + [530] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), + [532] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 5, 0, 38), + [534] = {.entry = {.count = 1, .reusable = true}}, SHIFT(224), [536] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_ports, 3, 0, 47), - [538] = {.entry = {.count = 1, .reusable = true}}, SHIFT(221), - [540] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_parenthesis_expression_list_repeat1, 2, 0, 10), - [542] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_parenthesis_expression_list_repeat1, 2, 0, 10), SHIFT_REPEAT(78), - [545] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 6, 0, 38), - [547] = {.entry = {.count = 1, .reusable = true}}, SHIFT(222), - [549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(220), - [551] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 3, 0, 29), - [553] = {.entry = {.count = 1, .reusable = true}}, SHIFT(160), - [555] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), + [538] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_parenthesis_expression_list_repeat1, 2, 0, 10), + [540] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_parenthesis_expression_list_repeat1, 2, 0, 10), SHIFT_REPEAT(78), + [543] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 6, 0, 38), + [545] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 4, 0, 5), + [547] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 3, 0, 29), + [549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135), + [551] = {.entry = {.count = 1, .reusable = true}}, SHIFT(218), + [553] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [555] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), [557] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_template_args_repeat1, 2, 0, 5), - [559] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [561] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), + [559] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), + [561] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), [563] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), - [565] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), - [567] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), - [569] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_template_declaration_arguments_repeat1, 2, 0, 5), - [571] = {.entry = {.count = 1, .reusable = true}}, SHIFT(228), - [573] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), - [575] = {.entry = {.count = 1, .reusable = true}}, SHIFT(227), - [577] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), - [579] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_const_and_type, 2, 0, 2), + [565] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [567] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_template_declaration_arguments_repeat1, 2, 0, 5), + [569] = {.entry = {.count = 1, .reusable = true}}, SHIFT(217), + [571] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [573] = {.entry = {.count = 1, .reusable = true}}, SHIFT(212), + [575] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_const_and_type, 2, 0, 2), + [577] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [579] = {.entry = {.count = 1, .reusable = true}}, SHIFT(220), [581] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_block_repeat1, 2, 0, 5), [583] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_object, 4, 0, 16), [585] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_object, 5, 0, 18), [587] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_statement, 3, 0, 30), [589] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_domain_statement, 2, 0, 20), [591] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_statement, 5, 0, 43), - [593] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_ports, 2, 0, 39), - [595] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__interface_ports_output, 2, 0, 44), - [597] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_ports, 3, 0, 45), + [593] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__interface_ports_output, 2, 0, 44), + [595] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_ports, 3, 0, 45), + [597] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_ports, 2, 0, 39), [599] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_ports, 3, 0, 46), [601] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_object, 4, 0, 12), - [603] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 5), - [605] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_object, 3, 0, 6), + [603] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_global_object, 3, 0, 6), + [605] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2, 0, 5), [607] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__interface_ports_output, 3, 0, 48), [609] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_interface_ports, 4, 0, 49), [611] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_for_statement, 7, 0, 50), - [613] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), - [615] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 4, 0, 11), - [617] = {.entry = {.count = 1, .reusable = true}}, SHIFT(141), - [619] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 3, 0, 5), - [621] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 3, 0, 0), - [623] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), - [625] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [613] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 4, 0, 5), + [615] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), + [617] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 3, 0, 0), + [619] = {.entry = {.count = 1, .reusable = true}}, SHIFT(141), + [621] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 5, 0, 38), + [623] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 5, 0, 11), + [625] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 6, 0, 38), [627] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 2, 0, 0), - [629] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 6, 0, 38), - [631] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), - [633] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 5, 0, 28), - [635] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 4, 0, 28), - [637] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 5, 0, 38), - [639] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), - [641] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [643] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 4, 0, 5), - [645] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 5, 0, 11), - [647] = {.entry = {.count = 1, .reusable = true}}, SHIFT(198), + [629] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 5, 0, 28), + [631] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), + [633] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 4, 0, 28), + [635] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), + [637] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), + [639] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [641] = {.entry = {.count = 1, .reusable = true}}, SHIFT(198), + [643] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 4, 0, 11), + [645] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_template_declaration_arguments, 3, 0, 5), + [647] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), }; #ifdef __cplusplus