diff --git a/examples/parsers/arithmetic.c b/examples/parsers/arithmetic.c index 353ebb57..884f825b 100644 --- a/examples/parsers/arithmetic.c +++ b/examples/parsers/arithmetic.c @@ -3,18 +3,20 @@ #define TS_SYMBOL_COUNT 11 enum { - ts_sym_expression, - ts_sym_factor, - ts_sym_number, - ts_sym_plus, - ts_sym_term, - ts_sym_times, - ts_sym_variable, - ts_aux_sym_token1, - ts_aux_sym_token2, + ts_sym_expression = 2, + ts_sym_factor = 3, + ts_sym_number = 4, + ts_sym_plus = 5, + ts_sym_term = 6, + ts_sym_times = 7, + ts_sym_variable = 8, + ts_aux_sym_token1 = 9, + ts_aux_sym_token2 = 10, }; SYMBOL_NAMES = { + "error", + "end", "expression", "factor", "number", @@ -26,16 +28,9 @@ SYMBOL_NAMES = { "token2", }; -HIDDEN_SYMBOL_FLAGS = { - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, +HIDDEN_SYMBOLS(11) = { + [ts_aux_sym_token1] = 1, + [ts_aux_sym_token2] = 1, }; LEX_FN() { @@ -136,369 +131,368 @@ LEX_FN() { } } -PARSE_TABLE() { - START_TABLE(52) +LEX_STATES(52) = { + [0] = 8, + [1] = 0, + [2] = 15, + [3] = 8, + [4] = 1, + [5] = 1, + [6] = 8, + [7] = 3, + [8] = 1, + [9] = 6, + [10] = 8, + [11] = 5, + [12] = 5, + [13] = 8, + [14] = 3, + [15] = 5, + [16] = 6, + [17] = 5, + [18] = 8, + [19] = 14, + [20] = 8, + [21] = 3, + [22] = 3, + [23] = 8, + [24] = 3, + [25] = 3, + [26] = 8, + [27] = 3, + [28] = 6, + [29] = 14, + [30] = 3, + [31] = 8, + [32] = 3, + [33] = 14, + [34] = 15, + [35] = 1, + [36] = 8, + [37] = 16, + [38] = 8, + [39] = 0, + [40] = 0, + [41] = 8, + [42] = 3, + [43] = 0, + [44] = 16, + [45] = 0, + [46] = 8, + [47] = 3, + [48] = 16, + [49] = 8, + [50] = 3, + [51] = 15, +}; + +PARSE_TABLE(52, 11) = { + [0] = { + [ts_sym_expression] = SHIFT(1), + [ts_sym_factor] = SHIFT(2), + [ts_sym_number] = SHIFT(34), + [ts_sym_term] = SHIFT(35), + [ts_sym_variable] = SHIFT(34), + [ts_aux_sym_token1] = SHIFT(49), + }, - STATE(0); - SET_LEX_STATE(8); - SHIFT(ts_sym_expression, 1) - SHIFT(ts_sym_factor, 2) - SHIFT(ts_sym_number, 34) - SHIFT(ts_sym_term, 35) - SHIFT(ts_sym_variable, 34) - SHIFT(ts_aux_sym_token1, 49) - END_STATE(); + [1] = { + [ts_builtin_sym_end] = ACCEPT_INPUT(), + }, - STATE(1); - SET_LEX_STATE(0); - ACCEPT_INPUT(ts_builtin_sym_end) - END_STATE(); + [2] = { + [ts_sym_plus] = REDUCE(ts_sym_term, 1), + [ts_sym_times] = SHIFT(3), + [ts_builtin_sym_end] = REDUCE(ts_sym_term, 1), + }, - STATE(2); - SET_LEX_STATE(15); - REDUCE(ts_sym_plus, ts_sym_term, 1) - SHIFT(ts_sym_times, 3) - REDUCE(ts_builtin_sym_end, ts_sym_term, 1) - END_STATE(); + [3] = { + [ts_sym_factor] = SHIFT(4), + [ts_sym_number] = SHIFT(5), + [ts_sym_variable] = SHIFT(5), + [ts_aux_sym_token1] = SHIFT(6), + }, - STATE(3); - SET_LEX_STATE(8); - SHIFT(ts_sym_factor, 4) - SHIFT(ts_sym_number, 5) - SHIFT(ts_sym_variable, 5) - SHIFT(ts_aux_sym_token1, 6) - END_STATE(); + [4] = { + [ts_sym_plus] = REDUCE(ts_sym_term, 3), + [ts_builtin_sym_end] = REDUCE(ts_sym_term, 3), + }, - STATE(4); - SET_LEX_STATE(1); - REDUCE(ts_sym_plus, ts_sym_term, 3) - REDUCE(ts_builtin_sym_end, ts_sym_term, 3) - END_STATE(); + [5] = { + [ts_sym_plus] = REDUCE(ts_sym_factor, 1), + [ts_builtin_sym_end] = REDUCE(ts_sym_factor, 1), + }, - STATE(5); - SET_LEX_STATE(1); - REDUCE(ts_sym_plus, ts_sym_factor, 1) - REDUCE(ts_builtin_sym_end, ts_sym_factor, 1) - END_STATE(); + [6] = { + [ts_sym_expression] = SHIFT(7), + [ts_sym_factor] = SHIFT(9), + [ts_sym_number] = SHIFT(16), + [ts_sym_term] = SHIFT(17), + [ts_sym_variable] = SHIFT(16), + [ts_aux_sym_token1] = SHIFT(26), + [ts_builtin_sym_error] = SHIFT(7), + }, - STATE(6); - SET_LEX_STATE(8); - SHIFT(ts_sym_expression, 7) - SHIFT(ts_sym_factor, 9) - SHIFT(ts_sym_number, 16) - SHIFT(ts_sym_term, 17) - SHIFT(ts_sym_variable, 16) - SHIFT(ts_aux_sym_token1, 26) - SHIFT(ts_builtin_sym_error, 7) - END_STATE(); + [7] = { + [ts_aux_sym_token2] = SHIFT(8), + }, - STATE(7); - SET_LEX_STATE(3); - SHIFT(ts_aux_sym_token2, 8) - END_STATE(); + [8] = { + [ts_sym_plus] = REDUCE(ts_sym_factor, 3), + [ts_builtin_sym_end] = REDUCE(ts_sym_factor, 3), + }, - STATE(8); - SET_LEX_STATE(1); - REDUCE(ts_sym_plus, ts_sym_factor, 3) - REDUCE(ts_builtin_sym_end, ts_sym_factor, 3) - END_STATE(); + [9] = { + [ts_sym_plus] = REDUCE(ts_sym_term, 1), + [ts_sym_times] = SHIFT(10), + [ts_aux_sym_token2] = REDUCE(ts_sym_term, 1), + }, - STATE(9); - SET_LEX_STATE(6); - REDUCE(ts_sym_plus, ts_sym_term, 1) - SHIFT(ts_sym_times, 10) - REDUCE(ts_aux_sym_token2, ts_sym_term, 1) - END_STATE(); + [10] = { + [ts_sym_factor] = SHIFT(11), + [ts_sym_number] = SHIFT(12), + [ts_sym_variable] = SHIFT(12), + [ts_aux_sym_token1] = SHIFT(13), + }, - STATE(10); - SET_LEX_STATE(8); - SHIFT(ts_sym_factor, 11) - SHIFT(ts_sym_number, 12) - SHIFT(ts_sym_variable, 12) - SHIFT(ts_aux_sym_token1, 13) - END_STATE(); + [11] = { + [ts_sym_plus] = REDUCE(ts_sym_term, 3), + [ts_aux_sym_token2] = REDUCE(ts_sym_term, 3), + }, - STATE(11); - SET_LEX_STATE(5); - REDUCE(ts_sym_plus, ts_sym_term, 3) - REDUCE(ts_aux_sym_token2, ts_sym_term, 3) - END_STATE(); + [12] = { + [ts_sym_plus] = REDUCE(ts_sym_factor, 1), + [ts_aux_sym_token2] = REDUCE(ts_sym_factor, 1), + }, - STATE(12); - SET_LEX_STATE(5); - REDUCE(ts_sym_plus, ts_sym_factor, 1) - REDUCE(ts_aux_sym_token2, ts_sym_factor, 1) - END_STATE(); + [13] = { + [ts_sym_expression] = SHIFT(14), + [ts_sym_factor] = SHIFT(9), + [ts_sym_number] = SHIFT(16), + [ts_sym_term] = SHIFT(17), + [ts_sym_variable] = SHIFT(16), + [ts_aux_sym_token1] = SHIFT(26), + [ts_builtin_sym_error] = SHIFT(14), + }, - STATE(13); - SET_LEX_STATE(8); - SHIFT(ts_sym_expression, 14) - SHIFT(ts_sym_factor, 9) - SHIFT(ts_sym_number, 16) - SHIFT(ts_sym_term, 17) - SHIFT(ts_sym_variable, 16) - SHIFT(ts_aux_sym_token1, 26) - SHIFT(ts_builtin_sym_error, 14) - END_STATE(); + [14] = { + [ts_aux_sym_token2] = SHIFT(15), + }, - STATE(14); - SET_LEX_STATE(3); - SHIFT(ts_aux_sym_token2, 15) - END_STATE(); + [15] = { + [ts_sym_plus] = REDUCE(ts_sym_factor, 3), + [ts_aux_sym_token2] = REDUCE(ts_sym_factor, 3), + }, - STATE(15); - SET_LEX_STATE(5); - REDUCE(ts_sym_plus, ts_sym_factor, 3) - REDUCE(ts_aux_sym_token2, ts_sym_factor, 3) - END_STATE(); + [16] = { + [ts_sym_plus] = REDUCE(ts_sym_factor, 1), + [ts_sym_times] = REDUCE(ts_sym_factor, 1), + [ts_aux_sym_token2] = REDUCE(ts_sym_factor, 1), + }, - STATE(16); - SET_LEX_STATE(6); - 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(); + [17] = { + [ts_sym_plus] = SHIFT(18), + [ts_aux_sym_token2] = REDUCE(ts_sym_expression, 1), + }, - STATE(17); - SET_LEX_STATE(5); - SHIFT(ts_sym_plus, 18) - REDUCE(ts_aux_sym_token2, ts_sym_expression, 1) - END_STATE(); + [18] = { + [ts_sym_factor] = SHIFT(19), + [ts_sym_number] = SHIFT(29), + [ts_sym_term] = SHIFT(30), + [ts_sym_variable] = SHIFT(29), + [ts_aux_sym_token1] = SHIFT(31), + }, - STATE(18); - SET_LEX_STATE(8); - SHIFT(ts_sym_factor, 19) - SHIFT(ts_sym_number, 29) - SHIFT(ts_sym_term, 30) - SHIFT(ts_sym_variable, 29) - SHIFT(ts_aux_sym_token1, 31) - END_STATE(); + [19] = { + [ts_sym_times] = SHIFT(20), + [ts_aux_sym_token2] = REDUCE(ts_sym_term, 1), + }, - STATE(19); - SET_LEX_STATE(14); - SHIFT(ts_sym_times, 20) - REDUCE(ts_aux_sym_token2, ts_sym_term, 1) - END_STATE(); + [20] = { + [ts_sym_factor] = SHIFT(21), + [ts_sym_number] = SHIFT(22), + [ts_sym_variable] = SHIFT(22), + [ts_aux_sym_token1] = SHIFT(23), + }, - STATE(20); - SET_LEX_STATE(8); - SHIFT(ts_sym_factor, 21) - SHIFT(ts_sym_number, 22) - SHIFT(ts_sym_variable, 22) - SHIFT(ts_aux_sym_token1, 23) - END_STATE(); + [21] = { + [ts_aux_sym_token2] = REDUCE(ts_sym_term, 3), + }, - STATE(21); - SET_LEX_STATE(3); - REDUCE(ts_aux_sym_token2, ts_sym_term, 3) - END_STATE(); + [22] = { + [ts_aux_sym_token2] = REDUCE(ts_sym_factor, 1), + }, - STATE(22); - SET_LEX_STATE(3); - REDUCE(ts_aux_sym_token2, ts_sym_factor, 1) - END_STATE(); + [23] = { + [ts_sym_expression] = SHIFT(24), + [ts_sym_factor] = SHIFT(9), + [ts_sym_number] = SHIFT(16), + [ts_sym_term] = SHIFT(17), + [ts_sym_variable] = SHIFT(16), + [ts_aux_sym_token1] = SHIFT(26), + [ts_builtin_sym_error] = SHIFT(24), + }, - STATE(23); - SET_LEX_STATE(8); - SHIFT(ts_sym_expression, 24) - SHIFT(ts_sym_factor, 9) - SHIFT(ts_sym_number, 16) - SHIFT(ts_sym_term, 17) - SHIFT(ts_sym_variable, 16) - SHIFT(ts_aux_sym_token1, 26) - SHIFT(ts_builtin_sym_error, 24) - END_STATE(); + [24] = { + [ts_aux_sym_token2] = SHIFT(25), + }, - STATE(24); - SET_LEX_STATE(3); - SHIFT(ts_aux_sym_token2, 25) - END_STATE(); + [25] = { + [ts_aux_sym_token2] = REDUCE(ts_sym_factor, 3), + }, - STATE(25); - SET_LEX_STATE(3); - REDUCE(ts_aux_sym_token2, ts_sym_factor, 3) - END_STATE(); + [26] = { + [ts_sym_expression] = SHIFT(27), + [ts_sym_factor] = SHIFT(9), + [ts_sym_number] = SHIFT(16), + [ts_sym_term] = SHIFT(17), + [ts_sym_variable] = SHIFT(16), + [ts_aux_sym_token1] = SHIFT(26), + [ts_builtin_sym_error] = SHIFT(27), + }, - STATE(26); - SET_LEX_STATE(8); - SHIFT(ts_sym_expression, 27) - SHIFT(ts_sym_factor, 9) - SHIFT(ts_sym_number, 16) - SHIFT(ts_sym_term, 17) - SHIFT(ts_sym_variable, 16) - SHIFT(ts_aux_sym_token1, 26) - SHIFT(ts_builtin_sym_error, 27) - END_STATE(); + [27] = { + [ts_aux_sym_token2] = SHIFT(28), + }, - STATE(27); - SET_LEX_STATE(3); - SHIFT(ts_aux_sym_token2, 28) - END_STATE(); + [28] = { + [ts_sym_plus] = REDUCE(ts_sym_factor, 3), + [ts_sym_times] = REDUCE(ts_sym_factor, 3), + [ts_aux_sym_token2] = REDUCE(ts_sym_factor, 3), + }, - STATE(28); - SET_LEX_STATE(6); - 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(); + [29] = { + [ts_sym_times] = REDUCE(ts_sym_factor, 1), + [ts_aux_sym_token2] = REDUCE(ts_sym_factor, 1), + }, - STATE(29); - SET_LEX_STATE(14); - REDUCE(ts_sym_times, ts_sym_factor, 1) - REDUCE(ts_aux_sym_token2, ts_sym_factor, 1) - END_STATE(); + [30] = { + [ts_aux_sym_token2] = REDUCE(ts_sym_expression, 3), + }, - STATE(30); - SET_LEX_STATE(3); - REDUCE(ts_aux_sym_token2, ts_sym_expression, 3) - END_STATE(); + [31] = { + [ts_sym_expression] = SHIFT(32), + [ts_sym_factor] = SHIFT(9), + [ts_sym_number] = SHIFT(16), + [ts_sym_term] = SHIFT(17), + [ts_sym_variable] = SHIFT(16), + [ts_aux_sym_token1] = SHIFT(26), + [ts_builtin_sym_error] = SHIFT(32), + }, - STATE(31); - SET_LEX_STATE(8); - SHIFT(ts_sym_expression, 32) - SHIFT(ts_sym_factor, 9) - SHIFT(ts_sym_number, 16) - SHIFT(ts_sym_term, 17) - SHIFT(ts_sym_variable, 16) - SHIFT(ts_aux_sym_token1, 26) - SHIFT(ts_builtin_sym_error, 32) - END_STATE(); + [32] = { + [ts_aux_sym_token2] = SHIFT(33), + }, - STATE(32); - SET_LEX_STATE(3); - SHIFT(ts_aux_sym_token2, 33) - END_STATE(); + [33] = { + [ts_sym_times] = REDUCE(ts_sym_factor, 3), + [ts_aux_sym_token2] = REDUCE(ts_sym_factor, 3), + }, - STATE(33); - SET_LEX_STATE(14); - REDUCE(ts_sym_times, ts_sym_factor, 3) - REDUCE(ts_aux_sym_token2, ts_sym_factor, 3) - END_STATE(); + [34] = { + [ts_sym_plus] = REDUCE(ts_sym_factor, 1), + [ts_sym_times] = REDUCE(ts_sym_factor, 1), + [ts_builtin_sym_end] = REDUCE(ts_sym_factor, 1), + }, - STATE(34); - SET_LEX_STATE(15); - 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(); + [35] = { + [ts_sym_plus] = SHIFT(36), + [ts_builtin_sym_end] = REDUCE(ts_sym_expression, 1), + }, - STATE(35); - SET_LEX_STATE(1); - SHIFT(ts_sym_plus, 36) - REDUCE(ts_builtin_sym_end, ts_sym_expression, 1) - END_STATE(); + [36] = { + [ts_sym_factor] = SHIFT(37), + [ts_sym_number] = SHIFT(44), + [ts_sym_term] = SHIFT(45), + [ts_sym_variable] = SHIFT(44), + [ts_aux_sym_token1] = SHIFT(46), + }, - STATE(36); - SET_LEX_STATE(8); - SHIFT(ts_sym_factor, 37) - SHIFT(ts_sym_number, 44) - SHIFT(ts_sym_term, 45) - SHIFT(ts_sym_variable, 44) - SHIFT(ts_aux_sym_token1, 46) - END_STATE(); + [37] = { + [ts_sym_times] = SHIFT(38), + [ts_builtin_sym_end] = REDUCE(ts_sym_term, 1), + }, - STATE(37); - SET_LEX_STATE(16); - SHIFT(ts_sym_times, 38) - REDUCE(ts_builtin_sym_end, ts_sym_term, 1) - END_STATE(); + [38] = { + [ts_sym_factor] = SHIFT(39), + [ts_sym_number] = SHIFT(40), + [ts_sym_variable] = SHIFT(40), + [ts_aux_sym_token1] = SHIFT(41), + }, - STATE(38); - SET_LEX_STATE(8); - SHIFT(ts_sym_factor, 39) - SHIFT(ts_sym_number, 40) - SHIFT(ts_sym_variable, 40) - SHIFT(ts_aux_sym_token1, 41) - END_STATE(); + [39] = { + [ts_builtin_sym_end] = REDUCE(ts_sym_term, 3), + }, - STATE(39); - SET_LEX_STATE(0); - REDUCE(ts_builtin_sym_end, ts_sym_term, 3) - END_STATE(); + [40] = { + [ts_builtin_sym_end] = REDUCE(ts_sym_factor, 1), + }, - STATE(40); - SET_LEX_STATE(0); - REDUCE(ts_builtin_sym_end, ts_sym_factor, 1) - END_STATE(); + [41] = { + [ts_sym_expression] = SHIFT(42), + [ts_sym_factor] = SHIFT(9), + [ts_sym_number] = SHIFT(16), + [ts_sym_term] = SHIFT(17), + [ts_sym_variable] = SHIFT(16), + [ts_aux_sym_token1] = SHIFT(26), + [ts_builtin_sym_error] = SHIFT(42), + }, - STATE(41); - SET_LEX_STATE(8); - SHIFT(ts_sym_expression, 42) - SHIFT(ts_sym_factor, 9) - SHIFT(ts_sym_number, 16) - SHIFT(ts_sym_term, 17) - SHIFT(ts_sym_variable, 16) - SHIFT(ts_aux_sym_token1, 26) - SHIFT(ts_builtin_sym_error, 42) - END_STATE(); + [42] = { + [ts_aux_sym_token2] = SHIFT(43), + }, - STATE(42); - SET_LEX_STATE(3); - SHIFT(ts_aux_sym_token2, 43) - END_STATE(); + [43] = { + [ts_builtin_sym_end] = REDUCE(ts_sym_factor, 3), + }, - STATE(43); - SET_LEX_STATE(0); - REDUCE(ts_builtin_sym_end, ts_sym_factor, 3) - END_STATE(); + [44] = { + [ts_sym_times] = REDUCE(ts_sym_factor, 1), + [ts_builtin_sym_end] = REDUCE(ts_sym_factor, 1), + }, - STATE(44); - SET_LEX_STATE(16); - REDUCE(ts_sym_times, ts_sym_factor, 1) - REDUCE(ts_builtin_sym_end, ts_sym_factor, 1) - END_STATE(); + [45] = { + [ts_builtin_sym_end] = REDUCE(ts_sym_expression, 3), + }, - STATE(45); - SET_LEX_STATE(0); - REDUCE(ts_builtin_sym_end, ts_sym_expression, 3) - END_STATE(); + [46] = { + [ts_sym_expression] = SHIFT(47), + [ts_sym_factor] = SHIFT(9), + [ts_sym_number] = SHIFT(16), + [ts_sym_term] = SHIFT(17), + [ts_sym_variable] = SHIFT(16), + [ts_aux_sym_token1] = SHIFT(26), + [ts_builtin_sym_error] = SHIFT(47), + }, - STATE(46); - SET_LEX_STATE(8); - SHIFT(ts_sym_expression, 47) - SHIFT(ts_sym_factor, 9) - SHIFT(ts_sym_number, 16) - SHIFT(ts_sym_term, 17) - SHIFT(ts_sym_variable, 16) - SHIFT(ts_aux_sym_token1, 26) - SHIFT(ts_builtin_sym_error, 47) - END_STATE(); + [47] = { + [ts_aux_sym_token2] = SHIFT(48), + }, - STATE(47); - SET_LEX_STATE(3); - SHIFT(ts_aux_sym_token2, 48) - END_STATE(); + [48] = { + [ts_sym_times] = REDUCE(ts_sym_factor, 3), + [ts_builtin_sym_end] = REDUCE(ts_sym_factor, 3), + }, - STATE(48); - SET_LEX_STATE(16); - REDUCE(ts_sym_times, ts_sym_factor, 3) - REDUCE(ts_builtin_sym_end, ts_sym_factor, 3) - END_STATE(); + [49] = { + [ts_sym_expression] = SHIFT(50), + [ts_sym_factor] = SHIFT(9), + [ts_sym_number] = SHIFT(16), + [ts_sym_term] = SHIFT(17), + [ts_sym_variable] = SHIFT(16), + [ts_aux_sym_token1] = SHIFT(26), + [ts_builtin_sym_error] = SHIFT(50), + }, - STATE(49); - SET_LEX_STATE(8); - SHIFT(ts_sym_expression, 50) - SHIFT(ts_sym_factor, 9) - SHIFT(ts_sym_number, 16) - SHIFT(ts_sym_term, 17) - SHIFT(ts_sym_variable, 16) - SHIFT(ts_aux_sym_token1, 26) - SHIFT(ts_builtin_sym_error, 50) - END_STATE(); + [50] = { + [ts_aux_sym_token2] = SHIFT(51), + }, - STATE(50); - SET_LEX_STATE(3); - SHIFT(ts_aux_sym_token2, 51) - END_STATE(); - - STATE(51); - SET_LEX_STATE(15); - 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(); -} + [51] = { + [ts_sym_plus] = REDUCE(ts_sym_factor, 3), + [ts_sym_times] = REDUCE(ts_sym_factor, 3), + [ts_builtin_sym_end] = REDUCE(ts_sym_factor, 3), + }, +}; EXPORT_PARSER(ts_parser_arithmetic); diff --git a/examples/parsers/javascript.c b/examples/parsers/javascript.c index 117051ad..e9f85a4a 100644 --- a/examples/parsers/javascript.c +++ b/examples/parsers/javascript.c @@ -3,42 +3,44 @@ #define TS_SYMBOL_COUNT 35 enum { - ts_sym__IF, - ts_sym__VAR, - ts_sym__terminator, - ts_sym_array, - ts_sym_assignment, - ts_sym_expression, - ts_sym_false, - ts_sym_identifier, - ts_sym_if_statement, - ts_sym_literal, - ts_sym_null, - ts_sym_number, - ts_sym_object, - ts_sym_program, - ts_sym_statement, - ts_sym_statement_block, - ts_sym_string, - ts_sym_true, - ts_aux_sym_repeat_helper1, - ts_aux_sym_repeat_helper2, - ts_aux_sym_repeat_helper3, - ts_aux_sym_repeat_helper4, - ts_aux_sym_token1, - ts_aux_sym_token10, - ts_aux_sym_token11, - ts_aux_sym_token2, - ts_aux_sym_token3, - ts_aux_sym_token4, - ts_aux_sym_token5, - ts_aux_sym_token6, - ts_aux_sym_token7, - ts_aux_sym_token8, - ts_aux_sym_token9, + ts_sym__IF = 2, + ts_sym__VAR = 3, + ts_sym__terminator = 4, + ts_sym_array = 5, + ts_sym_assignment = 6, + ts_sym_expression = 7, + ts_sym_false = 8, + ts_sym_identifier = 9, + ts_sym_if_statement = 10, + ts_sym_literal = 11, + ts_sym_null = 12, + ts_sym_number = 13, + ts_sym_object = 14, + ts_sym_program = 15, + ts_sym_statement = 16, + ts_sym_statement_block = 17, + ts_sym_string = 18, + ts_sym_true = 19, + ts_aux_sym_repeat_helper1 = 20, + ts_aux_sym_repeat_helper2 = 21, + ts_aux_sym_repeat_helper3 = 22, + ts_aux_sym_repeat_helper4 = 23, + ts_aux_sym_token1 = 24, + ts_aux_sym_token10 = 25, + ts_aux_sym_token11 = 26, + ts_aux_sym_token2 = 27, + ts_aux_sym_token3 = 28, + ts_aux_sym_token4 = 29, + ts_aux_sym_token5 = 30, + ts_aux_sym_token6 = 31, + ts_aux_sym_token7 = 32, + ts_aux_sym_token8 = 33, + ts_aux_sym_token9 = 34, }; SYMBOL_NAMES = { + "error", + "end", "_IF", "_VAR", "_terminator", @@ -74,40 +76,25 @@ 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, +HIDDEN_SYMBOLS(35) = { + [ts_sym__IF] = 1, + [ts_sym__VAR] = 1, + [ts_sym__terminator] = 1, + [ts_aux_sym_repeat_helper1] = 1, + [ts_aux_sym_repeat_helper2] = 1, + [ts_aux_sym_repeat_helper3] = 1, + [ts_aux_sym_repeat_helper4] = 1, + [ts_aux_sym_token1] = 1, + [ts_aux_sym_token10] = 1, + [ts_aux_sym_token11] = 1, + [ts_aux_sym_token2] = 1, + [ts_aux_sym_token3] = 1, + [ts_aux_sym_token4] = 1, + [ts_aux_sym_token5] = 1, + [ts_aux_sym_token6] = 1, + [ts_aux_sym_token7] = 1, + [ts_aux_sym_token8] = 1, + [ts_aux_sym_token9] = 1, }; LEX_FN() { @@ -741,985 +728,984 @@ LEX_FN() { } } -PARSE_TABLE() { - START_TABLE(113) - - STATE(0); - SET_LEX_STATE(2); - SHIFT(ts_sym__IF, 1) - SHIFT(ts_sym__VAR, 14) - SHIFT(ts_sym_array, 17) - SHIFT(ts_sym_assignment, 105) - SHIFT(ts_sym_expression, 105) - SHIFT(ts_sym_false, 17) - SHIFT(ts_sym_identifier, 19) - SHIFT(ts_sym_if_statement, 108) - SHIFT(ts_sym_literal, 19) - SHIFT(ts_sym_null, 17) - SHIFT(ts_sym_number, 17) - SHIFT(ts_sym_object, 17) - SHIFT(ts_sym_program, 109) - SHIFT(ts_sym_statement, 110) - SHIFT(ts_sym_string, 17) - SHIFT(ts_sym_true, 17) - 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) - END_STATE(); - - STATE(1); - SET_LEX_STATE(77); - SHIFT(ts_aux_sym_token3, 2) - END_STATE(); - - STATE(2); - SET_LEX_STATE(68); - SHIFT(ts_sym_array, 3) - SHIFT(ts_sym_expression, 4) - SHIFT(ts_sym_false, 3) - SHIFT(ts_sym_identifier, 87) - SHIFT(ts_sym_literal, 87) - SHIFT(ts_sym_null, 3) - SHIFT(ts_sym_number, 3) - SHIFT(ts_sym_object, 3) - SHIFT(ts_sym_string, 3) - SHIFT(ts_sym_true, 3) - SHIFT(ts_aux_sym_token10, 88) - SHIFT(ts_aux_sym_token5, 93) - END_STATE(); - - STATE(3); - SET_LEX_STATE(0); - REDUCE(ts_aux_sym_token4, ts_sym_literal, 1) - END_STATE(); - - STATE(4); - SET_LEX_STATE(0); - SHIFT(ts_aux_sym_token4, 5) - END_STATE(); - - STATE(5); - SET_LEX_STATE(76); - SHIFT(ts_sym_statement_block, 6) - SHIFT(ts_aux_sym_token5, 7) - END_STATE(); - - STATE(6); - SET_LEX_STATE(2); - 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); - SET_LEX_STATE(56); - SHIFT(ts_sym__IF, 8) - SHIFT(ts_sym__VAR, 14) - SHIFT(ts_sym_array, 17) - SHIFT(ts_sym_assignment, 79) - SHIFT(ts_sym_expression, 79) - SHIFT(ts_sym_false, 17) - SHIFT(ts_sym_identifier, 19) - SHIFT(ts_sym_if_statement, 82) - SHIFT(ts_sym_literal, 19) - SHIFT(ts_sym_null, 17) - SHIFT(ts_sym_number, 17) - SHIFT(ts_sym_object, 17) - SHIFT(ts_sym_statement, 83) - SHIFT(ts_sym_string, 17) - SHIFT(ts_sym_true, 17) - 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) - END_STATE(); - - STATE(8); - SET_LEX_STATE(77); - SHIFT(ts_aux_sym_token3, 9) - END_STATE(); - - STATE(9); - SET_LEX_STATE(68); - SHIFT(ts_sym_array, 3) - SHIFT(ts_sym_expression, 10) - SHIFT(ts_sym_false, 3) - SHIFT(ts_sym_identifier, 87) - SHIFT(ts_sym_literal, 87) - SHIFT(ts_sym_null, 3) - SHIFT(ts_sym_number, 3) - SHIFT(ts_sym_object, 3) - SHIFT(ts_sym_string, 3) - SHIFT(ts_sym_true, 3) - SHIFT(ts_aux_sym_token10, 88) - SHIFT(ts_aux_sym_token5, 93) - END_STATE(); - - STATE(10); - SET_LEX_STATE(0); - SHIFT(ts_aux_sym_token4, 11) - END_STATE(); - - STATE(11); - SET_LEX_STATE(76); - SHIFT(ts_sym_statement_block, 12) - SHIFT(ts_aux_sym_token5, 13) - END_STATE(); - - STATE(12); - SET_LEX_STATE(56); - 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); - SET_LEX_STATE(56); - SHIFT(ts_sym__IF, 8) - SHIFT(ts_sym__VAR, 14) - SHIFT(ts_sym_array, 17) - SHIFT(ts_sym_assignment, 79) - SHIFT(ts_sym_expression, 79) - SHIFT(ts_sym_false, 17) - SHIFT(ts_sym_identifier, 19) - SHIFT(ts_sym_if_statement, 82) - SHIFT(ts_sym_literal, 19) - SHIFT(ts_sym_null, 17) - SHIFT(ts_sym_number, 17) - SHIFT(ts_sym_object, 17) - SHIFT(ts_sym_statement, 83) - SHIFT(ts_sym_string, 17) - SHIFT(ts_sym_true, 17) - 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) - END_STATE(); - - STATE(14); - SET_LEX_STATE(75); - SHIFT(ts_sym_identifier, 15) - END_STATE(); - - STATE(15); - SET_LEX_STATE(73); - SHIFT(ts_aux_sym_token7, 16) - END_STATE(); - - STATE(16); - SET_LEX_STATE(68); - SHIFT(ts_sym_array, 17) - SHIFT(ts_sym_expression, 18) - SHIFT(ts_sym_false, 17) - SHIFT(ts_sym_identifier, 19) - SHIFT(ts_sym_literal, 19) - SHIFT(ts_sym_null, 17) - SHIFT(ts_sym_number, 17) - SHIFT(ts_sym_object, 17) - SHIFT(ts_sym_string, 17) - SHIFT(ts_sym_true, 17) - SHIFT(ts_aux_sym_token10, 20) - SHIFT(ts_aux_sym_token5, 69) - END_STATE(); - - STATE(17); - SET_LEX_STATE(58); - 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) - 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) - REDUCE(ts_aux_sym_token2, ts_sym_expression, 1) - END_STATE(); - - STATE(20); - SET_LEX_STATE(67); - SHIFT(ts_sym_array, 21) - SHIFT(ts_sym_expression, 22) - SHIFT(ts_sym_false, 21) - SHIFT(ts_sym_identifier, 28) - SHIFT(ts_sym_literal, 28) - SHIFT(ts_sym_null, 21) - SHIFT(ts_sym_number, 21) - SHIFT(ts_sym_object, 21) - SHIFT(ts_sym_string, 21) - SHIFT(ts_sym_true, 21) - SHIFT(ts_aux_sym_token10, 29) - SHIFT(ts_aux_sym_token11, 68) - SHIFT(ts_aux_sym_token5, 34) - SHIFT(ts_builtin_sym_error, 22) - END_STATE(); - - STATE(21); - SET_LEX_STATE(61); - 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) - SHIFT(ts_aux_sym_token9, 25) - END_STATE(); - - STATE(23); - SET_LEX_STATE(64); - SHIFT(ts_aux_sym_token11, 24) - END_STATE(); - - STATE(24); - SET_LEX_STATE(58); - REDUCE(ts_aux_sym_token1, ts_sym_array, 4) - REDUCE(ts_aux_sym_token2, ts_sym_array, 4) - END_STATE(); - - STATE(25); - SET_LEX_STATE(68); - SHIFT(ts_sym_array, 21) - SHIFT(ts_sym_expression, 26) - SHIFT(ts_sym_false, 21) - SHIFT(ts_sym_identifier, 28) - SHIFT(ts_sym_literal, 28) - SHIFT(ts_sym_null, 21) - SHIFT(ts_sym_number, 21) - SHIFT(ts_sym_object, 21) - SHIFT(ts_sym_string, 21) - SHIFT(ts_sym_true, 21) - SHIFT(ts_aux_sym_token10, 29) - SHIFT(ts_aux_sym_token5, 34) - SHIFT(ts_builtin_sym_error, 26) - END_STATE(); - - STATE(26); - SET_LEX_STATE(61); - SHIFT(ts_aux_sym_repeat_helper4, 27) - 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) - END_STATE(); - - STATE(28); - SET_LEX_STATE(61); - REDUCE(ts_aux_sym_token11, ts_sym_expression, 1) - REDUCE(ts_aux_sym_token9, ts_sym_expression, 1) - END_STATE(); - - STATE(29); - SET_LEX_STATE(67); - SHIFT(ts_sym_array, 21) - SHIFT(ts_sym_expression, 30) - SHIFT(ts_sym_false, 21) - SHIFT(ts_sym_identifier, 28) - SHIFT(ts_sym_literal, 28) - SHIFT(ts_sym_null, 21) - SHIFT(ts_sym_number, 21) - SHIFT(ts_sym_object, 21) - SHIFT(ts_sym_string, 21) - SHIFT(ts_sym_true, 21) - SHIFT(ts_aux_sym_token10, 29) - SHIFT(ts_aux_sym_token11, 33) - SHIFT(ts_aux_sym_token5, 34) - SHIFT(ts_builtin_sym_error, 30) - END_STATE(); - - STATE(30); - SET_LEX_STATE(61); - SHIFT(ts_aux_sym_repeat_helper4, 31) - REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 0) - SHIFT(ts_aux_sym_token9, 25) - END_STATE(); - - STATE(31); - SET_LEX_STATE(64); - SHIFT(ts_aux_sym_token11, 32) - END_STATE(); - - STATE(32); - SET_LEX_STATE(61); - 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) - REDUCE(ts_aux_sym_token9, ts_sym_array, 2) - END_STATE(); - - STATE(34); - SET_LEX_STATE(71); - SHIFT(ts_sym_string, 35) - SHIFT(ts_aux_sym_token6, 64) - SHIFT(ts_builtin_sym_error, 65) - END_STATE(); - - STATE(35); - SET_LEX_STATE(69); - SHIFT(ts_aux_sym_token8, 36) - END_STATE(); - - STATE(36); - SET_LEX_STATE(68); - SHIFT(ts_sym_array, 37) - SHIFT(ts_sym_expression, 38) - SHIFT(ts_sym_false, 37) - SHIFT(ts_sym_identifier, 46) - SHIFT(ts_sym_literal, 46) - SHIFT(ts_sym_null, 37) - SHIFT(ts_sym_number, 37) - SHIFT(ts_sym_object, 37) - SHIFT(ts_sym_string, 37) - SHIFT(ts_sym_true, 37) - SHIFT(ts_aux_sym_token10, 47) - SHIFT(ts_aux_sym_token5, 52) - END_STATE(); - - STATE(37); - SET_LEX_STATE(65); - 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) - SHIFT(ts_aux_sym_token9, 41) - END_STATE(); - - STATE(39); - SET_LEX_STATE(66); - SHIFT(ts_aux_sym_token6, 40) - END_STATE(); - - STATE(40); - SET_LEX_STATE(61); - REDUCE(ts_aux_sym_token11, ts_sym_object, 6) - REDUCE(ts_aux_sym_token9, ts_sym_object, 6) - END_STATE(); - - STATE(41); - SET_LEX_STATE(72); - SHIFT(ts_sym_string, 42) - SHIFT(ts_builtin_sym_error, 62) - END_STATE(); - - STATE(42); - SET_LEX_STATE(69); - SHIFT(ts_aux_sym_token8, 43) - END_STATE(); - - STATE(43); - SET_LEX_STATE(68); - SHIFT(ts_sym_array, 37) - SHIFT(ts_sym_expression, 44) - SHIFT(ts_sym_false, 37) - SHIFT(ts_sym_identifier, 46) - SHIFT(ts_sym_literal, 46) - SHIFT(ts_sym_null, 37) - SHIFT(ts_sym_number, 37) - SHIFT(ts_sym_object, 37) - SHIFT(ts_sym_string, 37) - SHIFT(ts_sym_true, 37) - SHIFT(ts_aux_sym_token10, 47) - SHIFT(ts_aux_sym_token5, 52) - END_STATE(); - - STATE(44); - SET_LEX_STATE(65); - SHIFT(ts_aux_sym_repeat_helper3, 45) - 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) - END_STATE(); - - STATE(46); - SET_LEX_STATE(65); - REDUCE(ts_aux_sym_token6, ts_sym_expression, 1) - REDUCE(ts_aux_sym_token9, ts_sym_expression, 1) - END_STATE(); - - STATE(47); - SET_LEX_STATE(67); - SHIFT(ts_sym_array, 21) - SHIFT(ts_sym_expression, 48) - SHIFT(ts_sym_false, 21) - SHIFT(ts_sym_identifier, 28) - SHIFT(ts_sym_literal, 28) - SHIFT(ts_sym_null, 21) - SHIFT(ts_sym_number, 21) - SHIFT(ts_sym_object, 21) - SHIFT(ts_sym_string, 21) - SHIFT(ts_sym_true, 21) - SHIFT(ts_aux_sym_token10, 29) - SHIFT(ts_aux_sym_token11, 51) - SHIFT(ts_aux_sym_token5, 34) - SHIFT(ts_builtin_sym_error, 48) - END_STATE(); - - STATE(48); - SET_LEX_STATE(61); - SHIFT(ts_aux_sym_repeat_helper4, 49) - REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 0) - SHIFT(ts_aux_sym_token9, 25) - END_STATE(); - - STATE(49); - SET_LEX_STATE(64); - SHIFT(ts_aux_sym_token11, 50) - END_STATE(); - - STATE(50); - SET_LEX_STATE(65); - 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) - REDUCE(ts_aux_sym_token9, ts_sym_array, 2) - END_STATE(); - - STATE(52); - SET_LEX_STATE(71); - SHIFT(ts_sym_string, 53) - SHIFT(ts_aux_sym_token6, 58) - SHIFT(ts_builtin_sym_error, 59) - END_STATE(); - - STATE(53); - SET_LEX_STATE(69); - SHIFT(ts_aux_sym_token8, 54) - END_STATE(); - - STATE(54); - SET_LEX_STATE(68); - SHIFT(ts_sym_array, 37) - SHIFT(ts_sym_expression, 55) - SHIFT(ts_sym_false, 37) - SHIFT(ts_sym_identifier, 46) - SHIFT(ts_sym_literal, 46) - SHIFT(ts_sym_null, 37) - SHIFT(ts_sym_number, 37) - SHIFT(ts_sym_object, 37) - SHIFT(ts_sym_string, 37) - SHIFT(ts_sym_true, 37) - SHIFT(ts_aux_sym_token10, 47) - SHIFT(ts_aux_sym_token5, 52) - END_STATE(); - - STATE(55); - SET_LEX_STATE(65); - SHIFT(ts_aux_sym_repeat_helper3, 56) - REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0) - SHIFT(ts_aux_sym_token9, 41) - END_STATE(); - - STATE(56); - SET_LEX_STATE(66); - SHIFT(ts_aux_sym_token6, 57) - END_STATE(); - - STATE(57); - SET_LEX_STATE(65); - 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) - 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) - SHIFT(ts_aux_sym_token9, 41) - END_STATE(); - - STATE(60); - SET_LEX_STATE(66); - SHIFT(ts_aux_sym_token6, 61) - END_STATE(); - - STATE(61); - SET_LEX_STATE(65); - 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) - 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) - END_STATE(); - - STATE(64); - SET_LEX_STATE(61); - 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) - SHIFT(ts_aux_sym_token9, 41) - END_STATE(); - - STATE(66); - SET_LEX_STATE(66); - SHIFT(ts_aux_sym_token6, 67) - END_STATE(); - - STATE(67); - SET_LEX_STATE(61); - 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) - REDUCE(ts_aux_sym_token2, ts_sym_array, 2) - END_STATE(); - - STATE(69); - SET_LEX_STATE(71); - SHIFT(ts_sym_string, 70) - SHIFT(ts_aux_sym_token6, 75) - SHIFT(ts_builtin_sym_error, 76) - END_STATE(); - - STATE(70); - SET_LEX_STATE(69); - SHIFT(ts_aux_sym_token8, 71) - END_STATE(); - - STATE(71); - SET_LEX_STATE(68); - SHIFT(ts_sym_array, 37) - SHIFT(ts_sym_expression, 72) - SHIFT(ts_sym_false, 37) - SHIFT(ts_sym_identifier, 46) - SHIFT(ts_sym_literal, 46) - SHIFT(ts_sym_null, 37) - SHIFT(ts_sym_number, 37) - SHIFT(ts_sym_object, 37) - SHIFT(ts_sym_string, 37) - SHIFT(ts_sym_true, 37) - SHIFT(ts_aux_sym_token10, 47) - SHIFT(ts_aux_sym_token5, 52) - END_STATE(); - - STATE(72); - SET_LEX_STATE(65); - SHIFT(ts_aux_sym_repeat_helper3, 73) - REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0) - SHIFT(ts_aux_sym_token9, 41) - END_STATE(); - - STATE(73); - SET_LEX_STATE(66); - SHIFT(ts_aux_sym_token6, 74) - END_STATE(); - - STATE(74); - SET_LEX_STATE(58); - 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) - 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) - SHIFT(ts_aux_sym_token9, 41) - END_STATE(); - - STATE(77); - SET_LEX_STATE(66); - SHIFT(ts_aux_sym_token6, 78) - END_STATE(); - - STATE(78); - SET_LEX_STATE(58); - REDUCE(ts_aux_sym_token1, ts_sym_object, 4) - REDUCE(ts_aux_sym_token2, ts_sym_object, 4) - END_STATE(); - - STATE(79); - SET_LEX_STATE(58); - SHIFT(ts_sym__terminator, 80) - SHIFT(ts_aux_sym_token1, 81) - SHIFT(ts_aux_sym_token2, 81) - END_STATE(); - - STATE(80); - SET_LEX_STATE(56); - 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) - 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) - 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); - SET_LEX_STATE(56); - SHIFT(ts_sym__IF, 8) - SHIFT(ts_sym__VAR, 14) - SHIFT(ts_sym_array, 17) - SHIFT(ts_sym_assignment, 79) - SHIFT(ts_sym_expression, 79) - SHIFT(ts_sym_false, 17) - SHIFT(ts_sym_identifier, 19) - SHIFT(ts_sym_if_statement, 82) - SHIFT(ts_sym_literal, 19) - SHIFT(ts_sym_null, 17) - SHIFT(ts_sym_number, 17) - SHIFT(ts_sym_object, 17) - SHIFT(ts_sym_statement, 83) - SHIFT(ts_sym_string, 17) - SHIFT(ts_sym_true, 17) - 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) - END_STATE(); - - STATE(84); - SET_LEX_STATE(66); - REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 2) - END_STATE(); - - STATE(85); - SET_LEX_STATE(66); - SHIFT(ts_aux_sym_token6, 86) - END_STATE(); - - STATE(86); - SET_LEX_STATE(56); - 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) - END_STATE(); - - STATE(88); - SET_LEX_STATE(67); - SHIFT(ts_sym_array, 21) - SHIFT(ts_sym_expression, 89) - SHIFT(ts_sym_false, 21) - SHIFT(ts_sym_identifier, 28) - SHIFT(ts_sym_literal, 28) - SHIFT(ts_sym_null, 21) - SHIFT(ts_sym_number, 21) - SHIFT(ts_sym_object, 21) - SHIFT(ts_sym_string, 21) - SHIFT(ts_sym_true, 21) - SHIFT(ts_aux_sym_token10, 29) - SHIFT(ts_aux_sym_token11, 92) - SHIFT(ts_aux_sym_token5, 34) - SHIFT(ts_builtin_sym_error, 89) - END_STATE(); - - STATE(89); - SET_LEX_STATE(61); - SHIFT(ts_aux_sym_repeat_helper4, 90) - REDUCE(ts_aux_sym_token11, ts_aux_sym_repeat_helper4, 0) - SHIFT(ts_aux_sym_token9, 25) - END_STATE(); - - STATE(90); - SET_LEX_STATE(64); - SHIFT(ts_aux_sym_token11, 91) - END_STATE(); - - STATE(91); - SET_LEX_STATE(0); - 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) - END_STATE(); - - STATE(93); - SET_LEX_STATE(71); - SHIFT(ts_sym_string, 94) - SHIFT(ts_aux_sym_token6, 99) - SHIFT(ts_builtin_sym_error, 100) - END_STATE(); - - STATE(94); - SET_LEX_STATE(69); - SHIFT(ts_aux_sym_token8, 95) - END_STATE(); - - STATE(95); - SET_LEX_STATE(68); - SHIFT(ts_sym_array, 37) - SHIFT(ts_sym_expression, 96) - SHIFT(ts_sym_false, 37) - SHIFT(ts_sym_identifier, 46) - SHIFT(ts_sym_literal, 46) - SHIFT(ts_sym_null, 37) - SHIFT(ts_sym_number, 37) - SHIFT(ts_sym_object, 37) - SHIFT(ts_sym_string, 37) - SHIFT(ts_sym_true, 37) - SHIFT(ts_aux_sym_token10, 47) - SHIFT(ts_aux_sym_token5, 52) - END_STATE(); - - STATE(96); - SET_LEX_STATE(65); - SHIFT(ts_aux_sym_repeat_helper3, 97) - REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper3, 0) - SHIFT(ts_aux_sym_token9, 41) - END_STATE(); - - STATE(97); - SET_LEX_STATE(66); - SHIFT(ts_aux_sym_token6, 98) - END_STATE(); - - STATE(98); - SET_LEX_STATE(0); - 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) - 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) - SHIFT(ts_aux_sym_token9, 41) - END_STATE(); - - STATE(101); - SET_LEX_STATE(66); - SHIFT(ts_aux_sym_token6, 102) - END_STATE(); - - STATE(102); - SET_LEX_STATE(0); - REDUCE(ts_aux_sym_token4, ts_sym_object, 4) - END_STATE(); - - STATE(103); - SET_LEX_STATE(66); - SHIFT(ts_aux_sym_token6, 104) - END_STATE(); - - STATE(104); - SET_LEX_STATE(2); - 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); - SET_LEX_STATE(58); - SHIFT(ts_sym__terminator, 106) - SHIFT(ts_aux_sym_token1, 107) - SHIFT(ts_aux_sym_token2, 107) - END_STATE(); - - STATE(106); - SET_LEX_STATE(2); - 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) - 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) - 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); - SET_LEX_STATE(79); - ACCEPT_INPUT(ts_builtin_sym_end) - END_STATE(); - - STATE(110); - SET_LEX_STATE(2); - SHIFT(ts_sym__IF, 1) - SHIFT(ts_sym__VAR, 14) - SHIFT(ts_sym_array, 17) - SHIFT(ts_sym_assignment, 105) - SHIFT(ts_sym_expression, 105) - SHIFT(ts_sym_false, 17) - SHIFT(ts_sym_identifier, 19) - SHIFT(ts_sym_if_statement, 108) - SHIFT(ts_sym_literal, 19) - SHIFT(ts_sym_null, 17) - SHIFT(ts_sym_number, 17) - SHIFT(ts_sym_object, 17) - SHIFT(ts_sym_statement, 110) - SHIFT(ts_sym_string, 17) - SHIFT(ts_sym_true, 17) - 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) - END_STATE(); - - STATE(111); - SET_LEX_STATE(79); - 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) - END_STATE(); - - END_TABLE(); -} +LEX_STATES(113) = { + [0] = 2, + [1] = 77, + [2] = 68, + [3] = 0, + [4] = 0, + [5] = 76, + [6] = 2, + [7] = 56, + [8] = 77, + [9] = 68, + [10] = 0, + [11] = 76, + [12] = 56, + [13] = 56, + [14] = 75, + [15] = 73, + [16] = 68, + [17] = 58, + [18] = 58, + [19] = 58, + [20] = 67, + [21] = 61, + [22] = 61, + [23] = 64, + [24] = 58, + [25] = 68, + [26] = 61, + [27] = 64, + [28] = 61, + [29] = 67, + [30] = 61, + [31] = 64, + [32] = 61, + [33] = 61, + [34] = 71, + [35] = 69, + [36] = 68, + [37] = 65, + [38] = 65, + [39] = 66, + [40] = 61, + [41] = 72, + [42] = 69, + [43] = 68, + [44] = 65, + [45] = 66, + [46] = 65, + [47] = 67, + [48] = 61, + [49] = 64, + [50] = 65, + [51] = 65, + [52] = 71, + [53] = 69, + [54] = 68, + [55] = 65, + [56] = 66, + [57] = 65, + [58] = 65, + [59] = 65, + [60] = 66, + [61] = 65, + [62] = 65, + [63] = 66, + [64] = 61, + [65] = 65, + [66] = 66, + [67] = 61, + [68] = 58, + [69] = 71, + [70] = 69, + [71] = 68, + [72] = 65, + [73] = 66, + [74] = 58, + [75] = 58, + [76] = 65, + [77] = 66, + [78] = 58, + [79] = 58, + [80] = 56, + [81] = 56, + [82] = 56, + [83] = 56, + [84] = 66, + [85] = 66, + [86] = 56, + [87] = 0, + [88] = 67, + [89] = 61, + [90] = 64, + [91] = 0, + [92] = 0, + [93] = 71, + [94] = 69, + [95] = 68, + [96] = 65, + [97] = 66, + [98] = 0, + [99] = 0, + [100] = 65, + [101] = 66, + [102] = 0, + [103] = 66, + [104] = 2, + [105] = 58, + [106] = 2, + [107] = 2, + [108] = 2, + [109] = 79, + [110] = 2, + [111] = 79, + [112] = 79, +}; + +PARSE_TABLE(113, 35) = { + [0] = { + [ts_sym__IF] = SHIFT(1), + [ts_sym__VAR] = SHIFT(14), + [ts_sym_array] = SHIFT(17), + [ts_sym_assignment] = SHIFT(105), + [ts_sym_expression] = SHIFT(105), + [ts_sym_false] = SHIFT(17), + [ts_sym_identifier] = SHIFT(19), + [ts_sym_if_statement] = SHIFT(108), + [ts_sym_literal] = SHIFT(19), + [ts_sym_null] = SHIFT(17), + [ts_sym_number] = SHIFT(17), + [ts_sym_object] = SHIFT(17), + [ts_sym_program] = SHIFT(109), + [ts_sym_statement] = SHIFT(110), + [ts_sym_string] = SHIFT(17), + [ts_sym_true] = SHIFT(17), + [ts_aux_sym_repeat_helper1] = SHIFT(112), + [ts_aux_sym_token10] = SHIFT(20), + [ts_aux_sym_token5] = SHIFT(69), + [ts_builtin_sym_end] = REDUCE(ts_aux_sym_repeat_helper1, 0), + }, + + [1] = { + [ts_aux_sym_token3] = SHIFT(2), + }, + + [2] = { + [ts_sym_array] = SHIFT(3), + [ts_sym_expression] = SHIFT(4), + [ts_sym_false] = SHIFT(3), + [ts_sym_identifier] = SHIFT(87), + [ts_sym_literal] = SHIFT(87), + [ts_sym_null] = SHIFT(3), + [ts_sym_number] = SHIFT(3), + [ts_sym_object] = SHIFT(3), + [ts_sym_string] = SHIFT(3), + [ts_sym_true] = SHIFT(3), + [ts_aux_sym_token10] = SHIFT(88), + [ts_aux_sym_token5] = SHIFT(93), + }, + + [3] = { + [ts_aux_sym_token4] = REDUCE(ts_sym_literal, 1), + }, + + [4] = { + [ts_aux_sym_token4] = SHIFT(5), + }, + + [5] = { + [ts_sym_statement_block] = SHIFT(6), + [ts_aux_sym_token5] = SHIFT(7), + }, + + [6] = { + [ts_sym__IF] = REDUCE(ts_sym_if_statement, 5), + [ts_sym__VAR] = REDUCE(ts_sym_if_statement, 5), + [ts_sym_false] = REDUCE(ts_sym_if_statement, 5), + [ts_sym_identifier] = REDUCE(ts_sym_if_statement, 5), + [ts_sym_null] = REDUCE(ts_sym_if_statement, 5), + [ts_sym_number] = REDUCE(ts_sym_if_statement, 5), + [ts_sym_string] = REDUCE(ts_sym_if_statement, 5), + [ts_sym_true] = REDUCE(ts_sym_if_statement, 5), + [ts_aux_sym_token10] = REDUCE(ts_sym_if_statement, 5), + [ts_aux_sym_token5] = REDUCE(ts_sym_if_statement, 5), + [ts_builtin_sym_end] = REDUCE(ts_sym_if_statement, 5), + }, + + [7] = { + [ts_sym__IF] = SHIFT(8), + [ts_sym__VAR] = SHIFT(14), + [ts_sym_array] = SHIFT(17), + [ts_sym_assignment] = SHIFT(79), + [ts_sym_expression] = SHIFT(79), + [ts_sym_false] = SHIFT(17), + [ts_sym_identifier] = SHIFT(19), + [ts_sym_if_statement] = SHIFT(82), + [ts_sym_literal] = SHIFT(19), + [ts_sym_null] = SHIFT(17), + [ts_sym_number] = SHIFT(17), + [ts_sym_object] = SHIFT(17), + [ts_sym_statement] = SHIFT(83), + [ts_sym_string] = SHIFT(17), + [ts_sym_true] = SHIFT(17), + [ts_aux_sym_repeat_helper2] = SHIFT(103), + [ts_aux_sym_token10] = SHIFT(20), + [ts_aux_sym_token5] = SHIFT(69), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 0), + }, + + [8] = { + [ts_aux_sym_token3] = SHIFT(9), + }, + + [9] = { + [ts_sym_array] = SHIFT(3), + [ts_sym_expression] = SHIFT(10), + [ts_sym_false] = SHIFT(3), + [ts_sym_identifier] = SHIFT(87), + [ts_sym_literal] = SHIFT(87), + [ts_sym_null] = SHIFT(3), + [ts_sym_number] = SHIFT(3), + [ts_sym_object] = SHIFT(3), + [ts_sym_string] = SHIFT(3), + [ts_sym_true] = SHIFT(3), + [ts_aux_sym_token10] = SHIFT(88), + [ts_aux_sym_token5] = SHIFT(93), + }, + + [10] = { + [ts_aux_sym_token4] = SHIFT(11), + }, + + [11] = { + [ts_sym_statement_block] = SHIFT(12), + [ts_aux_sym_token5] = SHIFT(13), + }, + + [12] = { + [ts_sym__IF] = REDUCE(ts_sym_if_statement, 5), + [ts_sym__VAR] = REDUCE(ts_sym_if_statement, 5), + [ts_sym_false] = REDUCE(ts_sym_if_statement, 5), + [ts_sym_identifier] = REDUCE(ts_sym_if_statement, 5), + [ts_sym_null] = REDUCE(ts_sym_if_statement, 5), + [ts_sym_number] = REDUCE(ts_sym_if_statement, 5), + [ts_sym_string] = REDUCE(ts_sym_if_statement, 5), + [ts_sym_true] = REDUCE(ts_sym_if_statement, 5), + [ts_aux_sym_token10] = REDUCE(ts_sym_if_statement, 5), + [ts_aux_sym_token5] = REDUCE(ts_sym_if_statement, 5), + [ts_aux_sym_token6] = REDUCE(ts_sym_if_statement, 5), + }, + + [13] = { + [ts_sym__IF] = SHIFT(8), + [ts_sym__VAR] = SHIFT(14), + [ts_sym_array] = SHIFT(17), + [ts_sym_assignment] = SHIFT(79), + [ts_sym_expression] = SHIFT(79), + [ts_sym_false] = SHIFT(17), + [ts_sym_identifier] = SHIFT(19), + [ts_sym_if_statement] = SHIFT(82), + [ts_sym_literal] = SHIFT(19), + [ts_sym_null] = SHIFT(17), + [ts_sym_number] = SHIFT(17), + [ts_sym_object] = SHIFT(17), + [ts_sym_statement] = SHIFT(83), + [ts_sym_string] = SHIFT(17), + [ts_sym_true] = SHIFT(17), + [ts_aux_sym_repeat_helper2] = SHIFT(85), + [ts_aux_sym_token10] = SHIFT(20), + [ts_aux_sym_token5] = SHIFT(69), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 0), + }, + + [14] = { + [ts_sym_identifier] = SHIFT(15), + }, + + [15] = { + [ts_aux_sym_token7] = SHIFT(16), + }, + + [16] = { + [ts_sym_array] = SHIFT(17), + [ts_sym_expression] = SHIFT(18), + [ts_sym_false] = SHIFT(17), + [ts_sym_identifier] = SHIFT(19), + [ts_sym_literal] = SHIFT(19), + [ts_sym_null] = SHIFT(17), + [ts_sym_number] = SHIFT(17), + [ts_sym_object] = SHIFT(17), + [ts_sym_string] = SHIFT(17), + [ts_sym_true] = SHIFT(17), + [ts_aux_sym_token10] = SHIFT(20), + [ts_aux_sym_token5] = SHIFT(69), + }, + + [17] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token2] = REDUCE(ts_sym_literal, 1), + }, + + [18] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_assignment, 4), + [ts_aux_sym_token2] = REDUCE(ts_sym_assignment, 4), + }, + + [19] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token2] = REDUCE(ts_sym_expression, 1), + }, + + [20] = { + [ts_sym_array] = SHIFT(21), + [ts_sym_expression] = SHIFT(22), + [ts_sym_false] = SHIFT(21), + [ts_sym_identifier] = SHIFT(28), + [ts_sym_literal] = SHIFT(28), + [ts_sym_null] = SHIFT(21), + [ts_sym_number] = SHIFT(21), + [ts_sym_object] = SHIFT(21), + [ts_sym_string] = SHIFT(21), + [ts_sym_true] = SHIFT(21), + [ts_aux_sym_token10] = SHIFT(29), + [ts_aux_sym_token11] = SHIFT(68), + [ts_aux_sym_token5] = SHIFT(34), + [ts_builtin_sym_error] = SHIFT(22), + }, + + [21] = { + [ts_aux_sym_token11] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token9] = REDUCE(ts_sym_literal, 1), + }, + + [22] = { + [ts_aux_sym_repeat_helper4] = SHIFT(23), + [ts_aux_sym_token11] = REDUCE(ts_aux_sym_repeat_helper4, 0), + [ts_aux_sym_token9] = SHIFT(25), + }, + + [23] = { + [ts_aux_sym_token11] = SHIFT(24), + }, + + [24] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token2] = REDUCE(ts_sym_array, 4), + }, + + [25] = { + [ts_sym_array] = SHIFT(21), + [ts_sym_expression] = SHIFT(26), + [ts_sym_false] = SHIFT(21), + [ts_sym_identifier] = SHIFT(28), + [ts_sym_literal] = SHIFT(28), + [ts_sym_null] = SHIFT(21), + [ts_sym_number] = SHIFT(21), + [ts_sym_object] = SHIFT(21), + [ts_sym_string] = SHIFT(21), + [ts_sym_true] = SHIFT(21), + [ts_aux_sym_token10] = SHIFT(29), + [ts_aux_sym_token5] = SHIFT(34), + [ts_builtin_sym_error] = SHIFT(26), + }, + + [26] = { + [ts_aux_sym_repeat_helper4] = SHIFT(27), + [ts_aux_sym_token11] = REDUCE(ts_aux_sym_repeat_helper4, 0), + [ts_aux_sym_token9] = SHIFT(25), + }, + + [27] = { + [ts_aux_sym_token11] = REDUCE(ts_aux_sym_repeat_helper4, 3), + }, + + [28] = { + [ts_aux_sym_token11] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token9] = REDUCE(ts_sym_expression, 1), + }, + + [29] = { + [ts_sym_array] = SHIFT(21), + [ts_sym_expression] = SHIFT(30), + [ts_sym_false] = SHIFT(21), + [ts_sym_identifier] = SHIFT(28), + [ts_sym_literal] = SHIFT(28), + [ts_sym_null] = SHIFT(21), + [ts_sym_number] = SHIFT(21), + [ts_sym_object] = SHIFT(21), + [ts_sym_string] = SHIFT(21), + [ts_sym_true] = SHIFT(21), + [ts_aux_sym_token10] = SHIFT(29), + [ts_aux_sym_token11] = SHIFT(33), + [ts_aux_sym_token5] = SHIFT(34), + [ts_builtin_sym_error] = SHIFT(30), + }, + + [30] = { + [ts_aux_sym_repeat_helper4] = SHIFT(31), + [ts_aux_sym_token11] = REDUCE(ts_aux_sym_repeat_helper4, 0), + [ts_aux_sym_token9] = SHIFT(25), + }, + + [31] = { + [ts_aux_sym_token11] = SHIFT(32), + }, + + [32] = { + [ts_aux_sym_token11] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token9] = REDUCE(ts_sym_array, 4), + }, + + [33] = { + [ts_aux_sym_token11] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token9] = REDUCE(ts_sym_array, 2), + }, + + [34] = { + [ts_sym_string] = SHIFT(35), + [ts_aux_sym_token6] = SHIFT(64), + [ts_builtin_sym_error] = SHIFT(65), + }, + + [35] = { + [ts_aux_sym_token8] = SHIFT(36), + }, + + [36] = { + [ts_sym_array] = SHIFT(37), + [ts_sym_expression] = SHIFT(38), + [ts_sym_false] = SHIFT(37), + [ts_sym_identifier] = SHIFT(46), + [ts_sym_literal] = SHIFT(46), + [ts_sym_null] = SHIFT(37), + [ts_sym_number] = SHIFT(37), + [ts_sym_object] = SHIFT(37), + [ts_sym_string] = SHIFT(37), + [ts_sym_true] = SHIFT(37), + [ts_aux_sym_token10] = SHIFT(47), + [ts_aux_sym_token5] = SHIFT(52), + }, + + [37] = { + [ts_aux_sym_token6] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token9] = REDUCE(ts_sym_literal, 1), + }, + + [38] = { + [ts_aux_sym_repeat_helper3] = SHIFT(39), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token9] = SHIFT(41), + }, + + [39] = { + [ts_aux_sym_token6] = SHIFT(40), + }, + + [40] = { + [ts_aux_sym_token11] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token9] = REDUCE(ts_sym_object, 6), + }, + + [41] = { + [ts_sym_string] = SHIFT(42), + [ts_builtin_sym_error] = SHIFT(62), + }, + + [42] = { + [ts_aux_sym_token8] = SHIFT(43), + }, + + [43] = { + [ts_sym_array] = SHIFT(37), + [ts_sym_expression] = SHIFT(44), + [ts_sym_false] = SHIFT(37), + [ts_sym_identifier] = SHIFT(46), + [ts_sym_literal] = SHIFT(46), + [ts_sym_null] = SHIFT(37), + [ts_sym_number] = SHIFT(37), + [ts_sym_object] = SHIFT(37), + [ts_sym_string] = SHIFT(37), + [ts_sym_true] = SHIFT(37), + [ts_aux_sym_token10] = SHIFT(47), + [ts_aux_sym_token5] = SHIFT(52), + }, + + [44] = { + [ts_aux_sym_repeat_helper3] = SHIFT(45), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token9] = SHIFT(41), + }, + + [45] = { + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper3, 5), + }, + + [46] = { + [ts_aux_sym_token6] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token9] = REDUCE(ts_sym_expression, 1), + }, + + [47] = { + [ts_sym_array] = SHIFT(21), + [ts_sym_expression] = SHIFT(48), + [ts_sym_false] = SHIFT(21), + [ts_sym_identifier] = SHIFT(28), + [ts_sym_literal] = SHIFT(28), + [ts_sym_null] = SHIFT(21), + [ts_sym_number] = SHIFT(21), + [ts_sym_object] = SHIFT(21), + [ts_sym_string] = SHIFT(21), + [ts_sym_true] = SHIFT(21), + [ts_aux_sym_token10] = SHIFT(29), + [ts_aux_sym_token11] = SHIFT(51), + [ts_aux_sym_token5] = SHIFT(34), + [ts_builtin_sym_error] = SHIFT(48), + }, + + [48] = { + [ts_aux_sym_repeat_helper4] = SHIFT(49), + [ts_aux_sym_token11] = REDUCE(ts_aux_sym_repeat_helper4, 0), + [ts_aux_sym_token9] = SHIFT(25), + }, + + [49] = { + [ts_aux_sym_token11] = SHIFT(50), + }, + + [50] = { + [ts_aux_sym_token6] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token9] = REDUCE(ts_sym_array, 4), + }, + + [51] = { + [ts_aux_sym_token6] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token9] = REDUCE(ts_sym_array, 2), + }, + + [52] = { + [ts_sym_string] = SHIFT(53), + [ts_aux_sym_token6] = SHIFT(58), + [ts_builtin_sym_error] = SHIFT(59), + }, + + [53] = { + [ts_aux_sym_token8] = SHIFT(54), + }, + + [54] = { + [ts_sym_array] = SHIFT(37), + [ts_sym_expression] = SHIFT(55), + [ts_sym_false] = SHIFT(37), + [ts_sym_identifier] = SHIFT(46), + [ts_sym_literal] = SHIFT(46), + [ts_sym_null] = SHIFT(37), + [ts_sym_number] = SHIFT(37), + [ts_sym_object] = SHIFT(37), + [ts_sym_string] = SHIFT(37), + [ts_sym_true] = SHIFT(37), + [ts_aux_sym_token10] = SHIFT(47), + [ts_aux_sym_token5] = SHIFT(52), + }, + + [55] = { + [ts_aux_sym_repeat_helper3] = SHIFT(56), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token9] = SHIFT(41), + }, + + [56] = { + [ts_aux_sym_token6] = SHIFT(57), + }, + + [57] = { + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token9] = REDUCE(ts_sym_object, 6), + }, + + [58] = { + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token9] = REDUCE(ts_sym_object, 2), + }, + + [59] = { + [ts_aux_sym_repeat_helper3] = SHIFT(60), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token9] = SHIFT(41), + }, + + [60] = { + [ts_aux_sym_token6] = SHIFT(61), + }, + + [61] = { + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token9] = REDUCE(ts_sym_object, 4), + }, + + [62] = { + [ts_aux_sym_repeat_helper3] = SHIFT(63), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token9] = SHIFT(41), + }, + + [63] = { + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper3, 3), + }, + + [64] = { + [ts_aux_sym_token11] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token9] = REDUCE(ts_sym_object, 2), + }, + + [65] = { + [ts_aux_sym_repeat_helper3] = SHIFT(66), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token9] = SHIFT(41), + }, + + [66] = { + [ts_aux_sym_token6] = SHIFT(67), + }, + + [67] = { + [ts_aux_sym_token11] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token9] = REDUCE(ts_sym_object, 4), + }, + + [68] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token2] = REDUCE(ts_sym_array, 2), + }, + + [69] = { + [ts_sym_string] = SHIFT(70), + [ts_aux_sym_token6] = SHIFT(75), + [ts_builtin_sym_error] = SHIFT(76), + }, + + [70] = { + [ts_aux_sym_token8] = SHIFT(71), + }, + + [71] = { + [ts_sym_array] = SHIFT(37), + [ts_sym_expression] = SHIFT(72), + [ts_sym_false] = SHIFT(37), + [ts_sym_identifier] = SHIFT(46), + [ts_sym_literal] = SHIFT(46), + [ts_sym_null] = SHIFT(37), + [ts_sym_number] = SHIFT(37), + [ts_sym_object] = SHIFT(37), + [ts_sym_string] = SHIFT(37), + [ts_sym_true] = SHIFT(37), + [ts_aux_sym_token10] = SHIFT(47), + [ts_aux_sym_token5] = SHIFT(52), + }, + + [72] = { + [ts_aux_sym_repeat_helper3] = SHIFT(73), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token9] = SHIFT(41), + }, + + [73] = { + [ts_aux_sym_token6] = SHIFT(74), + }, + + [74] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token2] = REDUCE(ts_sym_object, 6), + }, + + [75] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token2] = REDUCE(ts_sym_object, 2), + }, + + [76] = { + [ts_aux_sym_repeat_helper3] = SHIFT(77), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token9] = SHIFT(41), + }, + + [77] = { + [ts_aux_sym_token6] = SHIFT(78), + }, + + [78] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token2] = REDUCE(ts_sym_object, 4), + }, + + [79] = { + [ts_sym__terminator] = SHIFT(80), + [ts_aux_sym_token1] = SHIFT(81), + [ts_aux_sym_token2] = SHIFT(81), + }, + + [80] = { + [ts_sym__IF] = REDUCE(ts_sym_statement, 2), + [ts_sym__VAR] = REDUCE(ts_sym_statement, 2), + [ts_sym_false] = REDUCE(ts_sym_statement, 2), + [ts_sym_identifier] = REDUCE(ts_sym_statement, 2), + [ts_sym_null] = REDUCE(ts_sym_statement, 2), + [ts_sym_number] = REDUCE(ts_sym_statement, 2), + [ts_sym_string] = REDUCE(ts_sym_statement, 2), + [ts_sym_true] = REDUCE(ts_sym_statement, 2), + [ts_aux_sym_token10] = REDUCE(ts_sym_statement, 2), + [ts_aux_sym_token5] = REDUCE(ts_sym_statement, 2), + [ts_aux_sym_token6] = REDUCE(ts_sym_statement, 2), + }, + + [81] = { + [ts_sym__IF] = REDUCE(ts_sym__terminator, 1), + [ts_sym__VAR] = REDUCE(ts_sym__terminator, 1), + [ts_sym_false] = REDUCE(ts_sym__terminator, 1), + [ts_sym_identifier] = REDUCE(ts_sym__terminator, 1), + [ts_sym_null] = REDUCE(ts_sym__terminator, 1), + [ts_sym_number] = REDUCE(ts_sym__terminator, 1), + [ts_sym_string] = REDUCE(ts_sym__terminator, 1), + [ts_sym_true] = REDUCE(ts_sym__terminator, 1), + [ts_aux_sym_token10] = REDUCE(ts_sym__terminator, 1), + [ts_aux_sym_token5] = REDUCE(ts_sym__terminator, 1), + [ts_aux_sym_token6] = REDUCE(ts_sym__terminator, 1), + }, + + [82] = { + [ts_sym__IF] = REDUCE(ts_sym_statement, 1), + [ts_sym__VAR] = REDUCE(ts_sym_statement, 1), + [ts_sym_false] = REDUCE(ts_sym_statement, 1), + [ts_sym_identifier] = REDUCE(ts_sym_statement, 1), + [ts_sym_null] = REDUCE(ts_sym_statement, 1), + [ts_sym_number] = REDUCE(ts_sym_statement, 1), + [ts_sym_string] = REDUCE(ts_sym_statement, 1), + [ts_sym_true] = REDUCE(ts_sym_statement, 1), + [ts_aux_sym_token10] = REDUCE(ts_sym_statement, 1), + [ts_aux_sym_token5] = REDUCE(ts_sym_statement, 1), + [ts_aux_sym_token6] = REDUCE(ts_sym_statement, 1), + }, + + [83] = { + [ts_sym__IF] = SHIFT(8), + [ts_sym__VAR] = SHIFT(14), + [ts_sym_array] = SHIFT(17), + [ts_sym_assignment] = SHIFT(79), + [ts_sym_expression] = SHIFT(79), + [ts_sym_false] = SHIFT(17), + [ts_sym_identifier] = SHIFT(19), + [ts_sym_if_statement] = SHIFT(82), + [ts_sym_literal] = SHIFT(19), + [ts_sym_null] = SHIFT(17), + [ts_sym_number] = SHIFT(17), + [ts_sym_object] = SHIFT(17), + [ts_sym_statement] = SHIFT(83), + [ts_sym_string] = SHIFT(17), + [ts_sym_true] = SHIFT(17), + [ts_aux_sym_repeat_helper2] = SHIFT(84), + [ts_aux_sym_token10] = SHIFT(20), + [ts_aux_sym_token5] = SHIFT(69), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 0), + }, + + [84] = { + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 2), + }, + + [85] = { + [ts_aux_sym_token6] = SHIFT(86), + }, + + [86] = { + [ts_sym__IF] = REDUCE(ts_sym_statement_block, 3), + [ts_sym__VAR] = REDUCE(ts_sym_statement_block, 3), + [ts_sym_false] = REDUCE(ts_sym_statement_block, 3), + [ts_sym_identifier] = REDUCE(ts_sym_statement_block, 3), + [ts_sym_null] = REDUCE(ts_sym_statement_block, 3), + [ts_sym_number] = REDUCE(ts_sym_statement_block, 3), + [ts_sym_string] = REDUCE(ts_sym_statement_block, 3), + [ts_sym_true] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token10] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token5] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token6] = REDUCE(ts_sym_statement_block, 3), + }, + + [87] = { + [ts_aux_sym_token4] = REDUCE(ts_sym_expression, 1), + }, + + [88] = { + [ts_sym_array] = SHIFT(21), + [ts_sym_expression] = SHIFT(89), + [ts_sym_false] = SHIFT(21), + [ts_sym_identifier] = SHIFT(28), + [ts_sym_literal] = SHIFT(28), + [ts_sym_null] = SHIFT(21), + [ts_sym_number] = SHIFT(21), + [ts_sym_object] = SHIFT(21), + [ts_sym_string] = SHIFT(21), + [ts_sym_true] = SHIFT(21), + [ts_aux_sym_token10] = SHIFT(29), + [ts_aux_sym_token11] = SHIFT(92), + [ts_aux_sym_token5] = SHIFT(34), + [ts_builtin_sym_error] = SHIFT(89), + }, + + [89] = { + [ts_aux_sym_repeat_helper4] = SHIFT(90), + [ts_aux_sym_token11] = REDUCE(ts_aux_sym_repeat_helper4, 0), + [ts_aux_sym_token9] = SHIFT(25), + }, + + [90] = { + [ts_aux_sym_token11] = SHIFT(91), + }, + + [91] = { + [ts_aux_sym_token4] = REDUCE(ts_sym_array, 4), + }, + + [92] = { + [ts_aux_sym_token4] = REDUCE(ts_sym_array, 2), + }, + + [93] = { + [ts_sym_string] = SHIFT(94), + [ts_aux_sym_token6] = SHIFT(99), + [ts_builtin_sym_error] = SHIFT(100), + }, + + [94] = { + [ts_aux_sym_token8] = SHIFT(95), + }, + + [95] = { + [ts_sym_array] = SHIFT(37), + [ts_sym_expression] = SHIFT(96), + [ts_sym_false] = SHIFT(37), + [ts_sym_identifier] = SHIFT(46), + [ts_sym_literal] = SHIFT(46), + [ts_sym_null] = SHIFT(37), + [ts_sym_number] = SHIFT(37), + [ts_sym_object] = SHIFT(37), + [ts_sym_string] = SHIFT(37), + [ts_sym_true] = SHIFT(37), + [ts_aux_sym_token10] = SHIFT(47), + [ts_aux_sym_token5] = SHIFT(52), + }, + + [96] = { + [ts_aux_sym_repeat_helper3] = SHIFT(97), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token9] = SHIFT(41), + }, + + [97] = { + [ts_aux_sym_token6] = SHIFT(98), + }, + + [98] = { + [ts_aux_sym_token4] = REDUCE(ts_sym_object, 6), + }, + + [99] = { + [ts_aux_sym_token4] = REDUCE(ts_sym_object, 2), + }, + + [100] = { + [ts_aux_sym_repeat_helper3] = SHIFT(101), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token9] = SHIFT(41), + }, + + [101] = { + [ts_aux_sym_token6] = SHIFT(102), + }, + + [102] = { + [ts_aux_sym_token4] = REDUCE(ts_sym_object, 4), + }, + + [103] = { + [ts_aux_sym_token6] = SHIFT(104), + }, + + [104] = { + [ts_sym__IF] = REDUCE(ts_sym_statement_block, 3), + [ts_sym__VAR] = REDUCE(ts_sym_statement_block, 3), + [ts_sym_false] = REDUCE(ts_sym_statement_block, 3), + [ts_sym_identifier] = REDUCE(ts_sym_statement_block, 3), + [ts_sym_null] = REDUCE(ts_sym_statement_block, 3), + [ts_sym_number] = REDUCE(ts_sym_statement_block, 3), + [ts_sym_string] = REDUCE(ts_sym_statement_block, 3), + [ts_sym_true] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token10] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token5] = REDUCE(ts_sym_statement_block, 3), + [ts_builtin_sym_end] = REDUCE(ts_sym_statement_block, 3), + }, + + [105] = { + [ts_sym__terminator] = SHIFT(106), + [ts_aux_sym_token1] = SHIFT(107), + [ts_aux_sym_token2] = SHIFT(107), + }, + + [106] = { + [ts_sym__IF] = REDUCE(ts_sym_statement, 2), + [ts_sym__VAR] = REDUCE(ts_sym_statement, 2), + [ts_sym_false] = REDUCE(ts_sym_statement, 2), + [ts_sym_identifier] = REDUCE(ts_sym_statement, 2), + [ts_sym_null] = REDUCE(ts_sym_statement, 2), + [ts_sym_number] = REDUCE(ts_sym_statement, 2), + [ts_sym_string] = REDUCE(ts_sym_statement, 2), + [ts_sym_true] = REDUCE(ts_sym_statement, 2), + [ts_aux_sym_token10] = REDUCE(ts_sym_statement, 2), + [ts_aux_sym_token5] = REDUCE(ts_sym_statement, 2), + [ts_builtin_sym_end] = REDUCE(ts_sym_statement, 2), + }, + + [107] = { + [ts_sym__IF] = REDUCE(ts_sym__terminator, 1), + [ts_sym__VAR] = REDUCE(ts_sym__terminator, 1), + [ts_sym_false] = REDUCE(ts_sym__terminator, 1), + [ts_sym_identifier] = REDUCE(ts_sym__terminator, 1), + [ts_sym_null] = REDUCE(ts_sym__terminator, 1), + [ts_sym_number] = REDUCE(ts_sym__terminator, 1), + [ts_sym_string] = REDUCE(ts_sym__terminator, 1), + [ts_sym_true] = REDUCE(ts_sym__terminator, 1), + [ts_aux_sym_token10] = REDUCE(ts_sym__terminator, 1), + [ts_aux_sym_token5] = REDUCE(ts_sym__terminator, 1), + [ts_builtin_sym_end] = REDUCE(ts_sym__terminator, 1), + }, + + [108] = { + [ts_sym__IF] = REDUCE(ts_sym_statement, 1), + [ts_sym__VAR] = REDUCE(ts_sym_statement, 1), + [ts_sym_false] = REDUCE(ts_sym_statement, 1), + [ts_sym_identifier] = REDUCE(ts_sym_statement, 1), + [ts_sym_null] = REDUCE(ts_sym_statement, 1), + [ts_sym_number] = REDUCE(ts_sym_statement, 1), + [ts_sym_string] = REDUCE(ts_sym_statement, 1), + [ts_sym_true] = REDUCE(ts_sym_statement, 1), + [ts_aux_sym_token10] = REDUCE(ts_sym_statement, 1), + [ts_aux_sym_token5] = REDUCE(ts_sym_statement, 1), + [ts_builtin_sym_end] = REDUCE(ts_sym_statement, 1), + }, + + [109] = { + [ts_builtin_sym_end] = ACCEPT_INPUT(), + }, + + [110] = { + [ts_sym__IF] = SHIFT(1), + [ts_sym__VAR] = SHIFT(14), + [ts_sym_array] = SHIFT(17), + [ts_sym_assignment] = SHIFT(105), + [ts_sym_expression] = SHIFT(105), + [ts_sym_false] = SHIFT(17), + [ts_sym_identifier] = SHIFT(19), + [ts_sym_if_statement] = SHIFT(108), + [ts_sym_literal] = SHIFT(19), + [ts_sym_null] = SHIFT(17), + [ts_sym_number] = SHIFT(17), + [ts_sym_object] = SHIFT(17), + [ts_sym_statement] = SHIFT(110), + [ts_sym_string] = SHIFT(17), + [ts_sym_true] = SHIFT(17), + [ts_aux_sym_repeat_helper1] = SHIFT(111), + [ts_aux_sym_token10] = SHIFT(20), + [ts_aux_sym_token5] = SHIFT(69), + [ts_builtin_sym_end] = REDUCE(ts_aux_sym_repeat_helper1, 0), + }, + + [111] = { + [ts_builtin_sym_end] = REDUCE(ts_aux_sym_repeat_helper1, 2), + }, + + [112] = { + [ts_builtin_sym_end] = REDUCE(ts_sym_program, 1), + }, +}; EXPORT_PARSER(ts_parser_javascript); diff --git a/examples/parsers/json.c b/examples/parsers/json.c index b7da5530..eb185eb6 100644 --- a/examples/parsers/json.c +++ b/examples/parsers/json.c @@ -3,25 +3,27 @@ #define TS_SYMBOL_COUNT 18 enum { - ts_sym_array, - ts_sym_false, - ts_sym_null, - ts_sym_number, - ts_sym_object, - ts_sym_string, - ts_sym_true, - ts_sym_value, - ts_aux_sym_repeat_helper1, - ts_aux_sym_repeat_helper2, - ts_aux_sym_token1, - ts_aux_sym_token2, - ts_aux_sym_token3, - ts_aux_sym_token4, - ts_aux_sym_token5, - ts_aux_sym_token6, + ts_sym_array = 2, + ts_sym_false = 3, + ts_sym_null = 4, + ts_sym_number = 5, + ts_sym_object = 6, + ts_sym_string = 7, + ts_sym_true = 8, + ts_sym_value = 9, + ts_aux_sym_repeat_helper1 = 10, + ts_aux_sym_repeat_helper2 = 11, + ts_aux_sym_token1 = 12, + ts_aux_sym_token2 = 13, + ts_aux_sym_token3 = 14, + ts_aux_sym_token4 = 15, + ts_aux_sym_token5 = 16, + ts_aux_sym_token6 = 17, }; SYMBOL_NAMES = { + "error", + "end", "array", "false", "null", @@ -40,23 +42,15 @@ SYMBOL_NAMES = { "token6", }; -HIDDEN_SYMBOL_FLAGS = { - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, +HIDDEN_SYMBOLS(18) = { + [ts_aux_sym_repeat_helper1] = 1, + [ts_aux_sym_repeat_helper2] = 1, + [ts_aux_sym_token1] = 1, + [ts_aux_sym_token2] = 1, + [ts_aux_sym_token3] = 1, + [ts_aux_sym_token4] = 1, + [ts_aux_sym_token5] = 1, + [ts_aux_sym_token6] = 1, }; LEX_FN() { @@ -332,441 +326,440 @@ LEX_FN() { } } -PARSE_TABLE() { - START_TABLE(60) +LEX_STATES(60) = { + [0] = 8, + [1] = 0, + [2] = 0, + [3] = 41, + [4] = 39, + [5] = 8, + [6] = 1, + [7] = 1, + [8] = 4, + [9] = 0, + [10] = 43, + [11] = 39, + [12] = 8, + [13] = 1, + [14] = 4, + [15] = 41, + [16] = 39, + [17] = 8, + [18] = 1, + [19] = 4, + [20] = 1, + [21] = 42, + [22] = 5, + [23] = 5, + [24] = 7, + [25] = 1, + [26] = 8, + [27] = 5, + [28] = 7, + [29] = 41, + [30] = 39, + [31] = 8, + [32] = 1, + [33] = 4, + [34] = 5, + [35] = 5, + [36] = 1, + [37] = 4, + [38] = 5, + [39] = 42, + [40] = 5, + [41] = 7, + [42] = 5, + [43] = 5, + [44] = 1, + [45] = 1, + [46] = 1, + [47] = 4, + [48] = 1, + [49] = 1, + [50] = 4, + [51] = 0, + [52] = 1, + [53] = 4, + [54] = 0, + [55] = 42, + [56] = 5, + [57] = 7, + [58] = 0, + [59] = 0, +}; + +PARSE_TABLE(60, 18) = { + [0] = { + [ts_sym_array] = SHIFT(1), + [ts_sym_false] = SHIFT(1), + [ts_sym_null] = SHIFT(1), + [ts_sym_number] = SHIFT(1), + [ts_sym_object] = SHIFT(1), + [ts_sym_string] = SHIFT(1), + [ts_sym_true] = SHIFT(1), + [ts_sym_value] = SHIFT(2), + [ts_aux_sym_token1] = SHIFT(3), + [ts_aux_sym_token5] = SHIFT(55), + }, - STATE(0); - SET_LEX_STATE(8); - SHIFT(ts_sym_array, 1) - SHIFT(ts_sym_false, 1) - SHIFT(ts_sym_null, 1) - SHIFT(ts_sym_number, 1) - SHIFT(ts_sym_object, 1) - SHIFT(ts_sym_string, 1) - SHIFT(ts_sym_true, 1) - SHIFT(ts_sym_value, 2) - SHIFT(ts_aux_sym_token1, 3) - SHIFT(ts_aux_sym_token5, 55) - END_STATE(); + [1] = { + [ts_builtin_sym_end] = REDUCE(ts_sym_value, 1), + }, - STATE(1); - SET_LEX_STATE(0); - REDUCE(ts_builtin_sym_end, ts_sym_value, 1) - END_STATE(); + [2] = { + [ts_builtin_sym_end] = ACCEPT_INPUT(), + }, - STATE(2); - SET_LEX_STATE(0); - ACCEPT_INPUT(ts_builtin_sym_end) - END_STATE(); + [3] = { + [ts_sym_string] = SHIFT(4), + [ts_aux_sym_token4] = SHIFT(51), + [ts_builtin_sym_error] = SHIFT(52), + }, - STATE(3); - SET_LEX_STATE(41); - SHIFT(ts_sym_string, 4) - SHIFT(ts_aux_sym_token4, 51) - SHIFT(ts_builtin_sym_error, 52) - END_STATE(); + [4] = { + [ts_aux_sym_token2] = SHIFT(5), + }, - STATE(4); - SET_LEX_STATE(39); - SHIFT(ts_aux_sym_token2, 5) - END_STATE(); + [5] = { + [ts_sym_array] = SHIFT(6), + [ts_sym_false] = SHIFT(6), + [ts_sym_null] = SHIFT(6), + [ts_sym_number] = SHIFT(6), + [ts_sym_object] = SHIFT(6), + [ts_sym_string] = SHIFT(6), + [ts_sym_true] = SHIFT(6), + [ts_sym_value] = SHIFT(7), + [ts_aux_sym_token1] = SHIFT(15), + [ts_aux_sym_token5] = SHIFT(21), + }, - STATE(5); - SET_LEX_STATE(8); - SHIFT(ts_sym_array, 6) - SHIFT(ts_sym_false, 6) - SHIFT(ts_sym_null, 6) - SHIFT(ts_sym_number, 6) - SHIFT(ts_sym_object, 6) - SHIFT(ts_sym_string, 6) - SHIFT(ts_sym_true, 6) - SHIFT(ts_sym_value, 7) - SHIFT(ts_aux_sym_token1, 15) - SHIFT(ts_aux_sym_token5, 21) - END_STATE(); + [6] = { + [ts_aux_sym_token3] = REDUCE(ts_sym_value, 1), + [ts_aux_sym_token4] = REDUCE(ts_sym_value, 1), + }, - STATE(6); - SET_LEX_STATE(1); - REDUCE(ts_aux_sym_token3, ts_sym_value, 1) - REDUCE(ts_aux_sym_token4, ts_sym_value, 1) - END_STATE(); + [7] = { + [ts_aux_sym_repeat_helper1] = SHIFT(8), + [ts_aux_sym_token3] = SHIFT(10), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper1, 0), + }, - 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) - END_STATE(); + [8] = { + [ts_aux_sym_token4] = SHIFT(9), + }, - STATE(8); - SET_LEX_STATE(4); - SHIFT(ts_aux_sym_token4, 9) - END_STATE(); + [9] = { + [ts_builtin_sym_end] = REDUCE(ts_sym_object, 6), + }, - STATE(9); - SET_LEX_STATE(0); - REDUCE(ts_builtin_sym_end, ts_sym_object, 6) - END_STATE(); + [10] = { + [ts_sym_string] = SHIFT(11), + [ts_builtin_sym_error] = SHIFT(49), + }, - STATE(10); - SET_LEX_STATE(43); - SHIFT(ts_sym_string, 11) - SHIFT(ts_builtin_sym_error, 49) - END_STATE(); + [11] = { + [ts_aux_sym_token2] = SHIFT(12), + }, - STATE(11); - SET_LEX_STATE(39); - SHIFT(ts_aux_sym_token2, 12) - END_STATE(); + [12] = { + [ts_sym_array] = SHIFT(6), + [ts_sym_false] = SHIFT(6), + [ts_sym_null] = SHIFT(6), + [ts_sym_number] = SHIFT(6), + [ts_sym_object] = SHIFT(6), + [ts_sym_string] = SHIFT(6), + [ts_sym_true] = SHIFT(6), + [ts_sym_value] = SHIFT(13), + [ts_aux_sym_token1] = SHIFT(15), + [ts_aux_sym_token5] = SHIFT(21), + }, - STATE(12); - SET_LEX_STATE(8); - SHIFT(ts_sym_array, 6) - SHIFT(ts_sym_false, 6) - SHIFT(ts_sym_null, 6) - SHIFT(ts_sym_number, 6) - SHIFT(ts_sym_object, 6) - SHIFT(ts_sym_string, 6) - SHIFT(ts_sym_true, 6) - SHIFT(ts_sym_value, 13) - SHIFT(ts_aux_sym_token1, 15) - SHIFT(ts_aux_sym_token5, 21) - END_STATE(); + [13] = { + [ts_aux_sym_repeat_helper1] = SHIFT(14), + [ts_aux_sym_token3] = SHIFT(10), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper1, 0), + }, - STATE(13); - 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) - END_STATE(); + [14] = { + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper1, 5), + }, - STATE(14); - SET_LEX_STATE(4); - REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 5) - END_STATE(); + [15] = { + [ts_sym_string] = SHIFT(16), + [ts_aux_sym_token4] = SHIFT(45), + [ts_builtin_sym_error] = SHIFT(46), + }, - STATE(15); - SET_LEX_STATE(41); - SHIFT(ts_sym_string, 16) - SHIFT(ts_aux_sym_token4, 45) - SHIFT(ts_builtin_sym_error, 46) - END_STATE(); + [16] = { + [ts_aux_sym_token2] = SHIFT(17), + }, - STATE(16); - SET_LEX_STATE(39); - SHIFT(ts_aux_sym_token2, 17) - END_STATE(); + [17] = { + [ts_sym_array] = SHIFT(6), + [ts_sym_false] = SHIFT(6), + [ts_sym_null] = SHIFT(6), + [ts_sym_number] = SHIFT(6), + [ts_sym_object] = SHIFT(6), + [ts_sym_string] = SHIFT(6), + [ts_sym_true] = SHIFT(6), + [ts_sym_value] = SHIFT(18), + [ts_aux_sym_token1] = SHIFT(15), + [ts_aux_sym_token5] = SHIFT(21), + }, - STATE(17); - SET_LEX_STATE(8); - SHIFT(ts_sym_array, 6) - SHIFT(ts_sym_false, 6) - SHIFT(ts_sym_null, 6) - SHIFT(ts_sym_number, 6) - SHIFT(ts_sym_object, 6) - SHIFT(ts_sym_string, 6) - SHIFT(ts_sym_true, 6) - SHIFT(ts_sym_value, 18) - SHIFT(ts_aux_sym_token1, 15) - SHIFT(ts_aux_sym_token5, 21) - END_STATE(); + [18] = { + [ts_aux_sym_repeat_helper1] = SHIFT(19), + [ts_aux_sym_token3] = SHIFT(10), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper1, 0), + }, - STATE(18); - 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) - END_STATE(); + [19] = { + [ts_aux_sym_token4] = SHIFT(20), + }, - STATE(19); - SET_LEX_STATE(4); - SHIFT(ts_aux_sym_token4, 20) - END_STATE(); + [20] = { + [ts_aux_sym_token3] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token4] = REDUCE(ts_sym_object, 6), + }, - STATE(20); - SET_LEX_STATE(1); - REDUCE(ts_aux_sym_token3, ts_sym_object, 6) - REDUCE(ts_aux_sym_token4, ts_sym_object, 6) - END_STATE(); + [21] = { + [ts_sym_array] = SHIFT(22), + [ts_sym_false] = SHIFT(22), + [ts_sym_null] = SHIFT(22), + [ts_sym_number] = SHIFT(22), + [ts_sym_object] = SHIFT(22), + [ts_sym_string] = SHIFT(22), + [ts_sym_true] = SHIFT(22), + [ts_sym_value] = SHIFT(23), + [ts_aux_sym_token1] = SHIFT(29), + [ts_aux_sym_token5] = SHIFT(39), + [ts_aux_sym_token6] = SHIFT(44), + [ts_builtin_sym_error] = SHIFT(23), + }, - STATE(21); - SET_LEX_STATE(42); - SHIFT(ts_sym_array, 22) - SHIFT(ts_sym_false, 22) - SHIFT(ts_sym_null, 22) - SHIFT(ts_sym_number, 22) - SHIFT(ts_sym_object, 22) - SHIFT(ts_sym_string, 22) - SHIFT(ts_sym_true, 22) - SHIFT(ts_sym_value, 23) - SHIFT(ts_aux_sym_token1, 29) - SHIFT(ts_aux_sym_token5, 39) - SHIFT(ts_aux_sym_token6, 44) - SHIFT(ts_builtin_sym_error, 23) - END_STATE(); + [22] = { + [ts_aux_sym_token3] = REDUCE(ts_sym_value, 1), + [ts_aux_sym_token6] = REDUCE(ts_sym_value, 1), + }, - STATE(22); - SET_LEX_STATE(5); - REDUCE(ts_aux_sym_token3, ts_sym_value, 1) - REDUCE(ts_aux_sym_token6, ts_sym_value, 1) - END_STATE(); + [23] = { + [ts_aux_sym_repeat_helper2] = SHIFT(24), + [ts_aux_sym_token3] = SHIFT(26), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 0), + }, - 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) - END_STATE(); + [24] = { + [ts_aux_sym_token6] = SHIFT(25), + }, - STATE(24); - SET_LEX_STATE(7); - SHIFT(ts_aux_sym_token6, 25) - END_STATE(); + [25] = { + [ts_aux_sym_token3] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token4] = REDUCE(ts_sym_array, 4), + }, - STATE(25); - SET_LEX_STATE(1); - REDUCE(ts_aux_sym_token3, ts_sym_array, 4) - REDUCE(ts_aux_sym_token4, ts_sym_array, 4) - END_STATE(); + [26] = { + [ts_sym_array] = SHIFT(22), + [ts_sym_false] = SHIFT(22), + [ts_sym_null] = SHIFT(22), + [ts_sym_number] = SHIFT(22), + [ts_sym_object] = SHIFT(22), + [ts_sym_string] = SHIFT(22), + [ts_sym_true] = SHIFT(22), + [ts_sym_value] = SHIFT(27), + [ts_aux_sym_token1] = SHIFT(29), + [ts_aux_sym_token5] = SHIFT(39), + [ts_builtin_sym_error] = SHIFT(27), + }, - STATE(26); - SET_LEX_STATE(8); - SHIFT(ts_sym_array, 22) - SHIFT(ts_sym_false, 22) - SHIFT(ts_sym_null, 22) - SHIFT(ts_sym_number, 22) - SHIFT(ts_sym_object, 22) - SHIFT(ts_sym_string, 22) - SHIFT(ts_sym_true, 22) - SHIFT(ts_sym_value, 27) - SHIFT(ts_aux_sym_token1, 29) - SHIFT(ts_aux_sym_token5, 39) - SHIFT(ts_builtin_sym_error, 27) - END_STATE(); + [27] = { + [ts_aux_sym_repeat_helper2] = SHIFT(28), + [ts_aux_sym_token3] = SHIFT(26), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 0), + }, - STATE(27); - 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) - END_STATE(); + [28] = { + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 3), + }, - STATE(28); - SET_LEX_STATE(7); - REDUCE(ts_aux_sym_token6, ts_aux_sym_repeat_helper2, 3) - END_STATE(); + [29] = { + [ts_sym_string] = SHIFT(30), + [ts_aux_sym_token4] = SHIFT(35), + [ts_builtin_sym_error] = SHIFT(36), + }, - STATE(29); - SET_LEX_STATE(41); - SHIFT(ts_sym_string, 30) - SHIFT(ts_aux_sym_token4, 35) - SHIFT(ts_builtin_sym_error, 36) - END_STATE(); + [30] = { + [ts_aux_sym_token2] = SHIFT(31), + }, - STATE(30); - SET_LEX_STATE(39); - SHIFT(ts_aux_sym_token2, 31) - END_STATE(); + [31] = { + [ts_sym_array] = SHIFT(6), + [ts_sym_false] = SHIFT(6), + [ts_sym_null] = SHIFT(6), + [ts_sym_number] = SHIFT(6), + [ts_sym_object] = SHIFT(6), + [ts_sym_string] = SHIFT(6), + [ts_sym_true] = SHIFT(6), + [ts_sym_value] = SHIFT(32), + [ts_aux_sym_token1] = SHIFT(15), + [ts_aux_sym_token5] = SHIFT(21), + }, - STATE(31); - SET_LEX_STATE(8); - SHIFT(ts_sym_array, 6) - SHIFT(ts_sym_false, 6) - SHIFT(ts_sym_null, 6) - SHIFT(ts_sym_number, 6) - SHIFT(ts_sym_object, 6) - SHIFT(ts_sym_string, 6) - SHIFT(ts_sym_true, 6) - SHIFT(ts_sym_value, 32) - SHIFT(ts_aux_sym_token1, 15) - SHIFT(ts_aux_sym_token5, 21) - END_STATE(); + [32] = { + [ts_aux_sym_repeat_helper1] = SHIFT(33), + [ts_aux_sym_token3] = SHIFT(10), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper1, 0), + }, - STATE(32); - 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) - END_STATE(); + [33] = { + [ts_aux_sym_token4] = SHIFT(34), + }, - STATE(33); - SET_LEX_STATE(4); - SHIFT(ts_aux_sym_token4, 34) - END_STATE(); + [34] = { + [ts_aux_sym_token3] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 6), + }, - STATE(34); - SET_LEX_STATE(5); - REDUCE(ts_aux_sym_token3, ts_sym_object, 6) - REDUCE(ts_aux_sym_token6, ts_sym_object, 6) - END_STATE(); + [35] = { + [ts_aux_sym_token3] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 2), + }, - STATE(35); - SET_LEX_STATE(5); - REDUCE(ts_aux_sym_token3, ts_sym_object, 2) - REDUCE(ts_aux_sym_token6, ts_sym_object, 2) - END_STATE(); + [36] = { + [ts_aux_sym_repeat_helper1] = SHIFT(37), + [ts_aux_sym_token3] = SHIFT(10), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper1, 0), + }, - 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) - END_STATE(); + [37] = { + [ts_aux_sym_token4] = SHIFT(38), + }, - STATE(37); - SET_LEX_STATE(4); - SHIFT(ts_aux_sym_token4, 38) - END_STATE(); + [38] = { + [ts_aux_sym_token3] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 4), + }, - STATE(38); - SET_LEX_STATE(5); - REDUCE(ts_aux_sym_token3, ts_sym_object, 4) - REDUCE(ts_aux_sym_token6, ts_sym_object, 4) - END_STATE(); + [39] = { + [ts_sym_array] = SHIFT(22), + [ts_sym_false] = SHIFT(22), + [ts_sym_null] = SHIFT(22), + [ts_sym_number] = SHIFT(22), + [ts_sym_object] = SHIFT(22), + [ts_sym_string] = SHIFT(22), + [ts_sym_true] = SHIFT(22), + [ts_sym_value] = SHIFT(40), + [ts_aux_sym_token1] = SHIFT(29), + [ts_aux_sym_token5] = SHIFT(39), + [ts_aux_sym_token6] = SHIFT(43), + [ts_builtin_sym_error] = SHIFT(40), + }, - STATE(39); - SET_LEX_STATE(42); - SHIFT(ts_sym_array, 22) - SHIFT(ts_sym_false, 22) - SHIFT(ts_sym_null, 22) - SHIFT(ts_sym_number, 22) - SHIFT(ts_sym_object, 22) - SHIFT(ts_sym_string, 22) - SHIFT(ts_sym_true, 22) - SHIFT(ts_sym_value, 40) - SHIFT(ts_aux_sym_token1, 29) - SHIFT(ts_aux_sym_token5, 39) - SHIFT(ts_aux_sym_token6, 43) - SHIFT(ts_builtin_sym_error, 40) - END_STATE(); + [40] = { + [ts_aux_sym_repeat_helper2] = SHIFT(41), + [ts_aux_sym_token3] = SHIFT(26), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 0), + }, - STATE(40); - 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) - END_STATE(); + [41] = { + [ts_aux_sym_token6] = SHIFT(42), + }, - STATE(41); - SET_LEX_STATE(7); - SHIFT(ts_aux_sym_token6, 42) - END_STATE(); + [42] = { + [ts_aux_sym_token3] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token6] = REDUCE(ts_sym_array, 4), + }, - STATE(42); - SET_LEX_STATE(5); - REDUCE(ts_aux_sym_token3, ts_sym_array, 4) - REDUCE(ts_aux_sym_token6, ts_sym_array, 4) - END_STATE(); + [43] = { + [ts_aux_sym_token3] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token6] = REDUCE(ts_sym_array, 2), + }, - STATE(43); - SET_LEX_STATE(5); - REDUCE(ts_aux_sym_token3, ts_sym_array, 2) - REDUCE(ts_aux_sym_token6, ts_sym_array, 2) - END_STATE(); + [44] = { + [ts_aux_sym_token3] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token4] = REDUCE(ts_sym_array, 2), + }, - STATE(44); - SET_LEX_STATE(1); - REDUCE(ts_aux_sym_token3, ts_sym_array, 2) - REDUCE(ts_aux_sym_token4, ts_sym_array, 2) - END_STATE(); + [45] = { + [ts_aux_sym_token3] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token4] = REDUCE(ts_sym_object, 2), + }, - STATE(45); - SET_LEX_STATE(1); - REDUCE(ts_aux_sym_token3, ts_sym_object, 2) - REDUCE(ts_aux_sym_token4, ts_sym_object, 2) - END_STATE(); + [46] = { + [ts_aux_sym_repeat_helper1] = SHIFT(47), + [ts_aux_sym_token3] = SHIFT(10), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper1, 0), + }, - 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) - END_STATE(); + [47] = { + [ts_aux_sym_token4] = SHIFT(48), + }, - STATE(47); - SET_LEX_STATE(4); - SHIFT(ts_aux_sym_token4, 48) - END_STATE(); + [48] = { + [ts_aux_sym_token3] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token4] = REDUCE(ts_sym_object, 4), + }, - STATE(48); - SET_LEX_STATE(1); - REDUCE(ts_aux_sym_token3, ts_sym_object, 4) - REDUCE(ts_aux_sym_token4, ts_sym_object, 4) - END_STATE(); + [49] = { + [ts_aux_sym_repeat_helper1] = SHIFT(50), + [ts_aux_sym_token3] = SHIFT(10), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper1, 0), + }, - 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) - END_STATE(); + [50] = { + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper1, 3), + }, - STATE(50); - SET_LEX_STATE(4); - REDUCE(ts_aux_sym_token4, ts_aux_sym_repeat_helper1, 3) - END_STATE(); + [51] = { + [ts_builtin_sym_end] = REDUCE(ts_sym_object, 2), + }, - STATE(51); - SET_LEX_STATE(0); - REDUCE(ts_builtin_sym_end, ts_sym_object, 2) - END_STATE(); + [52] = { + [ts_aux_sym_repeat_helper1] = SHIFT(53), + [ts_aux_sym_token3] = SHIFT(10), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper1, 0), + }, - 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) - END_STATE(); + [53] = { + [ts_aux_sym_token4] = SHIFT(54), + }, - STATE(53); - SET_LEX_STATE(4); - SHIFT(ts_aux_sym_token4, 54) - END_STATE(); + [54] = { + [ts_builtin_sym_end] = REDUCE(ts_sym_object, 4), + }, - STATE(54); - SET_LEX_STATE(0); - REDUCE(ts_builtin_sym_end, ts_sym_object, 4) - END_STATE(); + [55] = { + [ts_sym_array] = SHIFT(22), + [ts_sym_false] = SHIFT(22), + [ts_sym_null] = SHIFT(22), + [ts_sym_number] = SHIFT(22), + [ts_sym_object] = SHIFT(22), + [ts_sym_string] = SHIFT(22), + [ts_sym_true] = SHIFT(22), + [ts_sym_value] = SHIFT(56), + [ts_aux_sym_token1] = SHIFT(29), + [ts_aux_sym_token5] = SHIFT(39), + [ts_aux_sym_token6] = SHIFT(59), + [ts_builtin_sym_error] = SHIFT(56), + }, - STATE(55); - SET_LEX_STATE(42); - SHIFT(ts_sym_array, 22) - SHIFT(ts_sym_false, 22) - SHIFT(ts_sym_null, 22) - SHIFT(ts_sym_number, 22) - SHIFT(ts_sym_object, 22) - SHIFT(ts_sym_string, 22) - SHIFT(ts_sym_true, 22) - SHIFT(ts_sym_value, 56) - SHIFT(ts_aux_sym_token1, 29) - SHIFT(ts_aux_sym_token5, 39) - SHIFT(ts_aux_sym_token6, 59) - SHIFT(ts_builtin_sym_error, 56) - END_STATE(); + [56] = { + [ts_aux_sym_repeat_helper2] = SHIFT(57), + [ts_aux_sym_token3] = SHIFT(26), + [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 0), + }, - STATE(56); - 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) - END_STATE(); + [57] = { + [ts_aux_sym_token6] = SHIFT(58), + }, - STATE(57); - SET_LEX_STATE(7); - SHIFT(ts_aux_sym_token6, 58) - END_STATE(); + [58] = { + [ts_builtin_sym_end] = REDUCE(ts_sym_array, 4), + }, - STATE(58); - SET_LEX_STATE(0); - 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) - END_STATE(); - - END_TABLE(); -} + [59] = { + [ts_builtin_sym_end] = REDUCE(ts_sym_array, 2), + }, +}; EXPORT_PARSER(ts_parser_json); diff --git a/include/tree_sitter/parser.h b/include/tree_sitter/parser.h index 418ba2ae..c3c93385 100644 --- a/include/tree_sitter/parser.h +++ b/include/tree_sitter/parser.h @@ -31,35 +31,11 @@ extern "C" { #define DEBUG_PARSE(...) #endif -#define PARSE_TABLE() \ -static size_t ts_symbol_count; \ -static const state_id * ts_lex_states; \ -static const ts_parse_action ** ts_parse_actions; \ -static void ts_init_parse_table() +#define LEX_STATES(num_states) \ +static state_id ts_lex_states[num_states] -#define START_TABLE(num_states) \ -ts_symbol_count = TS_SYMBOL_COUNT; \ -static int done = 0; \ -if (!done) { \ - static const ts_parse_action *parse_actions[num_states]; \ - static state_id lex_states[num_states]; \ - ts_parse_actions = parse_actions; \ - ts_lex_states = lex_states; \ - done = 1; \ - state_id state; - -#define END_TABLE() } -#define END_STATE() } - -#define STATE(state_val) \ -state = state_val; \ -if (1) { \ - static ts_parse_action actions_for_state_array[TS_SYMBOL_COUNT + 2]; \ - ts_parse_action *actions_for_state = actions_for_state_array + 2; \ - parse_actions[state] = actions_for_state; - -#define SET_LEX_STATE(lex_state_val) \ -lex_states[state] = lex_state_val +#define PARSE_TABLE(num_states, num_symbols) \ +static const ts_parse_action ts_parse_actions[num_states][num_symbols] #define LEX_FN() \ static ts_tree * \ @@ -68,37 +44,36 @@ 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 HIDDEN_SYMBOLS(num_symbols) \ +static const int hidden_symbol_flags[num_symbols] #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(hidden_symbol_flags), \ + .data = ts_lr_parser_make(TS_SYMBOL_COUNT, (const ts_parse_action *)ts_parse_actions, ts_lex_states, hidden_symbol_flags), \ .free_fn = NULL \ }; \ return result; \ } -#define SHIFT(on_symbol, to_state_value) \ -actions_for_state[on_symbol] = (ts_parse_action) { \ +#define SHIFT(to_state_value) \ +(ts_parse_action) { \ .type = ts_parse_action_type_shift, \ .data = { .to_state = to_state_value } \ -}; +} -#define REDUCE(on_symbol, symbol_val, child_count_val) \ -actions_for_state[on_symbol] = (ts_parse_action) { \ +#define REDUCE(symbol_val, child_count_val) \ +(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) { \ +#define ACCEPT_INPUT() \ +(ts_parse_action) { \ .type = ts_parse_action_type_accept, \ -}; +} #define START_LEXER() \ ts_lexer_skip_whitespace(lexer); \ @@ -241,14 +216,13 @@ typedef struct { }; } data; } ts_parse_action; - + /* * Forward declarations * The file including this header should use these macros to provide definitions. */ LEX_FN(); -PARSE_TABLE(); /* @@ -260,15 +234,25 @@ typedef struct { const int *hidden_symbol_flags; ts_tree *lookahead; ts_tree *next_lookahead; + const ts_parse_action *parse_table; + const state_id *lex_states; + size_t symbol_count; } ts_lr_parser; -static ts_lr_parser * ts_lr_parser_make(const int *hidden_symbol_flags) { +static ts_lr_parser * ts_lr_parser_make(size_t symbol_count, const ts_parse_action *parse_table, const state_id *lex_states, 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->symbol_count = symbol_count; + result->parse_table = parse_table; + result->lex_states = lex_states; result->hidden_symbol_flags = hidden_symbol_flags; return result; } + +static const ts_parse_action * ts_lr_parser_table_actions(ts_lr_parser *parser, state_id state) { + return parser->parse_table + (state * parser->symbol_count); +} static size_t ts_lr_parser_breakdown_stack(ts_lr_parser *parser, ts_input_edit *edit) { ts_stack *stack = &parser->stack; @@ -292,7 +276,7 @@ static size_t ts_lr_parser_breakdown_stack(ts_lr_parser *parser, ts_input_edit * for (size_t i = 0; i < child_count && position < edit->position; i++) { ts_tree *child = children[i]; state_id state = ts_stack_top_state(stack); - state_id next_state = ts_parse_actions[state][ts_tree_symbol(child)].data.to_state; + state_id next_state = ts_lr_parser_table_actions(parser, state)[ts_tree_symbol(child)].data.to_state; ts_stack_push(stack, next_state, child); ts_tree_retain(child); position += ts_tree_total_size(child); @@ -330,14 +314,14 @@ static void ts_lr_parser_reduce(ts_lr_parser *parser, ts_symbol symbol, int chil static ts_symbol * ts_lr_parser_expected_symbols(ts_lr_parser *parser, size_t *count) { *count = 0; - const ts_parse_action *actions = ts_parse_actions[ts_stack_top_state(&parser->stack)]; - for (size_t i = 0; i < ts_symbol_count; i++) + const ts_parse_action *actions = ts_lr_parser_table_actions(parser, ts_stack_top_state(&parser->stack)); + for (size_t i = 0; i < parser->symbol_count; i++) if (actions[i].type != ts_parse_action_type_error) ++(*count); size_t n = 0; ts_symbol *result = malloc(*count * sizeof(*result)); - for (size_t i = 0; i < ts_symbol_count; i++) + for (size_t i = 0; i < parser->symbol_count; i++) if (actions[i].type != ts_parse_action_type_error) result[n++] = i; @@ -367,10 +351,10 @@ static int ts_lr_parser_handle_error(ts_lr_parser *parser) { */ for (long i = parser->stack.size - 1; i >= 0; i--) { state_id stack_state = parser->stack.entries[i].state; - ts_parse_action action_on_error = ts_parse_actions[stack_state][ts_builtin_sym_error]; + ts_parse_action action_on_error = ts_lr_parser_table_actions(parser, stack_state)[ts_builtin_sym_error]; if (action_on_error.type == ts_parse_action_type_shift) { state_id state_after_error = action_on_error.data.to_state; - if (ts_parse_actions[state_after_error][ts_tree_symbol(parser->lookahead)].type != ts_parse_action_type_error) { + if (ts_lr_parser_table_actions(parser, state_after_error)[ts_tree_symbol(parser->lookahead)].type != ts_parse_action_type_error) { ts_stack_shrink(&parser->stack, i + 1); ts_stack_push(&parser->stack, state_after_error, error); return 1; @@ -387,8 +371,8 @@ static const ts_tree * ts_parse(void *data, ts_input input, ts_input_edit *edit) while (!done) { state_id state = ts_stack_top_state(&parser->stack); if (!parser->lookahead) - parser->lookahead = ts_lex(&parser->lexer, ts_lex_states[state]); - ts_parse_action action = ts_parse_actions[state][ts_tree_symbol(parser->lookahead)]; + parser->lookahead = ts_lex(&parser->lexer, parser->lex_states[state]); + ts_parse_action action = ts_lr_parser_table_actions(parser, state)[ts_tree_symbol(parser->lookahead)]; switch (action.type) { case ts_parse_action_type_shift: ts_lr_parser_shift(parser, action.data.to_state); diff --git a/include/tree_sitter/runtime.h b/include/tree_sitter/runtime.h index aa007e6e..30d58b7f 100644 --- a/include/tree_sitter/runtime.h +++ b/include/tree_sitter/runtime.h @@ -8,8 +8,8 @@ extern "C" { #include typedef int ts_symbol; -static const ts_symbol ts_builtin_sym_error = -1; -static const ts_symbol ts_builtin_sym_end = -2; +static const ts_symbol ts_builtin_sym_error = 0; +static const ts_symbol ts_builtin_sym_end = 1; typedef struct ts_tree ts_tree; ts_tree * ts_tree_make_leaf(ts_symbol symbol, size_t size, size_t offset); diff --git a/spec/runtime/tree_spec.cc b/spec/runtime/tree_spec.cc index 91656d67..551069e2 100644 --- a/spec/runtime/tree_spec.cc +++ b/spec/runtime/tree_spec.cc @@ -9,8 +9,8 @@ static ts_tree ** tree_array(vector trees) { START_TEST -enum { cat, dog, pig }; -static const char *names[] = { "cat", "dog", "pig" }; +enum { cat = 2, dog = 3, pig = 4 }; +static const char *names[] = { "error", "end", "cat", "dog", "pig" }; describe("trees", []() { ts_tree *tree1, *parent1; diff --git a/src/compiler/generate_code/c_code.cc b/src/compiler/generate_code/c_code.cc index 2502e2c6..2104863d 100644 --- a/src/compiler/generate_code/c_code.cc +++ b/src/compiler/generate_code/c_code.cc @@ -55,7 +55,22 @@ namespace tree_sitter { parse_table(parse_table), lex_table(lex_table) {} - + + string code() { + return join({ + includes(), + symbol_count(), + symbol_enum(), + rule_names_list(), + hidden_symbols_list(), + lex_function(), + lex_states_list(), + parse_table_array(), + parser_export(), + }, "\n\n") + "\n"; + } + + private: string symbol_id(rules::Symbol symbol) { if (symbol.is_built_in()) { if (symbol == rules::ERROR) @@ -114,16 +129,14 @@ namespace tree_sitter { return "!(" + condition_for_character_set(rule.complement()) + ")"; } - string code_for_parse_actions(const rules::Symbol &symbol, const ParseAction &action) { - string sym_id = symbol_id(symbol); + string code_for_parse_action(const ParseAction &action) { switch (action.type) { case ParseActionTypeAccept: - return "ACCEPT_INPUT(" + sym_id + ")"; + return "ACCEPT_INPUT()"; case ParseActionTypeShift: - return "SHIFT(" + sym_id + ", " + to_string(action.state_index) + ")"; + return "SHIFT(" + to_string(action.state_index) + ")"; case ParseActionTypeReduce: return "REDUCE(" + - sym_id + ", " + symbol_id(action.symbol) + ", " + to_string(action.child_flags.size()) + ")"; default: @@ -131,18 +144,6 @@ namespace tree_sitter { } } - string parse_error_call(const set &expected_inputs) { - string result = "PARSE_ERROR(" + to_string(expected_inputs.size()) + ", EXPECT({"; - bool started = false; - for (auto &symbol : expected_inputs) { - if (started) result += ", "; - started = true; - result += symbol_id(symbol); - } - result += "}));"; - return result; - } - string code_for_lex_actions(const LexAction &action, const set &expected_inputs) { switch (action.type) { @@ -181,26 +182,30 @@ namespace tree_sitter { string symbol_enum() { string result = "enum {\n"; + size_t index = 2; for (auto symbol : parse_table.symbols) if (!symbol.is_built_in()) - result += indent(symbol_id(symbol)) + ",\n"; + result += indent(symbol_id(symbol)) + " = " + to_string(index++) + ",\n"; return result + "};"; } string rule_names_list() { string result = "SYMBOL_NAMES = {\n"; + result += indent(string("\"") + "error") + "\",\n"; + result += indent(string("\"") + "end") + "\",\n"; + for (auto symbol : parse_table.symbols) if (!symbol.is_built_in()) result += indent(string("\"") + symbol.name) + "\",\n"; return result + "};"; } - string hidden_symbol_flags() { - string result = "HIDDEN_SYMBOL_FLAGS = {\n"; + string hidden_symbols_list() { + string result = "HIDDEN_SYMBOLS(" + to_string(parse_table.symbols.size()) + ") = {"; for (auto &symbol : parse_table.symbols) - if (!symbol.is_built_in()) - result += indent(symbol.is_hidden() ? "1" : "0") + ",\n"; - return result + "};"; + if (symbol.is_hidden()) + result += indent("\n[" + symbol_id(symbol) + "] = 1,"); + return result + "\n};"; } string includes() { @@ -224,49 +229,34 @@ namespace tree_sitter { return result; } - string parse_table_row_for_state(const ParseState &state) { - string result("SET_LEX_STATE(" + to_string(state.lex_state_id) + ");"); - for (auto &pair : state.actions) { - result += "\n" + code_for_parse_actions(pair.first, pair.second); - } - return result; - } - - string parse_table_function() { + string lex_states_list() { size_t state_id = 0; return join({ - "PARSE_TABLE() {", - indent(join({ - "START_TABLE(" + to_string(parse_table.states.size()) + ")", - join(map_to_string(parse_table.states, [&](ParseState state) -> string { - return join({ - "STATE(" + to_string(state_id++) + ");", - parse_table_row_for_state(state), - "END_STATE();" - }); - }), "\n\n"), - "END_TABLE();", - }, "\n\n")), - "}" + "LEX_STATES(" + to_string(parse_table.states.size()) + ") = {", + indent(join(map_to_string(parse_table.states, [&](ParseState state) { + return "[" + to_string(state_id++) + "] = " + to_string(state.lex_state_id) + ","; + }))), + "};" + }); + } + + string parse_table_array() { + size_t state_id = 0; + return join({ + "PARSE_TABLE(" + to_string(parse_table.states.size()) + ", " + to_string(parse_table.symbols.size()) + ") = {", + indent(join(map_to_string(parse_table.states, [&](ParseState state) { + string result = "[" + to_string(state_id++) + "] = {"; + for (auto &pair : state.actions) + result += indent("\n[" + symbol_id(pair.first) + "] = " + code_for_parse_action(pair.second) + ","); + return result + "\n},"; + }), "\n\n")), + "};" }); } string parser_export() { return "EXPORT_PARSER(ts_parser_" + name + ");"; } - - string code() { - return join({ - includes(), - symbol_count(), - symbol_enum(), - rule_names_list(), - hidden_symbol_flags(), - lex_function(), - parse_table_function(), - parser_export(), - }, "\n\n") + "\n"; - } }; string c_code(string name, const ParseTable &parse_table, const LexTable &lex_table) {