Remove reduction-specific collapse flags in favor of globally hidden symbols

This commit is contained in:
Max Brunsfeld 2014-03-25 09:05:55 -07:00
parent 2df56f01c8
commit 25861b7f03
6 changed files with 378 additions and 311 deletions

View file

@ -26,6 +26,18 @@ SYMBOL_NAMES = {
"token2",
};
HIDDEN_SYMBOL_FLAGS = {
0,
0,
0,
0,
0,
0,
0,
1,
1,
};
LEX_FN() {
START_LEXER();
switch (LEX_STATE()) {
@ -144,9 +156,9 @@ PARSE_TABLE() {
STATE(2);
SET_LEX_STATE(15);
REDUCE(ts_sym_plus, ts_sym_term, 1, COLLAPSE({0}))
REDUCE(ts_sym_plus, ts_sym_term, 1)
SHIFT(ts_sym_times, 3)
REDUCE(ts_builtin_sym_end, ts_sym_term, 1, COLLAPSE({0}))
REDUCE(ts_builtin_sym_end, ts_sym_term, 1)
END_STATE();
STATE(3);
@ -159,14 +171,14 @@ PARSE_TABLE() {
STATE(4);
SET_LEX_STATE(1);
REDUCE(ts_sym_plus, ts_sym_term, 3, COLLAPSE({0, 0, 0}))
REDUCE(ts_builtin_sym_end, ts_sym_term, 3, COLLAPSE({0, 0, 0}))
REDUCE(ts_sym_plus, ts_sym_term, 3)
REDUCE(ts_builtin_sym_end, ts_sym_term, 3)
END_STATE();
STATE(5);
SET_LEX_STATE(1);
REDUCE(ts_sym_plus, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_builtin_sym_end, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_sym_plus, ts_sym_factor, 1)
REDUCE(ts_builtin_sym_end, ts_sym_factor, 1)
END_STATE();
STATE(6);
@ -187,15 +199,15 @@ PARSE_TABLE() {
STATE(8);
SET_LEX_STATE(1);
REDUCE(ts_sym_plus, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_builtin_sym_end, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_sym_plus, ts_sym_factor, 3)
REDUCE(ts_builtin_sym_end, ts_sym_factor, 3)
END_STATE();
STATE(9);
SET_LEX_STATE(6);
REDUCE(ts_sym_plus, ts_sym_term, 1, COLLAPSE({0}))
REDUCE(ts_sym_plus, ts_sym_term, 1)
SHIFT(ts_sym_times, 10)
REDUCE(ts_aux_sym_token2, ts_sym_term, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token2, ts_sym_term, 1)
END_STATE();
STATE(10);
@ -208,14 +220,14 @@ PARSE_TABLE() {
STATE(11);
SET_LEX_STATE(5);
REDUCE(ts_sym_plus, ts_sym_term, 3, COLLAPSE({0, 0, 0}))
REDUCE(ts_aux_sym_token2, ts_sym_term, 3, COLLAPSE({0, 0, 0}))
REDUCE(ts_sym_plus, ts_sym_term, 3)
REDUCE(ts_aux_sym_token2, ts_sym_term, 3)
END_STATE();
STATE(12);
SET_LEX_STATE(5);
REDUCE(ts_sym_plus, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token2, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_sym_plus, ts_sym_factor, 1)
REDUCE(ts_aux_sym_token2, ts_sym_factor, 1)
END_STATE();
STATE(13);
@ -236,21 +248,21 @@ PARSE_TABLE() {
STATE(15);
SET_LEX_STATE(5);
REDUCE(ts_sym_plus, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_aux_sym_token2, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_sym_plus, ts_sym_factor, 3)
REDUCE(ts_aux_sym_token2, ts_sym_factor, 3)
END_STATE();
STATE(16);
SET_LEX_STATE(6);
REDUCE(ts_sym_plus, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_sym_times, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token2, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_sym_plus, ts_sym_factor, 1)
REDUCE(ts_sym_times, ts_sym_factor, 1)
REDUCE(ts_aux_sym_token2, ts_sym_factor, 1)
END_STATE();
STATE(17);
SET_LEX_STATE(5);
SHIFT(ts_sym_plus, 18)
REDUCE(ts_aux_sym_token2, ts_sym_expression, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token2, ts_sym_expression, 1)
END_STATE();
STATE(18);
@ -265,7 +277,7 @@ PARSE_TABLE() {
STATE(19);
SET_LEX_STATE(14);
SHIFT(ts_sym_times, 20)
REDUCE(ts_aux_sym_token2, ts_sym_term, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token2, ts_sym_term, 1)
END_STATE();
STATE(20);
@ -278,12 +290,12 @@ PARSE_TABLE() {
STATE(21);
SET_LEX_STATE(3);
REDUCE(ts_aux_sym_token2, ts_sym_term, 3, COLLAPSE({0, 0, 0}))
REDUCE(ts_aux_sym_token2, ts_sym_term, 3)
END_STATE();
STATE(22);
SET_LEX_STATE(3);
REDUCE(ts_aux_sym_token2, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token2, ts_sym_factor, 1)
END_STATE();
STATE(23);
@ -304,7 +316,7 @@ PARSE_TABLE() {
STATE(25);
SET_LEX_STATE(3);
REDUCE(ts_aux_sym_token2, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_aux_sym_token2, ts_sym_factor, 3)
END_STATE();
STATE(26);
@ -325,20 +337,20 @@ PARSE_TABLE() {
STATE(28);
SET_LEX_STATE(6);
REDUCE(ts_sym_plus, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_sym_times, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_aux_sym_token2, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_sym_plus, ts_sym_factor, 3)
REDUCE(ts_sym_times, ts_sym_factor, 3)
REDUCE(ts_aux_sym_token2, ts_sym_factor, 3)
END_STATE();
STATE(29);
SET_LEX_STATE(14);
REDUCE(ts_sym_times, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token2, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_sym_times, ts_sym_factor, 1)
REDUCE(ts_aux_sym_token2, ts_sym_factor, 1)
END_STATE();
STATE(30);
SET_LEX_STATE(3);
REDUCE(ts_aux_sym_token2, ts_sym_expression, 3, COLLAPSE({0, 0, 0}))
REDUCE(ts_aux_sym_token2, ts_sym_expression, 3)
END_STATE();
STATE(31);
@ -359,21 +371,21 @@ PARSE_TABLE() {
STATE(33);
SET_LEX_STATE(14);
REDUCE(ts_sym_times, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_aux_sym_token2, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_sym_times, ts_sym_factor, 3)
REDUCE(ts_aux_sym_token2, ts_sym_factor, 3)
END_STATE();
STATE(34);
SET_LEX_STATE(15);
REDUCE(ts_sym_plus, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_sym_times, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_builtin_sym_end, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_sym_plus, ts_sym_factor, 1)
REDUCE(ts_sym_times, ts_sym_factor, 1)
REDUCE(ts_builtin_sym_end, ts_sym_factor, 1)
END_STATE();
STATE(35);
SET_LEX_STATE(1);
SHIFT(ts_sym_plus, 36)
REDUCE(ts_builtin_sym_end, ts_sym_expression, 1, COLLAPSE({0}))
REDUCE(ts_builtin_sym_end, ts_sym_expression, 1)
END_STATE();
STATE(36);
@ -388,7 +400,7 @@ PARSE_TABLE() {
STATE(37);
SET_LEX_STATE(16);
SHIFT(ts_sym_times, 38)
REDUCE(ts_builtin_sym_end, ts_sym_term, 1, COLLAPSE({0}))
REDUCE(ts_builtin_sym_end, ts_sym_term, 1)
END_STATE();
STATE(38);
@ -401,12 +413,12 @@ PARSE_TABLE() {
STATE(39);
SET_LEX_STATE(0);
REDUCE(ts_builtin_sym_end, ts_sym_term, 3, COLLAPSE({0, 0, 0}))
REDUCE(ts_builtin_sym_end, ts_sym_term, 3)
END_STATE();
STATE(40);
SET_LEX_STATE(0);
REDUCE(ts_builtin_sym_end, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_builtin_sym_end, ts_sym_factor, 1)
END_STATE();
STATE(41);
@ -427,18 +439,18 @@ PARSE_TABLE() {
STATE(43);
SET_LEX_STATE(0);
REDUCE(ts_builtin_sym_end, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_builtin_sym_end, ts_sym_factor, 3)
END_STATE();
STATE(44);
SET_LEX_STATE(16);
REDUCE(ts_sym_times, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_builtin_sym_end, ts_sym_factor, 1, COLLAPSE({0}))
REDUCE(ts_sym_times, ts_sym_factor, 1)
REDUCE(ts_builtin_sym_end, ts_sym_factor, 1)
END_STATE();
STATE(45);
SET_LEX_STATE(0);
REDUCE(ts_builtin_sym_end, ts_sym_expression, 3, COLLAPSE({0, 0, 0}))
REDUCE(ts_builtin_sym_end, ts_sym_expression, 3)
END_STATE();
STATE(46);
@ -459,8 +471,8 @@ PARSE_TABLE() {
STATE(48);
SET_LEX_STATE(16);
REDUCE(ts_sym_times, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_builtin_sym_end, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_sym_times, ts_sym_factor, 3)
REDUCE(ts_builtin_sym_end, ts_sym_factor, 3)
END_STATE();
STATE(49);
@ -481,9 +493,9 @@ PARSE_TABLE() {
STATE(51);
SET_LEX_STATE(15);
REDUCE(ts_sym_plus, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_sym_times, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_builtin_sym_end, ts_sym_factor, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_sym_plus, ts_sym_factor, 3)
REDUCE(ts_sym_times, ts_sym_factor, 3)
REDUCE(ts_builtin_sym_end, ts_sym_factor, 3)
END_STATE();
END_TABLE();

View file

@ -74,6 +74,42 @@ SYMBOL_NAMES = {
"token9",
};
HIDDEN_SYMBOL_FLAGS = {
1,
1,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
};
LEX_FN() {
START_LEXER();
switch (LEX_STATE()) {
@ -729,7 +765,7 @@ PARSE_TABLE() {
SHIFT(ts_aux_sym_repeat_helper1, 112)
SHIFT(ts_aux_sym_token10, 20)
SHIFT(ts_aux_sym_token5, 69)
REDUCE(ts_builtin_sym_end, ts_aux_sym_repeat_helper1, 0, COLLAPSE({}))
REDUCE(ts_builtin_sym_end, ts_aux_sym_repeat_helper1, 0)
END_STATE();
STATE(1);
@ -755,7 +791,7 @@ PARSE_TABLE() {
STATE(3);
SET_LEX_STATE(0);
REDUCE(ts_aux_sym_token4, ts_sym_literal, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token4, ts_sym_literal, 1)
END_STATE();
STATE(4);
@ -771,17 +807,17 @@ PARSE_TABLE() {
STATE(6);
SET_LEX_STATE(2);
REDUCE(ts_sym__IF, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym__VAR, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym_false, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym_identifier, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym_null, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym_number, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym_string, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym_true, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_aux_sym_token10, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_aux_sym_token5, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_builtin_sym_end, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym__IF, ts_sym_if_statement, 5)
REDUCE(ts_sym__VAR, ts_sym_if_statement, 5)
REDUCE(ts_sym_false, ts_sym_if_statement, 5)
REDUCE(ts_sym_identifier, ts_sym_if_statement, 5)
REDUCE(ts_sym_null, ts_sym_if_statement, 5)
REDUCE(ts_sym_number, ts_sym_if_statement, 5)
REDUCE(ts_sym_string, ts_sym_if_statement, 5)
REDUCE(ts_sym_true, ts_sym_if_statement, 5)
REDUCE(ts_aux_sym_token10, ts_sym_if_statement, 5)
REDUCE(ts_aux_sym_token5, ts_sym_if_statement, 5)
REDUCE(ts_builtin_sym_end, ts_sym_if_statement, 5)
END_STATE();
STATE(7);
@ -804,7 +840,7 @@ PARSE_TABLE() {
SHIFT(ts_aux_sym_repeat_helper2, 103)
SHIFT(ts_aux_sym_token10, 20)
SHIFT(ts_aux_sym_token5, 69)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 0)
END_STATE();
STATE(8);
@ -841,17 +877,17 @@ PARSE_TABLE() {
STATE(12);
SET_LEX_STATE(56);
REDUCE(ts_sym__IF, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym__VAR, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym_false, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym_identifier, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym_null, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym_number, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym_string, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym_true, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_aux_sym_token10, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_aux_sym_token5, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_aux_sym_token6, ts_sym_if_statement, 5, COLLAPSE({1, 1, 0, 1, 0}))
REDUCE(ts_sym__IF, ts_sym_if_statement, 5)
REDUCE(ts_sym__VAR, ts_sym_if_statement, 5)
REDUCE(ts_sym_false, ts_sym_if_statement, 5)
REDUCE(ts_sym_identifier, ts_sym_if_statement, 5)
REDUCE(ts_sym_null, ts_sym_if_statement, 5)
REDUCE(ts_sym_number, ts_sym_if_statement, 5)
REDUCE(ts_sym_string, ts_sym_if_statement, 5)
REDUCE(ts_sym_true, ts_sym_if_statement, 5)
REDUCE(ts_aux_sym_token10, ts_sym_if_statement, 5)
REDUCE(ts_aux_sym_token5, ts_sym_if_statement, 5)
REDUCE(ts_aux_sym_token6, ts_sym_if_statement, 5)
END_STATE();
STATE(13);
@ -874,7 +910,7 @@ PARSE_TABLE() {
SHIFT(ts_aux_sym_repeat_helper2, 85)
SHIFT(ts_aux_sym_token10, 20)
SHIFT(ts_aux_sym_token5, 69)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 0)
END_STATE();
STATE(14);
@ -905,20 +941,20 @@ PARSE_TABLE() {
STATE(17);
SET_LEX_STATE(58);
REDUCE(ts_aux_sym_token1, ts_sym_literal, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token2, ts_sym_literal, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token1, ts_sym_literal, 1)
REDUCE(ts_aux_sym_token2, ts_sym_literal, 1)
END_STATE();
STATE(18);
SET_LEX_STATE(58);
REDUCE(ts_aux_sym_token1, ts_sym_assignment, 4, COLLAPSE({1, 0, 1, 0}))
REDUCE(ts_aux_sym_token2, ts_sym_assignment, 4, COLLAPSE({1, 0, 1, 0}))
REDUCE(ts_aux_sym_token1, ts_sym_assignment, 4)
REDUCE(ts_aux_sym_token2, ts_sym_assignment, 4)
END_STATE();
STATE(19);
SET_LEX_STATE(58);
REDUCE(ts_aux_sym_token1, ts_sym_expression, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token2, ts_sym_expression, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token1, ts_sym_expression, 1)
REDUCE(ts_aux_sym_token2, ts_sym_expression, 1)
END_STATE();
STATE(20);
@ -941,14 +977,14 @@ PARSE_TABLE() {
STATE(21);
SET_LEX_STATE(61);
REDUCE(ts_aux_sym_token11, ts_sym_literal, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token9, ts_sym_literal, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token11, ts_sym_literal, 1)
REDUCE(ts_aux_sym_token9, ts_sym_literal, 1)
END_STATE();
STATE(22);
SET_LEX_STATE(61);
SHIFT(ts_aux_sym_repeat_helper4, 23)
REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 0)
SHIFT(ts_aux_sym_token9, 25)
END_STATE();
@ -959,8 +995,8 @@ PARSE_TABLE() {
STATE(24);
SET_LEX_STATE(58);
REDUCE(ts_aux_sym_token1, ts_sym_array, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token2, ts_sym_array, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token1, ts_sym_array, 4)
REDUCE(ts_aux_sym_token2, ts_sym_array, 4)
END_STATE();
STATE(25);
@ -983,19 +1019,19 @@ PARSE_TABLE() {
STATE(26);
SET_LEX_STATE(61);
SHIFT(ts_aux_sym_repeat_helper4, 27)
REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 0)
SHIFT(ts_aux_sym_token9, 25)
END_STATE();
STATE(27);
SET_LEX_STATE(64);
REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 3)
END_STATE();
STATE(28);
SET_LEX_STATE(61);
REDUCE(ts_aux_sym_token11, ts_sym_expression, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token9, ts_sym_expression, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token11, ts_sym_expression, 1)
REDUCE(ts_aux_sym_token9, ts_sym_expression, 1)
END_STATE();
STATE(29);
@ -1019,7 +1055,7 @@ PARSE_TABLE() {
STATE(30);
SET_LEX_STATE(61);
SHIFT(ts_aux_sym_repeat_helper4, 31)
REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 0)
SHIFT(ts_aux_sym_token9, 25)
END_STATE();
@ -1030,14 +1066,14 @@ PARSE_TABLE() {
STATE(32);
SET_LEX_STATE(61);
REDUCE(ts_aux_sym_token11, ts_sym_array, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token9, ts_sym_array, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token11, ts_sym_array, 4)
REDUCE(ts_aux_sym_token9, ts_sym_array, 4)
END_STATE();
STATE(33);
SET_LEX_STATE(61);
REDUCE(ts_aux_sym_token11, ts_sym_array, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token9, ts_sym_array, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token11, ts_sym_array, 2)
REDUCE(ts_aux_sym_token9, ts_sym_array, 2)
END_STATE();
STATE(34);
@ -1070,14 +1106,14 @@ PARSE_TABLE() {
STATE(37);
SET_LEX_STATE(65);
REDUCE(ts_aux_sym_token6, ts_sym_literal, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token9, ts_sym_literal, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token6, ts_sym_literal, 1)
REDUCE(ts_aux_sym_token9, ts_sym_literal, 1)
END_STATE();
STATE(38);
SET_LEX_STATE(65);
SHIFT(ts_aux_sym_repeat_helper3, 39)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0)
SHIFT(ts_aux_sym_token9, 41)
END_STATE();
@ -1088,8 +1124,8 @@ PARSE_TABLE() {
STATE(40);
SET_LEX_STATE(61);
REDUCE(ts_aux_sym_token11, ts_sym_object, 6, COLLAPSE({1, 0, 1, 0, 1, 1}))
REDUCE(ts_aux_sym_token9, ts_sym_object, 6, COLLAPSE({1, 0, 1, 0, 1, 1}))
REDUCE(ts_aux_sym_token11, ts_sym_object, 6)
REDUCE(ts_aux_sym_token9, ts_sym_object, 6)
END_STATE();
STATE(41);
@ -1122,19 +1158,19 @@ PARSE_TABLE() {
STATE(44);
SET_LEX_STATE(65);
SHIFT(ts_aux_sym_repeat_helper3, 45)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0)
SHIFT(ts_aux_sym_token9, 41)
END_STATE();
STATE(45);
SET_LEX_STATE(66);
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 5, COLLAPSE({1, 0, 1, 0, 1}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 5)
END_STATE();
STATE(46);
SET_LEX_STATE(65);
REDUCE(ts_aux_sym_token6, ts_sym_expression, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token9, ts_sym_expression, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token6, ts_sym_expression, 1)
REDUCE(ts_aux_sym_token9, ts_sym_expression, 1)
END_STATE();
STATE(47);
@ -1158,7 +1194,7 @@ PARSE_TABLE() {
STATE(48);
SET_LEX_STATE(61);
SHIFT(ts_aux_sym_repeat_helper4, 49)
REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 0)
SHIFT(ts_aux_sym_token9, 25)
END_STATE();
@ -1169,14 +1205,14 @@ PARSE_TABLE() {
STATE(50);
SET_LEX_STATE(65);
REDUCE(ts_aux_sym_token6, ts_sym_array, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token9, ts_sym_array, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token6, ts_sym_array, 4)
REDUCE(ts_aux_sym_token9, ts_sym_array, 4)
END_STATE();
STATE(51);
SET_LEX_STATE(65);
REDUCE(ts_aux_sym_token6, ts_sym_array, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token9, ts_sym_array, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token6, ts_sym_array, 2)
REDUCE(ts_aux_sym_token9, ts_sym_array, 2)
END_STATE();
STATE(52);
@ -1210,7 +1246,7 @@ PARSE_TABLE() {
STATE(55);
SET_LEX_STATE(65);
SHIFT(ts_aux_sym_repeat_helper3, 56)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0)
SHIFT(ts_aux_sym_token9, 41)
END_STATE();
@ -1221,20 +1257,20 @@ PARSE_TABLE() {
STATE(57);
SET_LEX_STATE(65);
REDUCE(ts_aux_sym_token6, ts_sym_object, 6, COLLAPSE({1, 0, 1, 0, 1, 1}))
REDUCE(ts_aux_sym_token9, ts_sym_object, 6, COLLAPSE({1, 0, 1, 0, 1, 1}))
REDUCE(ts_aux_sym_token6, ts_sym_object, 6)
REDUCE(ts_aux_sym_token9, ts_sym_object, 6)
END_STATE();
STATE(58);
SET_LEX_STATE(65);
REDUCE(ts_aux_sym_token6, ts_sym_object, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token9, ts_sym_object, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token6, ts_sym_object, 2)
REDUCE(ts_aux_sym_token9, ts_sym_object, 2)
END_STATE();
STATE(59);
SET_LEX_STATE(65);
SHIFT(ts_aux_sym_repeat_helper3, 60)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0)
SHIFT(ts_aux_sym_token9, 41)
END_STATE();
@ -1245,32 +1281,32 @@ PARSE_TABLE() {
STATE(61);
SET_LEX_STATE(65);
REDUCE(ts_aux_sym_token6, ts_sym_object, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token9, ts_sym_object, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token6, ts_sym_object, 4)
REDUCE(ts_aux_sym_token9, ts_sym_object, 4)
END_STATE();
STATE(62);
SET_LEX_STATE(65);
SHIFT(ts_aux_sym_repeat_helper3, 63)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0)
SHIFT(ts_aux_sym_token9, 41)
END_STATE();
STATE(63);
SET_LEX_STATE(66);
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 3)
END_STATE();
STATE(64);
SET_LEX_STATE(61);
REDUCE(ts_aux_sym_token11, ts_sym_object, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token9, ts_sym_object, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token11, ts_sym_object, 2)
REDUCE(ts_aux_sym_token9, ts_sym_object, 2)
END_STATE();
STATE(65);
SET_LEX_STATE(65);
SHIFT(ts_aux_sym_repeat_helper3, 66)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0)
SHIFT(ts_aux_sym_token9, 41)
END_STATE();
@ -1281,14 +1317,14 @@ PARSE_TABLE() {
STATE(67);
SET_LEX_STATE(61);
REDUCE(ts_aux_sym_token11, ts_sym_object, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token9, ts_sym_object, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token11, ts_sym_object, 4)
REDUCE(ts_aux_sym_token9, ts_sym_object, 4)
END_STATE();
STATE(68);
SET_LEX_STATE(58);
REDUCE(ts_aux_sym_token1, ts_sym_array, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token2, ts_sym_array, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token1, ts_sym_array, 2)
REDUCE(ts_aux_sym_token2, ts_sym_array, 2)
END_STATE();
STATE(69);
@ -1322,7 +1358,7 @@ PARSE_TABLE() {
STATE(72);
SET_LEX_STATE(65);
SHIFT(ts_aux_sym_repeat_helper3, 73)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0)
SHIFT(ts_aux_sym_token9, 41)
END_STATE();
@ -1333,20 +1369,20 @@ PARSE_TABLE() {
STATE(74);
SET_LEX_STATE(58);
REDUCE(ts_aux_sym_token1, ts_sym_object, 6, COLLAPSE({1, 0, 1, 0, 1, 1}))
REDUCE(ts_aux_sym_token2, ts_sym_object, 6, COLLAPSE({1, 0, 1, 0, 1, 1}))
REDUCE(ts_aux_sym_token1, ts_sym_object, 6)
REDUCE(ts_aux_sym_token2, ts_sym_object, 6)
END_STATE();
STATE(75);
SET_LEX_STATE(58);
REDUCE(ts_aux_sym_token1, ts_sym_object, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token2, ts_sym_object, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token1, ts_sym_object, 2)
REDUCE(ts_aux_sym_token2, ts_sym_object, 2)
END_STATE();
STATE(76);
SET_LEX_STATE(65);
SHIFT(ts_aux_sym_repeat_helper3, 77)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0)
SHIFT(ts_aux_sym_token9, 41)
END_STATE();
@ -1357,8 +1393,8 @@ PARSE_TABLE() {
STATE(78);
SET_LEX_STATE(58);
REDUCE(ts_aux_sym_token1, ts_sym_object, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token2, ts_sym_object, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token1, ts_sym_object, 4)
REDUCE(ts_aux_sym_token2, ts_sym_object, 4)
END_STATE();
STATE(79);
@ -1370,47 +1406,47 @@ PARSE_TABLE() {
STATE(80);
SET_LEX_STATE(56);
REDUCE(ts_sym__IF, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym__VAR, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym_false, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym_identifier, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym_null, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym_number, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym_string, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym_true, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_aux_sym_token10, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_aux_sym_token5, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_aux_sym_token6, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym__IF, ts_sym_statement, 2)
REDUCE(ts_sym__VAR, ts_sym_statement, 2)
REDUCE(ts_sym_false, ts_sym_statement, 2)
REDUCE(ts_sym_identifier, ts_sym_statement, 2)
REDUCE(ts_sym_null, ts_sym_statement, 2)
REDUCE(ts_sym_number, ts_sym_statement, 2)
REDUCE(ts_sym_string, ts_sym_statement, 2)
REDUCE(ts_sym_true, ts_sym_statement, 2)
REDUCE(ts_aux_sym_token10, ts_sym_statement, 2)
REDUCE(ts_aux_sym_token5, ts_sym_statement, 2)
REDUCE(ts_aux_sym_token6, ts_sym_statement, 2)
END_STATE();
STATE(81);
SET_LEX_STATE(56);
REDUCE(ts_sym__IF, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym__VAR, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym_false, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym_identifier, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym_null, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym_number, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym_string, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym_true, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_aux_sym_token10, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_aux_sym_token5, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_aux_sym_token6, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym__IF, ts_sym__terminator, 1)
REDUCE(ts_sym__VAR, ts_sym__terminator, 1)
REDUCE(ts_sym_false, ts_sym__terminator, 1)
REDUCE(ts_sym_identifier, ts_sym__terminator, 1)
REDUCE(ts_sym_null, ts_sym__terminator, 1)
REDUCE(ts_sym_number, ts_sym__terminator, 1)
REDUCE(ts_sym_string, ts_sym__terminator, 1)
REDUCE(ts_sym_true, ts_sym__terminator, 1)
REDUCE(ts_aux_sym_token10, ts_sym__terminator, 1)
REDUCE(ts_aux_sym_token5, ts_sym__terminator, 1)
REDUCE(ts_aux_sym_token6, ts_sym__terminator, 1)
END_STATE();
STATE(82);
SET_LEX_STATE(56);
REDUCE(ts_sym__IF, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym__VAR, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym_false, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym_identifier, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym_null, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym_number, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym_string, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym_true, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token10, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token5, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token6, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym__IF, ts_sym_statement, 1)
REDUCE(ts_sym__VAR, ts_sym_statement, 1)
REDUCE(ts_sym_false, ts_sym_statement, 1)
REDUCE(ts_sym_identifier, ts_sym_statement, 1)
REDUCE(ts_sym_null, ts_sym_statement, 1)
REDUCE(ts_sym_number, ts_sym_statement, 1)
REDUCE(ts_sym_string, ts_sym_statement, 1)
REDUCE(ts_sym_true, ts_sym_statement, 1)
REDUCE(ts_aux_sym_token10, ts_sym_statement, 1)
REDUCE(ts_aux_sym_token5, ts_sym_statement, 1)
REDUCE(ts_aux_sym_token6, ts_sym_statement, 1)
END_STATE();
STATE(83);
@ -1433,12 +1469,12 @@ PARSE_TABLE() {
SHIFT(ts_aux_sym_repeat_helper2, 84)
SHIFT(ts_aux_sym_token10, 20)
SHIFT(ts_aux_sym_token5, 69)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 0)
END_STATE();
STATE(84);
SET_LEX_STATE(66);
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 2, COLLAPSE({0, 1}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 2)
END_STATE();
STATE(85);
@ -1448,22 +1484,22 @@ PARSE_TABLE() {
STATE(86);
SET_LEX_STATE(56);
REDUCE(ts_sym__IF, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym__VAR, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym_false, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym_identifier, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym_null, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym_number, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym_string, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym_true, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_aux_sym_token10, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_aux_sym_token5, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_aux_sym_token6, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym__IF, ts_sym_statement_block, 3)
REDUCE(ts_sym__VAR, ts_sym_statement_block, 3)
REDUCE(ts_sym_false, ts_sym_statement_block, 3)
REDUCE(ts_sym_identifier, ts_sym_statement_block, 3)
REDUCE(ts_sym_null, ts_sym_statement_block, 3)
REDUCE(ts_sym_number, ts_sym_statement_block, 3)
REDUCE(ts_sym_string, ts_sym_statement_block, 3)
REDUCE(ts_sym_true, ts_sym_statement_block, 3)
REDUCE(ts_aux_sym_token10, ts_sym_statement_block, 3)
REDUCE(ts_aux_sym_token5, ts_sym_statement_block, 3)
REDUCE(ts_aux_sym_token6, ts_sym_statement_block, 3)
END_STATE();
STATE(87);
SET_LEX_STATE(0);
REDUCE(ts_aux_sym_token4, ts_sym_expression, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token4, ts_sym_expression, 1)
END_STATE();
STATE(88);
@ -1487,7 +1523,7 @@ PARSE_TABLE() {
STATE(89);
SET_LEX_STATE(61);
SHIFT(ts_aux_sym_repeat_helper4, 90)
REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 0)
SHIFT(ts_aux_sym_token9, 25)
END_STATE();
@ -1498,12 +1534,12 @@ PARSE_TABLE() {
STATE(91);
SET_LEX_STATE(0);
REDUCE(ts_aux_sym_token4, ts_sym_array, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token4, ts_sym_array, 4)
END_STATE();
STATE(92);
SET_LEX_STATE(0);
REDUCE(ts_aux_sym_token4, ts_sym_array, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token4, ts_sym_array, 2)
END_STATE();
STATE(93);
@ -1537,7 +1573,7 @@ PARSE_TABLE() {
STATE(96);
SET_LEX_STATE(65);
SHIFT(ts_aux_sym_repeat_helper3, 97)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0)
SHIFT(ts_aux_sym_token9, 41)
END_STATE();
@ -1548,18 +1584,18 @@ PARSE_TABLE() {
STATE(98);
SET_LEX_STATE(0);
REDUCE(ts_aux_sym_token4, ts_sym_object, 6, COLLAPSE({1, 0, 1, 0, 1, 1}))
REDUCE(ts_aux_sym_token4, ts_sym_object, 6)
END_STATE();
STATE(99);
SET_LEX_STATE(0);
REDUCE(ts_aux_sym_token4, ts_sym_object, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token4, ts_sym_object, 2)
END_STATE();
STATE(100);
SET_LEX_STATE(65);
SHIFT(ts_aux_sym_repeat_helper3, 101)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0)
SHIFT(ts_aux_sym_token9, 41)
END_STATE();
@ -1570,7 +1606,7 @@ PARSE_TABLE() {
STATE(102);
SET_LEX_STATE(0);
REDUCE(ts_aux_sym_token4, ts_sym_object, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token4, ts_sym_object, 4)
END_STATE();
STATE(103);
@ -1580,17 +1616,17 @@ PARSE_TABLE() {
STATE(104);
SET_LEX_STATE(2);
REDUCE(ts_sym__IF, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym__VAR, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym_false, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym_identifier, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym_null, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym_number, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym_string, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym_true, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_aux_sym_token10, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_aux_sym_token5, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_builtin_sym_end, ts_sym_statement_block, 3, COLLAPSE({1, 1, 1}))
REDUCE(ts_sym__IF, ts_sym_statement_block, 3)
REDUCE(ts_sym__VAR, ts_sym_statement_block, 3)
REDUCE(ts_sym_false, ts_sym_statement_block, 3)
REDUCE(ts_sym_identifier, ts_sym_statement_block, 3)
REDUCE(ts_sym_null, ts_sym_statement_block, 3)
REDUCE(ts_sym_number, ts_sym_statement_block, 3)
REDUCE(ts_sym_string, ts_sym_statement_block, 3)
REDUCE(ts_sym_true, ts_sym_statement_block, 3)
REDUCE(ts_aux_sym_token10, ts_sym_statement_block, 3)
REDUCE(ts_aux_sym_token5, ts_sym_statement_block, 3)
REDUCE(ts_builtin_sym_end, ts_sym_statement_block, 3)
END_STATE();
STATE(105);
@ -1602,47 +1638,47 @@ PARSE_TABLE() {
STATE(106);
SET_LEX_STATE(2);
REDUCE(ts_sym__IF, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym__VAR, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym_false, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym_identifier, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym_null, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym_number, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym_string, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym_true, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_aux_sym_token10, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_aux_sym_token5, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_builtin_sym_end, ts_sym_statement, 2, COLLAPSE({0, 1}))
REDUCE(ts_sym__IF, ts_sym_statement, 2)
REDUCE(ts_sym__VAR, ts_sym_statement, 2)
REDUCE(ts_sym_false, ts_sym_statement, 2)
REDUCE(ts_sym_identifier, ts_sym_statement, 2)
REDUCE(ts_sym_null, ts_sym_statement, 2)
REDUCE(ts_sym_number, ts_sym_statement, 2)
REDUCE(ts_sym_string, ts_sym_statement, 2)
REDUCE(ts_sym_true, ts_sym_statement, 2)
REDUCE(ts_aux_sym_token10, ts_sym_statement, 2)
REDUCE(ts_aux_sym_token5, ts_sym_statement, 2)
REDUCE(ts_builtin_sym_end, ts_sym_statement, 2)
END_STATE();
STATE(107);
SET_LEX_STATE(2);
REDUCE(ts_sym__IF, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym__VAR, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym_false, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym_identifier, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym_null, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym_number, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym_string, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym_true, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_aux_sym_token10, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_aux_sym_token5, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_builtin_sym_end, ts_sym__terminator, 1, COLLAPSE({1}))
REDUCE(ts_sym__IF, ts_sym__terminator, 1)
REDUCE(ts_sym__VAR, ts_sym__terminator, 1)
REDUCE(ts_sym_false, ts_sym__terminator, 1)
REDUCE(ts_sym_identifier, ts_sym__terminator, 1)
REDUCE(ts_sym_null, ts_sym__terminator, 1)
REDUCE(ts_sym_number, ts_sym__terminator, 1)
REDUCE(ts_sym_string, ts_sym__terminator, 1)
REDUCE(ts_sym_true, ts_sym__terminator, 1)
REDUCE(ts_aux_sym_token10, ts_sym__terminator, 1)
REDUCE(ts_aux_sym_token5, ts_sym__terminator, 1)
REDUCE(ts_builtin_sym_end, ts_sym__terminator, 1)
END_STATE();
STATE(108);
SET_LEX_STATE(2);
REDUCE(ts_sym__IF, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym__VAR, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym_false, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym_identifier, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym_null, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym_number, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym_string, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym_true, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token10, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token5, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_builtin_sym_end, ts_sym_statement, 1, COLLAPSE({0}))
REDUCE(ts_sym__IF, ts_sym_statement, 1)
REDUCE(ts_sym__VAR, ts_sym_statement, 1)
REDUCE(ts_sym_false, ts_sym_statement, 1)
REDUCE(ts_sym_identifier, ts_sym_statement, 1)
REDUCE(ts_sym_null, ts_sym_statement, 1)
REDUCE(ts_sym_number, ts_sym_statement, 1)
REDUCE(ts_sym_string, ts_sym_statement, 1)
REDUCE(ts_sym_true, ts_sym_statement, 1)
REDUCE(ts_aux_sym_token10, ts_sym_statement, 1)
REDUCE(ts_aux_sym_token5, ts_sym_statement, 1)
REDUCE(ts_builtin_sym_end, ts_sym_statement, 1)
END_STATE();
STATE(109);
@ -1670,17 +1706,17 @@ PARSE_TABLE() {
SHIFT(ts_aux_sym_repeat_helper1, 111)
SHIFT(ts_aux_sym_token10, 20)
SHIFT(ts_aux_sym_token5, 69)
REDUCE(ts_builtin_sym_end, ts_aux_sym_repeat_helper1, 0, COLLAPSE({}))
REDUCE(ts_builtin_sym_end, ts_aux_sym_repeat_helper1, 0)
END_STATE();
STATE(111);
SET_LEX_STATE(79);
REDUCE(ts_builtin_sym_end, ts_aux_sym_repeat_helper1, 2, COLLAPSE({0, 1}))
REDUCE(ts_builtin_sym_end, ts_aux_sym_repeat_helper1, 2)
END_STATE();
STATE(112);
SET_LEX_STATE(79);
REDUCE(ts_builtin_sym_end, ts_sym_program, 1, COLLAPSE({1}))
REDUCE(ts_builtin_sym_end, ts_sym_program, 1)
END_STATE();
END_TABLE();

View file

@ -40,6 +40,25 @@ SYMBOL_NAMES = {
"token6",
};
HIDDEN_SYMBOL_FLAGS = {
0,
0,
0,
0,
0,
0,
0,
0,
1,
1,
1,
1,
1,
1,
1,
1,
};
LEX_FN() {
START_LEXER();
switch (LEX_STATE()) {
@ -332,7 +351,7 @@ PARSE_TABLE() {
STATE(1);
SET_LEX_STATE(0);
REDUCE(ts_builtin_sym_end, ts_sym_value, 1, COLLAPSE({0}))
REDUCE(ts_builtin_sym_end, ts_sym_value, 1)
END_STATE();
STATE(2);
@ -368,15 +387,15 @@ PARSE_TABLE() {
STATE(6);
SET_LEX_STATE(1);
REDUCE(ts_aux_sym_token3, ts_sym_value, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token4, ts_sym_value, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token3, ts_sym_value, 1)
REDUCE(ts_aux_sym_token4, ts_sym_value, 1)
END_STATE();
STATE(7);
SET_LEX_STATE(1);
SHIFT(ts_aux_sym_repeat_helper1, 8)
SHIFT(ts_aux_sym_token3, 10)
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0)
END_STATE();
STATE(8);
@ -386,7 +405,7 @@ PARSE_TABLE() {
STATE(9);
SET_LEX_STATE(0);
REDUCE(ts_builtin_sym_end, ts_sym_object, 6, COLLAPSE({1, 0, 1, 0, 1, 1}))
REDUCE(ts_builtin_sym_end, ts_sym_object, 6)
END_STATE();
STATE(10);
@ -418,12 +437,12 @@ PARSE_TABLE() {
SET_LEX_STATE(1);
SHIFT(ts_aux_sym_repeat_helper1, 14)
SHIFT(ts_aux_sym_token3, 10)
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0)
END_STATE();
STATE(14);
SET_LEX_STATE(4);
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 5, COLLAPSE({1, 0, 1, 0, 1}))
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 5)
END_STATE();
STATE(15);
@ -456,7 +475,7 @@ PARSE_TABLE() {
SET_LEX_STATE(1);
SHIFT(ts_aux_sym_repeat_helper1, 19)
SHIFT(ts_aux_sym_token3, 10)
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0)
END_STATE();
STATE(19);
@ -466,8 +485,8 @@ PARSE_TABLE() {
STATE(20);
SET_LEX_STATE(1);
REDUCE(ts_aux_sym_token3, ts_sym_object, 6, COLLAPSE({1, 0, 1, 0, 1, 1}))
REDUCE(ts_aux_sym_token4, ts_sym_object, 6, COLLAPSE({1, 0, 1, 0, 1, 1}))
REDUCE(ts_aux_sym_token3, ts_sym_object, 6)
REDUCE(ts_aux_sym_token4, ts_sym_object, 6)
END_STATE();
STATE(21);
@ -488,15 +507,15 @@ PARSE_TABLE() {
STATE(22);
SET_LEX_STATE(5);
REDUCE(ts_aux_sym_token3, ts_sym_value, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token6, ts_sym_value, 1, COLLAPSE({0}))
REDUCE(ts_aux_sym_token3, ts_sym_value, 1)
REDUCE(ts_aux_sym_token6, ts_sym_value, 1)
END_STATE();
STATE(23);
SET_LEX_STATE(5);
SHIFT(ts_aux_sym_repeat_helper2, 24)
SHIFT(ts_aux_sym_token3, 26)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 0)
END_STATE();
STATE(24);
@ -506,8 +525,8 @@ PARSE_TABLE() {
STATE(25);
SET_LEX_STATE(1);
REDUCE(ts_aux_sym_token3, ts_sym_array, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token4, ts_sym_array, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token3, ts_sym_array, 4)
REDUCE(ts_aux_sym_token4, ts_sym_array, 4)
END_STATE();
STATE(26);
@ -529,12 +548,12 @@ PARSE_TABLE() {
SET_LEX_STATE(5);
SHIFT(ts_aux_sym_repeat_helper2, 28)
SHIFT(ts_aux_sym_token3, 26)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 0)
END_STATE();
STATE(28);
SET_LEX_STATE(7);
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 3)
END_STATE();
STATE(29);
@ -567,7 +586,7 @@ PARSE_TABLE() {
SET_LEX_STATE(1);
SHIFT(ts_aux_sym_repeat_helper1, 33)
SHIFT(ts_aux_sym_token3, 10)
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0)
END_STATE();
STATE(33);
@ -577,21 +596,21 @@ PARSE_TABLE() {
STATE(34);
SET_LEX_STATE(5);
REDUCE(ts_aux_sym_token3, ts_sym_object, 6, COLLAPSE({1, 0, 1, 0, 1, 1}))
REDUCE(ts_aux_sym_token6, ts_sym_object, 6, COLLAPSE({1, 0, 1, 0, 1, 1}))
REDUCE(ts_aux_sym_token3, ts_sym_object, 6)
REDUCE(ts_aux_sym_token6, ts_sym_object, 6)
END_STATE();
STATE(35);
SET_LEX_STATE(5);
REDUCE(ts_aux_sym_token3, ts_sym_object, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token6, ts_sym_object, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token3, ts_sym_object, 2)
REDUCE(ts_aux_sym_token6, ts_sym_object, 2)
END_STATE();
STATE(36);
SET_LEX_STATE(1);
SHIFT(ts_aux_sym_repeat_helper1, 37)
SHIFT(ts_aux_sym_token3, 10)
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0)
END_STATE();
STATE(37);
@ -601,8 +620,8 @@ PARSE_TABLE() {
STATE(38);
SET_LEX_STATE(5);
REDUCE(ts_aux_sym_token3, ts_sym_object, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token6, ts_sym_object, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token3, ts_sym_object, 4)
REDUCE(ts_aux_sym_token6, ts_sym_object, 4)
END_STATE();
STATE(39);
@ -625,7 +644,7 @@ PARSE_TABLE() {
SET_LEX_STATE(5);
SHIFT(ts_aux_sym_repeat_helper2, 41)
SHIFT(ts_aux_sym_token3, 26)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 0)
END_STATE();
STATE(41);
@ -635,33 +654,33 @@ PARSE_TABLE() {
STATE(42);
SET_LEX_STATE(5);
REDUCE(ts_aux_sym_token3, ts_sym_array, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token6, ts_sym_array, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token3, ts_sym_array, 4)
REDUCE(ts_aux_sym_token6, ts_sym_array, 4)
END_STATE();
STATE(43);
SET_LEX_STATE(5);
REDUCE(ts_aux_sym_token3, ts_sym_array, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token6, ts_sym_array, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token3, ts_sym_array, 2)
REDUCE(ts_aux_sym_token6, ts_sym_array, 2)
END_STATE();
STATE(44);
SET_LEX_STATE(1);
REDUCE(ts_aux_sym_token3, ts_sym_array, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token4, ts_sym_array, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token3, ts_sym_array, 2)
REDUCE(ts_aux_sym_token4, ts_sym_array, 2)
END_STATE();
STATE(45);
SET_LEX_STATE(1);
REDUCE(ts_aux_sym_token3, ts_sym_object, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token4, ts_sym_object, 2, COLLAPSE({1, 1}))
REDUCE(ts_aux_sym_token3, ts_sym_object, 2)
REDUCE(ts_aux_sym_token4, ts_sym_object, 2)
END_STATE();
STATE(46);
SET_LEX_STATE(1);
SHIFT(ts_aux_sym_repeat_helper1, 47)
SHIFT(ts_aux_sym_token3, 10)
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0)
END_STATE();
STATE(47);
@ -671,32 +690,32 @@ PARSE_TABLE() {
STATE(48);
SET_LEX_STATE(1);
REDUCE(ts_aux_sym_token3, ts_sym_object, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token4, ts_sym_object, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_aux_sym_token3, ts_sym_object, 4)
REDUCE(ts_aux_sym_token4, ts_sym_object, 4)
END_STATE();
STATE(49);
SET_LEX_STATE(1);
SHIFT(ts_aux_sym_repeat_helper1, 50)
SHIFT(ts_aux_sym_token3, 10)
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0)
END_STATE();
STATE(50);
SET_LEX_STATE(4);
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 3, COLLAPSE({1, 0, 1}))
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 3)
END_STATE();
STATE(51);
SET_LEX_STATE(0);
REDUCE(ts_builtin_sym_end, ts_sym_object, 2, COLLAPSE({1, 1}))
REDUCE(ts_builtin_sym_end, ts_sym_object, 2)
END_STATE();
STATE(52);
SET_LEX_STATE(1);
SHIFT(ts_aux_sym_repeat_helper1, 53)
SHIFT(ts_aux_sym_token3, 10)
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 0)
END_STATE();
STATE(53);
@ -706,7 +725,7 @@ PARSE_TABLE() {
STATE(54);
SET_LEX_STATE(0);
REDUCE(ts_builtin_sym_end, ts_sym_object, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_builtin_sym_end, ts_sym_object, 4)
END_STATE();
STATE(55);
@ -729,7 +748,7 @@ PARSE_TABLE() {
SET_LEX_STATE(5);
SHIFT(ts_aux_sym_repeat_helper2, 57)
SHIFT(ts_aux_sym_token3, 26)
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 0, COLLAPSE({}))
REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 0)
END_STATE();
STATE(57);
@ -739,12 +758,12 @@ PARSE_TABLE() {
STATE(58);
SET_LEX_STATE(0);
REDUCE(ts_builtin_sym_end, ts_sym_array, 4, COLLAPSE({1, 0, 1, 1}))
REDUCE(ts_builtin_sym_end, ts_sym_array, 4)
END_STATE();
STATE(59);
SET_LEX_STATE(0);
REDUCE(ts_builtin_sym_end, ts_sym_array, 2, COLLAPSE({1, 1}))
REDUCE(ts_builtin_sym_end, ts_sym_array, 2)
END_STATE();
END_TABLE();

View file

@ -68,13 +68,16 @@ ts_lex(ts_lexer *lexer, state_id lex_state)
#define SYMBOL_NAMES \
static const char *ts_symbol_names[]
#define HIDDEN_SYMBOL_FLAGS \
static const int hidden_symbol_flags[]
#define EXPORT_PARSER(constructor_name) \
ts_parser constructor_name() { \
ts_init_parse_table(); \
ts_parser result = { \
.parse_fn = ts_parse, \
.symbol_names = ts_symbol_names, \
.data = ts_lr_parser_make(), \
.data = ts_lr_parser_make(hidden_symbol_flags), \
.free_fn = NULL \
}; \
return result; \
@ -86,14 +89,11 @@ actions_for_state[on_symbol] = (ts_parse_action) { \
.data = { .to_state = to_state_value } \
};
#define REDUCE(on_symbol, symbol_val, child_count_val, collapse_flags_val) \
do { \
static const int collapse_flags[child_count_val] = collapse_flags_val; \
actions_for_state[on_symbol] = (ts_parse_action) { \
.type = ts_parse_action_type_reduce, \
.data = { .symbol = symbol_val, .child_count = child_count_val, .collapse_flags = collapse_flags } \
}; \
} while(0);
#define REDUCE(on_symbol, symbol_val, child_count_val) \
actions_for_state[on_symbol] = (ts_parse_action) { \
.type = ts_parse_action_type_reduce, \
.data = { .symbol = symbol_val, .child_count = child_count_val } \
}; \
#define ACCEPT_INPUT(on_symbol) \
actions_for_state[on_symbol] = (ts_parse_action) { \
@ -132,8 +132,6 @@ return ts_lexer_build_node(lexer, ts_builtin_sym_error);
#define LEX_PANIC() \
{ DEBUG_LEX("Lex error: unexpected state %d", LEX_STATE()); return NULL; }
#define COLLAPSE(...) __VA_ARGS__
/*
* Stack
@ -259,14 +257,16 @@ PARSE_TABLE();
typedef struct {
ts_lexer lexer;
ts_stack stack;
const int *hidden_symbol_flags;
ts_tree *lookahead;
ts_tree *next_lookahead;
} ts_lr_parser;
static ts_lr_parser * ts_lr_parser_make() {
static ts_lr_parser * ts_lr_parser_make(const int *hidden_symbol_flags) {
ts_lr_parser *result = malloc(sizeof(ts_lr_parser));
result->lexer = ts_lexer_make();
result->stack = ts_stack_make();
result->hidden_symbol_flags = hidden_symbol_flags;
return result;
}
@ -323,9 +323,9 @@ static void ts_lr_parser_shift(ts_lr_parser *parser, state_id parse_state) {
parser->next_lookahead = NULL;
}
static void ts_lr_parser_reduce(ts_lr_parser *parser, ts_symbol symbol, int immediate_child_count, const int *collapse_flags) {
static void ts_lr_parser_reduce(ts_lr_parser *parser, ts_symbol symbol, int child_count) {
parser->next_lookahead = parser->lookahead;
parser->lookahead = ts_stack_reduce(&parser->stack, symbol, immediate_child_count, collapse_flags);
parser->lookahead = ts_stack_reduce(&parser->stack, symbol, child_count, parser->hidden_symbol_flags);
}
static ts_symbol * ts_lr_parser_expected_symbols(ts_lr_parser *parser, size_t *count) {
@ -394,7 +394,7 @@ static const ts_tree * ts_parse(void *data, ts_input input, ts_input_edit *edit)
ts_lr_parser_shift(parser, action.data.to_state);
break;
case ts_parse_action_type_reduce:
ts_lr_parser_reduce(parser, action.data.symbol, action.data.child_count, action.data.collapse_flags);
ts_lr_parser_reduce(parser, action.data.symbol, action.data.child_count);
break;
case ts_parse_action_type_accept:
done = 1;

View file

@ -114,17 +114,6 @@ namespace tree_sitter {
return "!(" + condition_for_character_set(rule.complement()) + ")";
}
string collapse_flags(vector<bool> flags) {
string result;
bool started = false;
for (auto flag : flags) {
if (started) result += ", ";
result += (flag ? "1" : "0");
started = true;
}
return result;
}
string code_for_parse_actions(const rules::Symbol &symbol, const ParseAction &action) {
string sym_id = symbol_id(symbol);
switch (action.type) {
@ -136,8 +125,7 @@ namespace tree_sitter {
return "REDUCE(" +
sym_id + ", " +
symbol_id(action.symbol) + ", " +
to_string(action.child_flags.size()) + ", " +
"COLLAPSE({" + collapse_flags(action.child_flags) + "}))";
to_string(action.child_flags.size()) + ")";
default:
return "";
}
@ -206,6 +194,14 @@ namespace tree_sitter {
result += indent(string("\"") + symbol.name) + "\",\n";
return result + "};";
}
string hidden_symbol_flags() {
string result = "HIDDEN_SYMBOL_FLAGS = {\n";
for (auto &symbol : parse_table.symbols)
if (!symbol.is_built_in())
result += indent(symbol.is_hidden() ? "1" : "0") + ",\n";
return result + "};";
}
string includes() {
return "#include \"tree_sitter/parser.h\"";
@ -265,6 +261,7 @@ namespace tree_sitter {
symbol_count(),
symbol_enum(),
rule_names_list(),
hidden_symbol_flags(),
lex_function(),
parse_table_function(),
parser_export(),

View file

@ -58,7 +58,7 @@ size_t ts_stack_right_position(const ts_stack *stack) {
return result;
}
ts_tree * ts_stack_reduce(ts_stack *stack, ts_symbol symbol, int immediate_child_count, const int *collapse_flags) {
ts_tree * ts_stack_reduce(ts_stack *stack, ts_symbol symbol, int immediate_child_count, const int *hidden_symbol_flags) {
size_t new_stack_size = stack->size - immediate_child_count;
size_t size = 0, offset = 0;
@ -72,7 +72,8 @@ ts_tree * ts_stack_reduce(ts_stack *stack, ts_symbol symbol, int immediate_child
size += ts_tree_offset(child) + ts_tree_size(child);
}
if (collapse_flags[i]) {
ts_symbol symbol = ts_tree_symbol(child);
if (symbol >= 0 && hidden_symbol_flags[symbol]) {
size_t grandchild_count;
ts_tree_children(child, &grandchild_count);
child_count += grandchild_count;
@ -89,7 +90,9 @@ ts_tree * ts_stack_reduce(ts_stack *stack, ts_symbol symbol, int immediate_child
ts_tree *child = stack->entries[new_stack_size + i].node;
immediate_children[i] = child;
if (collapse_flags[i]) {
ts_symbol symbol = ts_tree_symbol(child);
if (symbol >= 0 && hidden_symbol_flags[symbol]) {
size_t grandchild_count;
ts_tree ** grandchildren = ts_tree_children(child, &grandchild_count);
memcpy(children + child_index, grandchildren, (grandchild_count * sizeof(ts_tree *)));