From 820b6f40205349cdcdfd8b4ea98ea7f7f5d95e57 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Wed, 26 Mar 2014 22:43:08 -0700 Subject: [PATCH] Fix infinite loops during table generation for left-recursive rules Add function calls for arbitrary expressions and dot property access to javascript grammar --- examples/grammars/javascript.cc | 17 +- examples/parsers/javascript.c | 4975 +++++++++-------- spec/compiler/build_tables/first_set_spec.cc | 17 +- .../build_tables/rule_can_be_blank_spec.cc | 65 +- spec/runtime/languages/javascript/main.txt | 20 +- src/compiler/build_tables/first_set.cc | 13 +- .../build_tables/rule_can_be_blank.cc | 9 +- 7 files changed, 2824 insertions(+), 2292 deletions(-) diff --git a/examples/grammars/javascript.cc b/examples/grammars/javascript.cc index 6078f7bd..8cdc933f 100644 --- a/examples/grammars/javascript.cc +++ b/examples/grammars/javascript.cc @@ -21,9 +21,6 @@ namespace tree_sitter { Grammar javascript() { return Grammar({ { "program", repeat(sym("statement")) }, - { "_terminator", choice({ - str(";"), - str("\n") }) }, { "statement", choice({ sym("statement_block"), sym("if_statement"), @@ -50,18 +47,23 @@ namespace tree_sitter { { "expression", choice({ sym("function_expression"), sym("function_call"), + sym("property_access"), sym("literal"), sym("identifier") }) }, { "function_expression", seq({ sym("_function"), - sym("identifier"), + optional(sym("identifier")), sym("formal_parameters"), sym("statement_block") }) }, { "function_call", seq({ - sym("identifier"), + sym("expression"), str("("), comma_sep(sym("expression")), str(")") }) }, + { "property_access", seq({ + sym("expression"), + str("."), + sym("identifier") }) }, { "formal_parameters", seq({ str("("), comma_sep(sym("identifier")), @@ -77,7 +79,7 @@ namespace tree_sitter { { "object", seq({ str("{"), comma_sep(err(seq({ - sym("string"), + choice({ sym("string"), sym("identifier") }), str(":"), sym("expression") }))), str("}"), }) }, @@ -86,6 +88,9 @@ namespace tree_sitter { comma_sep(err(sym("expression"))), str("]") }) }, + { "_terminator", choice({ + str(";"), + str("\n") }) }, { "_var", str("var") }, { "_if", str("if") }, { "_function", str("function") }, diff --git a/examples/parsers/javascript.c b/examples/parsers/javascript.c index df8e6f5c..73a231cf 100644 --- a/examples/parsers/javascript.c +++ b/examples/parsers/javascript.c @@ -1,7 +1,7 @@ #include "tree_sitter/parser.h" -STATE_COUNT = 239; -SYMBOL_COUNT = 42; +STATE_COUNT = 265; +SYMBOL_COUNT = 44; enum { ts_sym__else = 2, @@ -23,27 +23,29 @@ enum { ts_sym_number = 18, ts_sym_object = 19, ts_sym_program = 20, - ts_sym_statement = 21, - ts_sym_statement_block = 22, - ts_sym_string = 23, - ts_sym_true = 24, - ts_aux_sym_repeat_helper1 = 25, - ts_aux_sym_repeat_helper2 = 26, - ts_aux_sym_repeat_helper3 = 27, - ts_aux_sym_repeat_helper4 = 28, - ts_aux_sym_repeat_helper5 = 29, - ts_aux_sym_repeat_helper6 = 30, - ts_aux_sym_token1 = 31, - ts_aux_sym_token10 = 32, - ts_aux_sym_token11 = 33, - ts_aux_sym_token2 = 34, - ts_aux_sym_token3 = 35, - ts_aux_sym_token4 = 36, - ts_aux_sym_token5 = 37, - ts_aux_sym_token6 = 38, - ts_aux_sym_token7 = 39, - ts_aux_sym_token8 = 40, - ts_aux_sym_token9 = 41, + ts_sym_property_access = 21, + ts_sym_statement = 22, + ts_sym_statement_block = 23, + ts_sym_string = 24, + ts_sym_true = 25, + ts_aux_sym_repeat_helper1 = 26, + ts_aux_sym_repeat_helper2 = 27, + ts_aux_sym_repeat_helper3 = 28, + ts_aux_sym_repeat_helper4 = 29, + ts_aux_sym_repeat_helper5 = 30, + ts_aux_sym_repeat_helper6 = 31, + ts_aux_sym_token1 = 32, + ts_aux_sym_token10 = 33, + ts_aux_sym_token11 = 34, + ts_aux_sym_token12 = 35, + ts_aux_sym_token2 = 36, + ts_aux_sym_token3 = 37, + ts_aux_sym_token4 = 38, + ts_aux_sym_token5 = 39, + ts_aux_sym_token6 = 40, + ts_aux_sym_token7 = 41, + ts_aux_sym_token8 = 42, + ts_aux_sym_token9 = 43, }; SYMBOL_NAMES = { @@ -68,6 +70,7 @@ SYMBOL_NAMES = { "number", "object", "program", + "property_access", "statement", "statement_block", "string", @@ -81,6 +84,7 @@ SYMBOL_NAMES = { "token1", "token10", "token11", + "token12", "token2", "token3", "token4", @@ -106,6 +110,7 @@ HIDDEN_SYMBOLS = { [ts_aux_sym_token1] = 1, [ts_aux_sym_token10] = 1, [ts_aux_sym_token11] = 1, + [ts_aux_sym_token12] = 1, [ts_aux_sym_token2] = 1, [ts_aux_sym_token3] = 1, [ts_aux_sym_token4] = 1, @@ -122,30 +127,46 @@ LEX_FN() { case 0: if (lookahead == '\n') ADVANCE(1); - if (lookahead == ';') + if (lookahead == '(') ADVANCE(2); + if (lookahead == '.') + ADVANCE(3); + if (lookahead == ';') + ADVANCE(4); LEX_ERROR(); case 1: - ACCEPT_TOKEN(ts_aux_sym_token2); + ACCEPT_TOKEN(ts_aux_sym_token12); case 2: ACCEPT_TOKEN(ts_aux_sym_token1); case 3: - if (lookahead == ')') - ADVANCE(4); - LEX_ERROR(); + ACCEPT_TOKEN(ts_aux_sym_token7); case 4: - ACCEPT_TOKEN(ts_aux_sym_token4); + ACCEPT_TOKEN(ts_aux_sym_token11); case 5: + if (lookahead == '(') + ADVANCE(2); if (lookahead == ')') - ADVANCE(4); - if (lookahead == ',') ADVANCE(6); + if (lookahead == '.') + ADVANCE(3); LEX_ERROR(); case 6: - ACCEPT_TOKEN(ts_aux_sym_token8); + ACCEPT_TOKEN(ts_aux_sym_token2); case 7: - if (lookahead == '\"') + if (lookahead == '(') + ADVANCE(2); + if (lookahead == ')') + ADVANCE(6); + if (lookahead == ',') ADVANCE(8); + if (lookahead == '.') + ADVANCE(3); + LEX_ERROR(); + case 8: + ACCEPT_TOKEN(ts_aux_sym_token6); + case 9: + if (lookahead == '\"') + ADVANCE(15); if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || @@ -155,618 +176,603 @@ LEX_FN() { ('o' <= lookahead && lookahead <= 's') || (lookahead == 'u') || ('w' <= lookahead && lookahead <= 'z')) - ADVANCE(18); - if ('0' <= lookahead && lookahead <= '9') - ADVANCE(20); - if (lookahead == '[') ADVANCE(25); + if ('0' <= lookahead && lookahead <= '9') + ADVANCE(27); + if (lookahead == '[') + ADVANCE(32); if (lookahead == 'f') - ADVANCE(26); + ADVANCE(33); if ('g' <= lookahead && lookahead <= 'f') - ADVANCE(49); + ADVANCE(52); if (lookahead == 'i') - ADVANCE(50); - if ('j' <= lookahead && lookahead <= 'i') ADVANCE(53); + if ('j' <= lookahead && lookahead <= 'i') + ADVANCE(56); if (lookahead == 'n') - ADVANCE(54); - if ('o' <= lookahead && lookahead <= 'n') - ADVANCE(61); + ADVANCE(57); if (lookahead == 't') - ADVANCE(62); - if ('u' <= lookahead && lookahead <= 't') - ADVANCE(69); + ADVANCE(64); if (lookahead == 'v') - ADVANCE(70); + ADVANCE(71); if ('w' <= lookahead && lookahead <= 'v') - ADVANCE(75); - if (lookahead == '{') ADVANCE(76); - if (lookahead == '}') + if (lookahead == '{') ADVANCE(77); - LEX_ERROR(); - case 8: - if (!((lookahead == '\"') || - (lookahead == '\\'))) - ADVANCE(9); - if (lookahead == '\\') - ADVANCE(15); - if (']' <= lookahead && lookahead <= '\\') - ADVANCE(17); - LEX_ERROR(); - case 9: - if (!((lookahead == '\"') || - (lookahead == '\\'))) - ADVANCE(10); - if (lookahead == '\"') - ADVANCE(11); - if (lookahead == '\\') - ADVANCE(12); - if (']' <= lookahead && lookahead <= '\\') - ADVANCE(14); + if (lookahead == '}') + ADVANCE(78); LEX_ERROR(); case 10: - if (!((lookahead == '\"') || - (lookahead == '\\'))) - ADVANCE(10); - if (lookahead == '\"') + if (lookahead == 'a') ADVANCE(11); - if (lookahead == '\\') - ADVANCE(12); - if (']' <= lookahead && lookahead <= '\\') - ADVANCE(14); LEX_ERROR(); case 11: - ACCEPT_TOKEN(ts_sym_string); - case 12: - if (!((lookahead == '\"') || - (lookahead == '\\'))) - ADVANCE(10); - if (lookahead == '\"') - ADVANCE(13); - if ('#' <= lookahead && lookahead <= '\"') - ADVANCE(10); - if (lookahead == '\\') + if (lookahead == 'l') ADVANCE(12); - if (']' <= lookahead && lookahead <= '\\') - ADVANCE(14); + LEX_ERROR(); + case 12: + if (lookahead == 's') + ADVANCE(13); LEX_ERROR(); case 13: - if (!((lookahead == '\"') || - (lookahead == '\\'))) - ADVANCE(10); - if (lookahead == '\"') - ADVANCE(11); - if (lookahead == '\\') - ADVANCE(12); - if (']' <= lookahead && lookahead <= '\\') + if (lookahead == 'e') ADVANCE(14); - ACCEPT_TOKEN(ts_sym_string); - case 14: - if (lookahead == '\"') - ADVANCE(10); LEX_ERROR(); + case 14: + ACCEPT_TOKEN(ts_sym_false); case 15: if (!((lookahead == '\"') || (lookahead == '\\'))) - ADVANCE(10); - if (lookahead == '\"') ADVANCE(16); - if ('#' <= lookahead && lookahead <= '\"') - ADVANCE(9); if (lookahead == '\\') - ADVANCE(12); + ADVANCE(22); if (']' <= lookahead && lookahead <= '\\') - ADVANCE(14); + ADVANCE(24); LEX_ERROR(); case 16: if (!((lookahead == '\"') || (lookahead == '\\'))) - ADVANCE(10); + ADVANCE(17); if (lookahead == '\"') - ADVANCE(11); + ADVANCE(18); if (lookahead == '\\') - ADVANCE(12); + ADVANCE(19); if (']' <= lookahead && lookahead <= '\\') - ADVANCE(14); - ACCEPT_TOKEN(ts_sym_string); + ADVANCE(21); + LEX_ERROR(); case 17: + if (!((lookahead == '\"') || + (lookahead == '\\'))) + ADVANCE(17); if (lookahead == '\"') - ADVANCE(9); + ADVANCE(18); + if (lookahead == '\\') + ADVANCE(19); + if (']' <= lookahead && lookahead <= '\\') + ADVANCE(21); LEX_ERROR(); case 18: - if ((lookahead == '$') || - ('A' <= lookahead && lookahead <= 'Z') || - (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - ACCEPT_TOKEN(ts_sym_identifier); + ACCEPT_TOKEN(ts_sym_string); case 19: - if ((lookahead == '$') || - ('A' <= lookahead && lookahead <= 'Z') || - (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'z')) + if (!((lookahead == '\"') || + (lookahead == '\\'))) + ADVANCE(17); + if (lookahead == '\"') + ADVANCE(20); + if ('#' <= lookahead && lookahead <= '\"') + ADVANCE(17); + if (lookahead == '\\') ADVANCE(19); - ACCEPT_TOKEN(ts_sym_identifier); - case 20: - if (lookahead == '.') + if (']' <= lookahead && lookahead <= '\\') ADVANCE(21); - if ('0' <= lookahead && lookahead <= '9') - ADVANCE(24); - ACCEPT_TOKEN(ts_sym_number); + LEX_ERROR(); + case 20: + if (!((lookahead == '\"') || + (lookahead == '\\'))) + ADVANCE(17); + if (lookahead == '\"') + ADVANCE(18); + if (lookahead == '\\') + ADVANCE(19); + if (']' <= lookahead && lookahead <= '\\') + ADVANCE(21); + ACCEPT_TOKEN(ts_sym_string); case 21: - if ('0' <= lookahead && lookahead <= '9') - ADVANCE(22); + if (lookahead == '\"') + ADVANCE(17); LEX_ERROR(); case 22: - if ('0' <= lookahead && lookahead <= '9') + if (!((lookahead == '\"') || + (lookahead == '\\'))) + ADVANCE(17); + if (lookahead == '\"') ADVANCE(23); - ACCEPT_TOKEN(ts_sym_number); - case 23: - if ('0' <= lookahead && lookahead <= '9') - ADVANCE(23); - ACCEPT_TOKEN(ts_sym_number); - case 24: - if (lookahead == '.') + if ('#' <= lookahead && lookahead <= '\"') + ADVANCE(16); + if (lookahead == '\\') + ADVANCE(19); + if (']' <= lookahead && lookahead <= '\\') ADVANCE(21); - if ('0' <= lookahead && lookahead <= '9') - ADVANCE(24); - ACCEPT_TOKEN(ts_sym_number); + LEX_ERROR(); + case 23: + if (!((lookahead == '\"') || + (lookahead == '\\'))) + ADVANCE(17); + if (lookahead == '\"') + ADVANCE(18); + if (lookahead == '\\') + ADVANCE(19); + if (']' <= lookahead && lookahead <= '\\') + ADVANCE(21); + ACCEPT_TOKEN(ts_sym_string); + case 24: + if (lookahead == '\"') + ADVANCE(16); + LEX_ERROR(); case 25: - ACCEPT_TOKEN(ts_aux_sym_token10); + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + ACCEPT_TOKEN(ts_sym_identifier); case 26: + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + ACCEPT_TOKEN(ts_sym_identifier); + case 27: + if (lookahead == '.') + ADVANCE(28); + if ('0' <= lookahead && lookahead <= '9') + ADVANCE(31); + ACCEPT_TOKEN(ts_sym_number); + case 28: + if ('0' <= lookahead && lookahead <= '9') + ADVANCE(29); + LEX_ERROR(); + case 29: + if ('0' <= lookahead && lookahead <= '9') + ADVANCE(30); + ACCEPT_TOKEN(ts_sym_number); + case 30: + if ('0' <= lookahead && lookahead <= '9') + ADVANCE(30); + ACCEPT_TOKEN(ts_sym_number); + case 31: + if (lookahead == '.') + ADVANCE(28); + if ('0' <= lookahead && lookahead <= '9') + ADVANCE(31); + ACCEPT_TOKEN(ts_sym_number); + case 32: + ACCEPT_TOKEN(ts_aux_sym_token9); + case 33: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || ('b' <= lookahead && lookahead <= 't') || ('v' <= lookahead && lookahead <= 'z')) - ADVANCE(19); + ADVANCE(26); if (lookahead == 'a') - ADVANCE(31); - if (lookahead == 'u') - ADVANCE(35); - if ('v' <= lookahead && lookahead <= 'u') - ADVANCE(48); - ACCEPT_TOKEN(ts_sym_identifier); - case 27: - if (lookahead == 'l') - ADVANCE(28); - LEX_ERROR(); - case 28: - if (lookahead == 's') - ADVANCE(29); - LEX_ERROR(); - case 29: - if (lookahead == 'e') - ADVANCE(30); - LEX_ERROR(); - case 30: - ACCEPT_TOKEN(ts_sym_false); - case 31: - if ((lookahead == '$') || - ('A' <= lookahead && lookahead <= 'Z') || - (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'k') || - ('m' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - if (lookahead == 'l') - ADVANCE(32); - if ('m' <= lookahead && lookahead <= 'l') - ADVANCE(28); - ACCEPT_TOKEN(ts_sym_identifier); - case 32: - if ((lookahead == '$') || - ('A' <= lookahead && lookahead <= 'Z') || - (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'r') || - ('t' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - if (lookahead == 's') - ADVANCE(33); - if ('t' <= lookahead && lookahead <= 's') - ADVANCE(29); - ACCEPT_TOKEN(ts_sym_identifier); - case 33: - if ((lookahead == '$') || - ('A' <= lookahead && lookahead <= 'Z') || - (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'd') || - ('f' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - if (lookahead == 'e') ADVANCE(34); - if ('f' <= lookahead && lookahead <= 'e') - ADVANCE(30); + if ('b' <= lookahead && lookahead <= 'a') + ADVANCE(11); + if (lookahead == 'u') + ADVANCE(38); + if ('v' <= lookahead && lookahead <= 'u') + ADVANCE(51); ACCEPT_TOKEN(ts_sym_identifier); case 34: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'z')) - ADVANCE(19); + ('a' <= lookahead && lookahead <= 'k') || + ('m' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + if (lookahead == 'l') + ADVANCE(35); ACCEPT_TOKEN(ts_sym_identifier); case 35: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'm') || - ('o' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - if (lookahead == 'n') + ('a' <= lookahead && lookahead <= 'r') || + ('t' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + if (lookahead == 's') ADVANCE(36); - if ('o' <= lookahead && lookahead <= 'n') - ADVANCE(47); ACCEPT_TOKEN(ts_sym_identifier); case 36: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'b') || - ('d' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - if (lookahead == 'c') + ('a' <= lookahead && lookahead <= 'd') || + ('f' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + if (lookahead == 'e') ADVANCE(37); - if ('d' <= lookahead && lookahead <= 'c') - ADVANCE(46); ACCEPT_TOKEN(ts_sym_identifier); case 37: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || - ('a' <= lookahead && lookahead <= 's') || - ('u' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - if (lookahead == 't') - ADVANCE(38); - if ('u' <= lookahead && lookahead <= 't') - ADVANCE(45); + ('a' <= lookahead && lookahead <= 'z')) + ADVANCE(26); ACCEPT_TOKEN(ts_sym_identifier); case 38: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'h') || - ('j' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - if (lookahead == 'i') + ('a' <= lookahead && lookahead <= 'm') || + ('o' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + if (lookahead == 'n') ADVANCE(39); - if ('j' <= lookahead && lookahead <= 'i') - ADVANCE(44); + if ('o' <= lookahead && lookahead <= 'n') + ADVANCE(50); ACCEPT_TOKEN(ts_sym_identifier); case 39: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'n') || - ('p' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - if (lookahead == 'o') + ('a' <= lookahead && lookahead <= 'b') || + ('d' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + if (lookahead == 'c') ADVANCE(40); - if ('p' <= lookahead && lookahead <= 'o') - ADVANCE(43); + if ('d' <= lookahead && lookahead <= 'c') + ADVANCE(49); ACCEPT_TOKEN(ts_sym_identifier); case 40: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'm') || - ('o' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - if (lookahead == 'n') + ('a' <= lookahead && lookahead <= 's') || + ('u' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + if (lookahead == 't') ADVANCE(41); - if ('o' <= lookahead && lookahead <= 'n') - ADVANCE(42); + if ('u' <= lookahead && lookahead <= 't') + ADVANCE(48); ACCEPT_TOKEN(ts_sym_identifier); case 41: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - ACCEPT_TOKEN(ts_sym__function); - case 42: - ACCEPT_TOKEN(ts_sym__function); - case 43: - if (lookahead == 'n') + ('a' <= lookahead && lookahead <= 'h') || + ('j' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + if (lookahead == 'i') ADVANCE(42); - LEX_ERROR(); - case 44: + if ('j' <= lookahead && lookahead <= 'i') + ADVANCE(47); + ACCEPT_TOKEN(ts_sym_identifier); + case 42: + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'n') || + ('p' <= lookahead && lookahead <= 'z')) + ADVANCE(26); if (lookahead == 'o') ADVANCE(43); - LEX_ERROR(); - case 45: - if (lookahead == 'i') + if ('p' <= lookahead && lookahead <= 'o') + ADVANCE(46); + ACCEPT_TOKEN(ts_sym_identifier); + case 43: + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'm') || + ('o' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + if (lookahead == 'n') ADVANCE(44); - LEX_ERROR(); + if ('o' <= lookahead && lookahead <= 'n') + ADVANCE(45); + ACCEPT_TOKEN(ts_sym_identifier); + case 44: + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + ACCEPT_TOKEN(ts_sym__function); + case 45: + ACCEPT_TOKEN(ts_sym__function); case 46: - if (lookahead == 't') + if (lookahead == 'n') ADVANCE(45); LEX_ERROR(); case 47: - if (lookahead == 'c') + if (lookahead == 'o') ADVANCE(46); LEX_ERROR(); case 48: - if (lookahead == 'n') + if (lookahead == 'i') ADVANCE(47); LEX_ERROR(); case 49: - if (lookahead == 'a') - ADVANCE(27); + if (lookahead == 't') + ADVANCE(48); LEX_ERROR(); case 50: + if (lookahead == 'c') + ADVANCE(49); + LEX_ERROR(); + case 51: + if (lookahead == 'n') + ADVANCE(50); + LEX_ERROR(); + case 52: + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('b' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + if (lookahead == 'a') + ADVANCE(34); + ACCEPT_TOKEN(ts_sym_identifier); + case 53: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || ('a' <= lookahead && lookahead <= 'e') || ('g' <= lookahead && lookahead <= 'z')) - ADVANCE(19); + ADVANCE(26); if (lookahead == 'f') - ADVANCE(51); - if ('g' <= lookahead && lookahead <= 'f') - ADVANCE(52); + ADVANCE(55); ACCEPT_TOKEN(ts_sym_identifier); - case 51: + case 54: + ACCEPT_TOKEN(ts_sym__if); + case 55: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || ('a' <= lookahead && lookahead <= 'z')) - ADVANCE(19); + ADVANCE(26); ACCEPT_TOKEN(ts_sym__if); - case 52: - ACCEPT_TOKEN(ts_sym__if); - case 53: + case 56: if (lookahead == 'f') - ADVANCE(52); + ADVANCE(54); LEX_ERROR(); - case 54: + case 57: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || ('a' <= lookahead && lookahead <= 't') || ('v' <= lookahead && lookahead <= 'z')) - ADVANCE(19); + ADVANCE(26); if (lookahead == 'u') - ADVANCE(55); - if ('v' <= lookahead && lookahead <= 'u') - ADVANCE(60); - ACCEPT_TOKEN(ts_sym_identifier); - case 55: - if ((lookahead == '$') || - ('A' <= lookahead && lookahead <= 'Z') || - (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'k') || - ('m' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - if (lookahead == 'l') - ADVANCE(56); - if ('m' <= lookahead && lookahead <= 'l') - ADVANCE(59); - ACCEPT_TOKEN(ts_sym_identifier); - case 56: - if ((lookahead == '$') || - ('A' <= lookahead && lookahead <= 'Z') || - (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'k') || - ('m' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - if (lookahead == 'l') - ADVANCE(57); - if ('m' <= lookahead && lookahead <= 'l') ADVANCE(58); + if ('v' <= lookahead && lookahead <= 'u') + ADVANCE(63); ACCEPT_TOKEN(ts_sym_identifier); - case 57: + case 58: + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'k') || + ('m' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + if (lookahead == 'l') + ADVANCE(59); + if ('m' <= lookahead && lookahead <= 'l') + ADVANCE(62); + ACCEPT_TOKEN(ts_sym_identifier); + case 59: + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'k') || + ('m' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + if (lookahead == 'l') + ADVANCE(60); + if ('m' <= lookahead && lookahead <= 'l') + ADVANCE(61); + ACCEPT_TOKEN(ts_sym_identifier); + case 60: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || ('a' <= lookahead && lookahead <= 'z')) - ADVANCE(19); + ADVANCE(26); ACCEPT_TOKEN(ts_sym_identifier); - case 58: - ACCEPT_TOKEN(ts_sym_null); - case 59: - if (lookahead == 'l') - ADVANCE(58); - LEX_ERROR(); - case 60: - if (lookahead == 'l') - ADVANCE(59); - LEX_ERROR(); case 61: - if (lookahead == 'u') - ADVANCE(60); - LEX_ERROR(); + ACCEPT_TOKEN(ts_sym_null); case 62: + if (lookahead == 'l') + ADVANCE(61); + LEX_ERROR(); + case 63: + if (lookahead == 'l') + ADVANCE(62); + LEX_ERROR(); + case 64: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || ('a' <= lookahead && lookahead <= 'q') || ('s' <= lookahead && lookahead <= 'z')) - ADVANCE(19); + ADVANCE(26); if (lookahead == 'r') - ADVANCE(66); - ACCEPT_TOKEN(ts_sym_identifier); - case 63: - if (lookahead == 'u') - ADVANCE(64); - LEX_ERROR(); - case 64: - if (lookahead == 'e') ADVANCE(65); - LEX_ERROR(); + if ('s' <= lookahead && lookahead <= 'r') + ADVANCE(70); + ACCEPT_TOKEN(ts_sym_identifier); case 65: - ACCEPT_TOKEN(ts_sym_true); - case 66: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || ('a' <= lookahead && lookahead <= 't') || ('v' <= lookahead && lookahead <= 'z')) - ADVANCE(19); + ADVANCE(26); if (lookahead == 'u') + ADVANCE(66); + if ('v' <= lookahead && lookahead <= 'u') + ADVANCE(69); + ACCEPT_TOKEN(ts_sym_identifier); + case 66: + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'd') || + ('f' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + if (lookahead == 'e') ADVANCE(67); + if ('f' <= lookahead && lookahead <= 'e') + ADVANCE(68); ACCEPT_TOKEN(ts_sym_identifier); case 67: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'd') || - ('f' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - if (lookahead == 'e') - ADVANCE(68); + ('a' <= lookahead && lookahead <= 'z')) + ADVANCE(26); ACCEPT_TOKEN(ts_sym_identifier); case 68: - if ((lookahead == '$') || - ('A' <= lookahead && lookahead <= 'Z') || - (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - ACCEPT_TOKEN(ts_sym_identifier); + ACCEPT_TOKEN(ts_sym_true); case 69: - if (lookahead == 'r') - ADVANCE(63); + if (lookahead == 'e') + ADVANCE(68); LEX_ERROR(); case 70: + if (lookahead == 'u') + ADVANCE(69); + LEX_ERROR(); + case 71: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || ('b' <= lookahead && lookahead <= 'z')) - ADVANCE(19); + ADVANCE(26); if (lookahead == 'a') - ADVANCE(73); + ADVANCE(74); ACCEPT_TOKEN(ts_sym_identifier); - case 71: - if (lookahead == 'r') - ADVANCE(72); - LEX_ERROR(); case 72: - ACCEPT_TOKEN(ts_sym__var); + if (lookahead == 'r') + ADVANCE(73); + LEX_ERROR(); case 73: + ACCEPT_TOKEN(ts_sym__var); + case 74: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || ('a' <= lookahead && lookahead <= 'q') || ('s' <= lookahead && lookahead <= 'z')) - ADVANCE(19); + ADVANCE(26); if (lookahead == 'r') - ADVANCE(74); + ADVANCE(75); ACCEPT_TOKEN(ts_sym_identifier); - case 74: - if ((lookahead == '$') || - ('A' <= lookahead && lookahead <= 'Z') || - (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - ACCEPT_TOKEN(ts_sym__var); case 75: - if (lookahead == 'a') - ADVANCE(71); - LEX_ERROR(); + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) + ADVANCE(26); + ACCEPT_TOKEN(ts_sym__var); case 76: - ACCEPT_TOKEN(ts_aux_sym_token5); + if (lookahead == 'a') + ADVANCE(72); + LEX_ERROR(); case 77: - ACCEPT_TOKEN(ts_aux_sym_token6); + ACCEPT_TOKEN(ts_aux_sym_token3); case 78: - if (lookahead == '}') - ADVANCE(77); - LEX_ERROR(); + ACCEPT_TOKEN(ts_aux_sym_token4); case 79: - if (lookahead == ',') - ADVANCE(6); - if (lookahead == ']') - ADVANCE(80); - LEX_ERROR(); - case 80: - ACCEPT_TOKEN(ts_aux_sym_token11); - case 81: - if (lookahead == ',') - ADVANCE(6); - if (lookahead == '}') - ADVANCE(77); - LEX_ERROR(); - case 82: - if (lookahead == '{') - ADVANCE(76); - LEX_ERROR(); - case 83: - if ((lookahead == '$') || - ('A' <= lookahead && lookahead <= 'Z') || - (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'z')) - ADVANCE(18); - LEX_ERROR(); - case 84: - if ((lookahead == '$') || - ('A' <= lookahead && lookahead <= 'Z') || - (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'z')) - ADVANCE(18); - if (lookahead == ')') + if (lookahead == '\n') + ADVANCE(1); + if (lookahead == ';') ADVANCE(4); LEX_ERROR(); - case 85: + case 80: + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) + ADVANCE(25); + LEX_ERROR(); + case 81: + if (lookahead == '}') + ADVANCE(78); + LEX_ERROR(); + case 82: if (lookahead == '(') - ADVANCE(86); + ADVANCE(2); + if (lookahead == ',') + ADVANCE(8); + if (lookahead == '.') + ADVANCE(3); + if (lookahead == '}') + ADVANCE(78); + LEX_ERROR(); + case 83: + if (lookahead == '(') + ADVANCE(2); + if (lookahead == ',') + ADVANCE(8); + if (lookahead == '.') + ADVANCE(3); + if (lookahead == ']') + ADVANCE(84); + LEX_ERROR(); + case 84: + ACCEPT_TOKEN(ts_aux_sym_token10); + case 85: + if (lookahead == '{') + ADVANCE(77); LEX_ERROR(); case 86: - ACCEPT_TOKEN(ts_aux_sym_token3); + if (lookahead == ')') + ADVANCE(6); + LEX_ERROR(); case 87: - if (lookahead == ']') - ADVANCE(80); + if (lookahead == ')') + ADVANCE(6); + if (lookahead == ',') + ADVANCE(8); LEX_ERROR(); case 88: - if (lookahead == '\"') - ADVANCE(8); if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'e') || - ('g' <= lookahead && lookahead <= 'm') || - ('o' <= lookahead && lookahead <= 's') || - ('u' <= lookahead && lookahead <= 'z')) - ADVANCE(18); - if ('0' <= lookahead && lookahead <= '9') - ADVANCE(20); - if (lookahead == '[') + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(25); - if (lookahead == 'f') - ADVANCE(26); - if ('g' <= lookahead && lookahead <= 'f') - ADVANCE(89); - if (lookahead == 'n') - ADVANCE(54); - if (lookahead == 't') - ADVANCE(62); - if (lookahead == '{') - ADVANCE(76); + if (lookahead == ')') + ADVANCE(6); LEX_ERROR(); case 89: + if (lookahead == '(') + ADVANCE(2); + LEX_ERROR(); + case 90: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || - ('b' <= lookahead && lookahead <= 'z')) - ADVANCE(19); - if (lookahead == 'a') - ADVANCE(31); - if ('b' <= lookahead && lookahead <= 'a') - ADVANCE(27); - ACCEPT_TOKEN(ts_sym_identifier); - case 90: - if (lookahead == ':') - ADVANCE(91); + ('a' <= lookahead && lookahead <= 'z')) + ADVANCE(25); + if (lookahead == '(') + ADVANCE(2); LEX_ERROR(); case 91: - ACCEPT_TOKEN(ts_aux_sym_token9); + if (lookahead == ']') + ADVANCE(84); + LEX_ERROR(); case 92: - if (lookahead == '\"') + if (lookahead == ',') ADVANCE(8); - if (lookahead == '}') - ADVANCE(77); + if (lookahead == ']') + ADVANCE(84); LEX_ERROR(); case 93: if (lookahead == '\"') - ADVANCE(8); + ADVANCE(15); if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || @@ -774,105 +780,151 @@ LEX_FN() { ('g' <= lookahead && lookahead <= 'm') || ('o' <= lookahead && lookahead <= 's') || ('u' <= lookahead && lookahead <= 'z')) - ADVANCE(18); - if ('0' <= lookahead && lookahead <= '9') - ADVANCE(20); - if (lookahead == '[') ADVANCE(25); - if (lookahead == ']') - ADVANCE(80); - if (lookahead == 'f') - ADVANCE(26); - if ('g' <= lookahead && lookahead <= 'f') - ADVANCE(89); - if (lookahead == 'n') - ADVANCE(54); - if (lookahead == 't') - ADVANCE(62); - if (lookahead == '{') - ADVANCE(76); - LEX_ERROR(); - case 94: - if (lookahead == '\"') - ADVANCE(8); - if ((lookahead == '$') || - ('A' <= lookahead && lookahead <= 'Z') || - (lookahead == '_') || - ('a' <= lookahead && lookahead <= 'e') || - ('g' <= lookahead && lookahead <= 'm') || - ('o' <= lookahead && lookahead <= 's') || - ('u' <= lookahead && lookahead <= 'z')) - ADVANCE(18); - if (lookahead == ')') - ADVANCE(4); if ('0' <= lookahead && lookahead <= '9') - ADVANCE(20); + ADVANCE(27); if (lookahead == '[') - ADVANCE(25); - if (lookahead == 'f') - ADVANCE(26); - if ('g' <= lookahead && lookahead <= 'f') - ADVANCE(89); - if (lookahead == 'n') - ADVANCE(54); - if (lookahead == 't') - ADVANCE(62); - if (lookahead == '{') - ADVANCE(76); - LEX_ERROR(); - case 95: - if (lookahead == '(') - ADVANCE(86); - if (lookahead == ',') - ADVANCE(6); + ADVANCE(32); if (lookahead == ']') - ADVANCE(80); - LEX_ERROR(); - case 96: - if (lookahead == '(') - ADVANCE(86); - if (lookahead == ')') - ADVANCE(4); - if (lookahead == ',') - ADVANCE(6); - LEX_ERROR(); - case 97: - if (lookahead == '(') - ADVANCE(86); - if (lookahead == ',') - ADVANCE(6); - if (lookahead == '}') + ADVANCE(84); + if (lookahead == 'f') + ADVANCE(33); + if ('g' <= lookahead && lookahead <= 'f') + ADVANCE(10); + if (lookahead == 'n') + ADVANCE(57); + if ('o' <= lookahead && lookahead <= 'n') + ADVANCE(94); + if (lookahead == 't') + ADVANCE(64); + if ('u' <= lookahead && lookahead <= 't') + ADVANCE(95); + if (lookahead == '{') ADVANCE(77); LEX_ERROR(); - case 98: - if (lookahead == '\"') - ADVANCE(8); + case 94: + if (lookahead == 'u') + ADVANCE(63); LEX_ERROR(); - case 99: - if (lookahead == '\n') - ADVANCE(1); + case 95: + if (lookahead == 'r') + ADVANCE(70); + LEX_ERROR(); + case 96: + if (lookahead == '\"') + ADVANCE(15); + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'e') || + ('g' <= lookahead && lookahead <= 'm') || + ('o' <= lookahead && lookahead <= 's') || + ('u' <= lookahead && lookahead <= 'z')) + ADVANCE(25); + if ('0' <= lookahead && lookahead <= '9') + ADVANCE(27); + if (lookahead == '[') + ADVANCE(32); + if (lookahead == 'f') + ADVANCE(33); + if ('g' <= lookahead && lookahead <= 'f') + ADVANCE(10); + if (lookahead == 'n') + ADVANCE(57); + if ('o' <= lookahead && lookahead <= 'n') + ADVANCE(94); + if (lookahead == 't') + ADVANCE(64); + if ('u' <= lookahead && lookahead <= 't') + ADVANCE(95); + if (lookahead == '{') + ADVANCE(77); + LEX_ERROR(); + case 97: if (lookahead == ':') - ADVANCE(91); - if (lookahead == ';') - ADVANCE(2); + ADVANCE(98); + LEX_ERROR(); + case 98: + ACCEPT_TOKEN(ts_aux_sym_token8); + case 99: + if (lookahead == ',') + ADVANCE(8); + if (lookahead == '}') + ADVANCE(78); LEX_ERROR(); case 100: + if (lookahead == '\"') + ADVANCE(15); + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) + ADVANCE(25); + if (lookahead == '}') + ADVANCE(78); + LEX_ERROR(); + case 101: + if (lookahead == '\"') + ADVANCE(15); + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'z')) + ADVANCE(25); + LEX_ERROR(); + case 102: + if (lookahead == '\"') + ADVANCE(15); + if ((lookahead == '$') || + ('A' <= lookahead && lookahead <= 'Z') || + (lookahead == '_') || + ('a' <= lookahead && lookahead <= 'e') || + ('g' <= lookahead && lookahead <= 'm') || + ('o' <= lookahead && lookahead <= 's') || + ('u' <= lookahead && lookahead <= 'z')) + ADVANCE(25); + if (lookahead == ')') + ADVANCE(6); + if ('0' <= lookahead && lookahead <= '9') + ADVANCE(27); + if (lookahead == '[') + ADVANCE(32); + if (lookahead == 'f') + ADVANCE(33); + if ('g' <= lookahead && lookahead <= 'f') + ADVANCE(10); + if (lookahead == 'n') + ADVANCE(57); + if ('o' <= lookahead && lookahead <= 'n') + ADVANCE(94); + if (lookahead == 't') + ADVANCE(64); + if ('u' <= lookahead && lookahead <= 't') + ADVANCE(95); + if (lookahead == '{') + ADVANCE(77); + LEX_ERROR(); + case 103: if (lookahead == '\n') ADVANCE(1); if (lookahead == '(') - ADVANCE(86); - if (lookahead == ';') ADVANCE(2); + if (lookahead == '.') + ADVANCE(3); + if (lookahead == ':') + ADVANCE(98); + if (lookahead == ';') + ADVANCE(4); LEX_ERROR(); - case 101: + case 104: if (lookahead == '=') - ADVANCE(102); + ADVANCE(105); LEX_ERROR(); - case 102: - ACCEPT_TOKEN(ts_aux_sym_token7); - case 103: + case 105: + ACCEPT_TOKEN(ts_aux_sym_token5); + case 106: if (lookahead == '\"') - ADVANCE(8); + ADVANCE(15); if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || @@ -882,100 +934,96 @@ LEX_FN() { ('o' <= lookahead && lookahead <= 's') || (lookahead == 'u') || ('w' <= lookahead && lookahead <= 'z')) - ADVANCE(18); - if ('0' <= lookahead && lookahead <= '9') - ADVANCE(20); - if (lookahead == '[') ADVANCE(25); - if (lookahead == 'e') - ADVANCE(108); - if ('f' <= lookahead && lookahead <= 'e') - ADVANCE(112); - if (lookahead == 'f') - ADVANCE(26); - if ('g' <= lookahead && lookahead <= 'f') - ADVANCE(49); - if (lookahead == 'i') - ADVANCE(50); - if ('j' <= lookahead && lookahead <= 'i') - ADVANCE(53); - if (lookahead == 'n') - ADVANCE(54); - if ('o' <= lookahead && lookahead <= 'n') - ADVANCE(61); - if (lookahead == 't') - ADVANCE(62); - if ('u' <= lookahead && lookahead <= 't') - ADVANCE(69); - if (lookahead == 'v') - ADVANCE(70); - if ('w' <= lookahead && lookahead <= 'v') - ADVANCE(75); - if (lookahead == '{') - ADVANCE(76); - if (lookahead == '}') - ADVANCE(77); - LEX_ERROR(); - case 104: - if (lookahead == 'l') - ADVANCE(105); - LEX_ERROR(); - case 105: - if (lookahead == 's') - ADVANCE(106); - LEX_ERROR(); - case 106: + if ('0' <= lookahead && lookahead <= '9') + ADVANCE(27); + if (lookahead == '[') + ADVANCE(32); if (lookahead == 'e') ADVANCE(107); + if ('f' <= lookahead && lookahead <= 'e') + ADVANCE(114); + if (lookahead == 'f') + ADVANCE(33); + if ('g' <= lookahead && lookahead <= 'f') + ADVANCE(52); + if (lookahead == 'i') + ADVANCE(53); + if ('j' <= lookahead && lookahead <= 'i') + ADVANCE(56); + if (lookahead == 'n') + ADVANCE(57); + if (lookahead == 't') + ADVANCE(64); + if (lookahead == 'v') + ADVANCE(71); + if ('w' <= lookahead && lookahead <= 'v') + ADVANCE(76); + if (lookahead == '{') + ADVANCE(77); + if (lookahead == '}') + ADVANCE(78); LEX_ERROR(); case 107: - ACCEPT_TOKEN(ts_sym__else); - case 108: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || ('a' <= lookahead && lookahead <= 'k') || ('m' <= lookahead && lookahead <= 'z')) - ADVANCE(19); + ADVANCE(26); if (lookahead == 'l') - ADVANCE(109); + ADVANCE(108); + if ('m' <= lookahead && lookahead <= 'l') + ADVANCE(113); ACCEPT_TOKEN(ts_sym_identifier); - case 109: + case 108: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || ('a' <= lookahead && lookahead <= 'r') || ('t' <= lookahead && lookahead <= 'z')) - ADVANCE(19); + ADVANCE(26); if (lookahead == 's') - ADVANCE(110); + ADVANCE(109); + if ('t' <= lookahead && lookahead <= 's') + ADVANCE(112); ACCEPT_TOKEN(ts_sym_identifier); - case 110: + case 109: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || ('a' <= lookahead && lookahead <= 'd') || ('f' <= lookahead && lookahead <= 'z')) - ADVANCE(19); + ADVANCE(26); if (lookahead == 'e') + ADVANCE(110); + if ('f' <= lookahead && lookahead <= 'e') ADVANCE(111); ACCEPT_TOKEN(ts_sym_identifier); - case 111: + case 110: if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || ('a' <= lookahead && lookahead <= 'z')) - ADVANCE(19); + ADVANCE(26); + ACCEPT_TOKEN(ts_sym__else); + case 111: ACCEPT_TOKEN(ts_sym__else); case 112: - if (lookahead == 'l') - ADVANCE(105); - if (lookahead == 'u') - ADVANCE(48); + if (lookahead == 'e') + ADVANCE(111); LEX_ERROR(); case 113: + if (lookahead == 's') + ADVANCE(112); + LEX_ERROR(); + case 114: + if (lookahead == 'l') + ADVANCE(113); + LEX_ERROR(); + case 115: if (lookahead == '\"') - ADVANCE(8); + ADVANCE(15); if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || @@ -985,43 +1033,37 @@ LEX_FN() { ('o' <= lookahead && lookahead <= 's') || (lookahead == 'u') || ('w' <= lookahead && lookahead <= 'z')) - ADVANCE(18); - if ('0' <= lookahead && lookahead <= '9') - ADVANCE(20); - if (lookahead == '[') ADVANCE(25); + if ('0' <= lookahead && lookahead <= '9') + ADVANCE(27); + if (lookahead == '[') + ADVANCE(32); if (lookahead == 'f') - ADVANCE(26); + ADVANCE(33); if ('g' <= lookahead && lookahead <= 'f') - ADVANCE(49); + ADVANCE(10); if (lookahead == 'i') - ADVANCE(50); - if ('j' <= lookahead && lookahead <= 'i') ADVANCE(53); + if ('j' <= lookahead && lookahead <= 'i') + ADVANCE(56); if (lookahead == 'n') - ADVANCE(54); + ADVANCE(57); if ('o' <= lookahead && lookahead <= 'n') - ADVANCE(61); + ADVANCE(94); if (lookahead == 't') - ADVANCE(62); + ADVANCE(64); if ('u' <= lookahead && lookahead <= 't') - ADVANCE(69); + ADVANCE(95); if (lookahead == 'v') - ADVANCE(70); + ADVANCE(71); if ('w' <= lookahead && lookahead <= 'v') - ADVANCE(75); - if (lookahead == '{') ADVANCE(76); + if (lookahead == '{') + ADVANCE(77); LEX_ERROR(); - case 114: - if (lookahead == '(') - ADVANCE(86); - if (lookahead == ')') - ADVANCE(4); - LEX_ERROR(); - case 115: + case 116: if (lookahead == '\"') - ADVANCE(8); + ADVANCE(15); if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || @@ -1031,45 +1073,47 @@ LEX_FN() { ('o' <= lookahead && lookahead <= 's') || (lookahead == 'u') || ('w' <= lookahead && lookahead <= 'z')) - ADVANCE(18); - if ('0' <= lookahead && lookahead <= '9') - ADVANCE(20); - if (lookahead == '[') ADVANCE(25); + if ('0' <= lookahead && lookahead <= '9') + ADVANCE(27); + if (lookahead == '[') + ADVANCE(32); if (lookahead == 'e') - ADVANCE(108); + ADVANCE(107); if ('f' <= lookahead && lookahead <= 'e') - ADVANCE(112); + ADVANCE(114); if (lookahead == 'f') - ADVANCE(26); + ADVANCE(33); if ('g' <= lookahead && lookahead <= 'f') - ADVANCE(49); + ADVANCE(52); if (lookahead == 'i') - ADVANCE(50); - if ('j' <= lookahead && lookahead <= 'i') ADVANCE(53); + if ('j' <= lookahead && lookahead <= 'i') + ADVANCE(56); if (lookahead == 'n') - ADVANCE(54); - if ('o' <= lookahead && lookahead <= 'n') - ADVANCE(61); + ADVANCE(57); if (lookahead == 't') - ADVANCE(62); - if ('u' <= lookahead && lookahead <= 't') - ADVANCE(69); + ADVANCE(64); if (lookahead == 'v') - ADVANCE(70); + ADVANCE(71); if ('w' <= lookahead && lookahead <= 'v') - ADVANCE(75); - if (lookahead == '{') ADVANCE(76); + if (lookahead == '{') + ADVANCE(77); LEX_ERROR(); - case 116: + case 117: + LEX_ERROR(); + case 118: + if (lookahead == 'l') + ADVANCE(113); + if (lookahead == 'u') + ADVANCE(51); LEX_ERROR(); case ts_lex_state_error: if (lookahead == '\n') ADVANCE(1); if (lookahead == '\"') - ADVANCE(8); + ADVANCE(15); if ((lookahead == '$') || ('A' <= lookahead && lookahead <= 'Z') || (lookahead == '_') || @@ -1079,47 +1123,51 @@ LEX_FN() { ('o' <= lookahead && lookahead <= 's') || (lookahead == 'u') || ('w' <= lookahead && lookahead <= 'z')) - ADVANCE(18); - if (lookahead == '(') - ADVANCE(86); - if (lookahead == ')') - ADVANCE(4); - if (lookahead == ',') - ADVANCE(6); - if ('0' <= lookahead && lookahead <= '9') - ADVANCE(20); - if (lookahead == ':') - ADVANCE(91); - if (lookahead == ';') - ADVANCE(2); - if (lookahead == '=') - ADVANCE(102); - if (lookahead == '[') ADVANCE(25); + if (lookahead == '(') + ADVANCE(2); + if (lookahead == ')') + ADVANCE(6); + if (lookahead == ',') + ADVANCE(8); + if (lookahead == '.') + ADVANCE(3); + if ('0' <= lookahead && lookahead <= '9') + ADVANCE(27); + if (lookahead == ':') + ADVANCE(98); + if (lookahead == ';') + ADVANCE(4); + if (lookahead == '=') + ADVANCE(105); + if (lookahead == '[') + ADVANCE(32); if (lookahead == ']') - ADVANCE(80); + ADVANCE(84); if (lookahead == 'e') - ADVANCE(108); + ADVANCE(107); + if ('f' <= lookahead && lookahead <= 'e') + ADVANCE(118); if (lookahead == 'f') - ADVANCE(26); + ADVANCE(33); if ('g' <= lookahead && lookahead <= 'f') - ADVANCE(89); + ADVANCE(52); if (lookahead == 'i') - ADVANCE(50); - if ('j' <= lookahead && lookahead <= 'i') ADVANCE(53); + if ('j' <= lookahead && lookahead <= 'i') + ADVANCE(56); if (lookahead == 'n') - ADVANCE(54); + ADVANCE(57); if (lookahead == 't') - ADVANCE(62); + ADVANCE(64); if (lookahead == 'v') - ADVANCE(70); + ADVANCE(71); if ('w' <= lookahead && lookahead <= 'v') - ADVANCE(75); - if (lookahead == '{') ADVANCE(76); - if (lookahead == '}') + if (lookahead == '{') ADVANCE(77); + if (lookahead == '}') + ADVANCE(78); LEX_ERROR(); default: LEX_PANIC(); @@ -1127,504 +1175,527 @@ LEX_FN() { } LEX_STATES = { - [0] = 113, - [1] = 83, + [0] = 115, + [1] = 90, [2] = 85, - [3] = 82, - [4] = 0, - [5] = 7, - [6] = 85, - [7] = 88, - [8] = 83, - [9] = 85, - [10] = 82, - [11] = 3, - [12] = 7, - [13] = 83, - [14] = 101, - [15] = 88, - [16] = 0, - [17] = 0, - [18] = 0, - [19] = 100, - [20] = 94, - [21] = 83, - [22] = 85, - [23] = 82, - [24] = 5, - [25] = 7, + [3] = 0, + [4] = 9, + [5] = 89, + [6] = 96, + [7] = 90, + [8] = 85, + [9] = 5, + [10] = 9, + [11] = 80, + [12] = 104, + [13] = 96, + [14] = 0, + [15] = 0, + [16] = 102, + [17] = 90, + [18] = 85, + [19] = 7, + [20] = 9, + [21] = 79, + [22] = 9, + [23] = 9, + [24] = 0, + [25] = 80, [26] = 0, - [27] = 7, - [28] = 7, - [29] = 7, - [30] = 7, - [31] = 78, - [32] = 93, - [33] = 83, - [34] = 85, - [35] = 82, - [36] = 79, - [37] = 7, - [38] = 78, - [39] = 79, - [40] = 7, - [41] = 99, - [42] = 88, + [27] = 0, + [28] = 9, + [29] = 9, + [30] = 81, + [31] = 9, + [32] = 103, + [33] = 96, + [34] = 90, + [35] = 85, + [36] = 82, + [37] = 9, + [38] = 81, + [39] = 82, + [40] = 93, + [41] = 90, + [42] = 85, [43] = 83, - [44] = 85, - [45] = 82, - [46] = 81, - [47] = 7, - [48] = 78, - [49] = 81, - [50] = 84, - [51] = 5, - [52] = 3, - [53] = 82, - [54] = 83, - [55] = 5, - [56] = 3, - [57] = 82, - [58] = 81, - [59] = 81, - [60] = 78, + [44] = 9, + [45] = 81, + [46] = 83, + [47] = 89, + [48] = 85, + [49] = 83, + [50] = 88, + [51] = 87, + [52] = 86, + [53] = 85, + [54] = 80, + [55] = 87, + [56] = 86, + [57] = 85, + [58] = 83, + [59] = 83, + [60] = 91, [61] = 0, - [62] = 98, - [63] = 90, - [64] = 88, - [65] = 81, - [66] = 78, - [67] = 81, - [68] = 97, - [69] = 94, - [70] = 5, - [71] = 5, - [72] = 3, - [73] = 81, - [74] = 88, - [75] = 5, - [76] = 3, - [77] = 5, - [78] = 96, - [79] = 94, - [80] = 5, - [81] = 3, - [82] = 5, - [83] = 93, - [84] = 79, - [85] = 79, - [86] = 87, - [87] = 5, - [88] = 88, - [89] = 79, - [90] = 87, - [91] = 79, - [92] = 95, - [93] = 94, - [94] = 5, - [95] = 3, - [96] = 79, - [97] = 79, - [98] = 92, - [99] = 90, - [100] = 88, - [101] = 81, - [102] = 78, - [103] = 5, - [104] = 93, - [105] = 79, - [106] = 87, - [107] = 81, - [108] = 93, - [109] = 79, - [110] = 87, - [111] = 79, - [112] = 79, - [113] = 92, - [114] = 90, - [115] = 88, - [116] = 81, - [117] = 78, - [118] = 79, - [119] = 92, - [120] = 90, - [121] = 88, - [122] = 81, - [123] = 78, - [124] = 81, - [125] = 81, - [126] = 81, - [127] = 78, - [128] = 81, - [129] = 79, - [130] = 81, - [131] = 78, - [132] = 79, + [62] = 102, + [63] = 7, + [64] = 7, + [65] = 86, + [66] = 83, + [67] = 102, + [68] = 7, + [69] = 86, + [70] = 7, + [71] = 96, + [72] = 7, + [73] = 86, + [74] = 80, + [75] = 7, + [76] = 7, + [77] = 100, + [78] = 97, + [79] = 96, + [80] = 82, + [81] = 82, + [82] = 81, + [83] = 7, + [84] = 102, + [85] = 7, + [86] = 86, + [87] = 82, + [88] = 82, + [89] = 93, + [90] = 83, + [91] = 91, + [92] = 7, + [93] = 96, + [94] = 83, + [95] = 91, + [96] = 80, + [97] = 83, + [98] = 83, + [99] = 100, + [100] = 97, + [101] = 96, + [102] = 82, + [103] = 81, + [104] = 83, + [105] = 101, + [106] = 97, + [107] = 96, + [108] = 82, + [109] = 81, + [110] = 80, + [111] = 82, + [112] = 82, + [113] = 100, + [114] = 97, + [115] = 96, + [116] = 82, + [117] = 81, + [118] = 82, + [119] = 93, + [120] = 83, + [121] = 91, + [122] = 82, + [123] = 82, + [124] = 93, + [125] = 83, + [126] = 91, + [127] = 83, + [128] = 83, + [129] = 92, + [130] = 92, + [131] = 82, + [132] = 99, [133] = 81, - [134] = 5, - [135] = 81, - [136] = 78, - [137] = 5, - [138] = 5, - [139] = 5, - [140] = 81, - [141] = 81, - [142] = 78, - [143] = 78, + [134] = 82, + [135] = 99, + [136] = 81, + [137] = 83, + [138] = 99, + [139] = 81, + [140] = 83, + [141] = 92, + [142] = 7, + [143] = 92, [144] = 7, - [145] = 0, + [145] = 99, [146] = 81, - [147] = 78, - [148] = 0, - [149] = 79, - [150] = 87, - [151] = 0, - [152] = 0, - [153] = 78, - [154] = 5, - [155] = 5, - [156] = 3, + [147] = 7, + [148] = 7, + [149] = 83, + [150] = 0, + [151] = 92, + [152] = 89, + [153] = 85, + [154] = 82, + [155] = 82, + [156] = 81, [157] = 0, - [158] = 0, - [159] = 92, - [160] = 90, - [161] = 78, - [162] = 3, - [163] = 3, - [164] = 3, - [165] = 113, - [166] = 85, - [167] = 88, - [168] = 3, - [169] = 113, - [170] = 0, - [171] = 103, - [172] = 103, - [173] = 103, - [174] = 103, - [175] = 113, - [176] = 103, - [177] = 7, - [178] = 78, - [179] = 103, - [180] = 3, - [181] = 114, - [182] = 94, - [183] = 5, - [184] = 3, - [185] = 3, - [186] = 3, - [187] = 93, - [188] = 79, - [189] = 87, - [190] = 3, - [191] = 3, - [192] = 92, - [193] = 90, - [194] = 88, - [195] = 81, - [196] = 78, - [197] = 3, - [198] = 3, - [199] = 81, - [200] = 78, - [201] = 3, - [202] = 103, - [203] = 113, - [204] = 7, - [205] = 78, - [206] = 0, - [207] = 85, - [208] = 88, - [209] = 3, - [210] = 113, - [211] = 85, - [212] = 88, - [213] = 3, - [214] = 113, - [215] = 0, - [216] = 115, - [217] = 115, - [218] = 115, - [219] = 115, - [220] = 113, - [221] = 115, - [222] = 7, - [223] = 78, + [158] = 103, + [159] = 81, + [160] = 9, + [161] = 0, + [162] = 99, + [163] = 81, + [164] = 0, + [165] = 81, + [166] = 7, + [167] = 89, + [168] = 85, + [169] = 7, + [170] = 7, + [171] = 86, + [172] = 0, + [173] = 0, + [174] = 100, + [175] = 97, + [176] = 81, + [177] = 5, + [178] = 89, + [179] = 85, + [180] = 5, + [181] = 5, + [182] = 5, + [183] = 102, + [184] = 7, + [185] = 86, + [186] = 5, + [187] = 5, + [188] = 115, + [189] = 89, + [190] = 96, + [191] = 5, + [192] = 115, + [193] = 79, + [194] = 106, + [195] = 106, + [196] = 0, + [197] = 106, + [198] = 106, + [199] = 115, + [200] = 106, + [201] = 9, + [202] = 81, + [203] = 106, + [204] = 80, + [205] = 5, + [206] = 5, + [207] = 100, + [208] = 97, + [209] = 96, + [210] = 82, + [211] = 81, + [212] = 5, + [213] = 5, + [214] = 99, + [215] = 81, + [216] = 5, + [217] = 93, + [218] = 83, + [219] = 91, + [220] = 5, + [221] = 5, + [222] = 92, + [223] = 106, [224] = 115, - [225] = 115, - [226] = 113, + [225] = 9, + [226] = 81, [227] = 0, - [228] = 113, - [229] = 113, - [230] = 113, - [231] = 113, - [232] = 7, - [233] = 78, - [234] = 113, - [235] = 116, - [236] = 113, - [237] = 116, - [238] = 116, + [228] = 89, + [229] = 85, + [230] = 0, + [231] = 89, + [232] = 96, + [233] = 5, + [234] = 115, + [235] = 89, + [236] = 96, + [237] = 5, + [238] = 115, + [239] = 79, + [240] = 116, + [241] = 116, + [242] = 0, + [243] = 116, + [244] = 116, + [245] = 115, + [246] = 116, + [247] = 9, + [248] = 81, + [249] = 116, + [250] = 116, + [251] = 115, + [252] = 79, + [253] = 115, + [254] = 115, + [255] = 0, + [256] = 115, + [257] = 115, + [258] = 9, + [259] = 81, + [260] = 115, + [261] = 117, + [262] = 115, + [263] = 117, + [264] = 117, }; PARSE_TABLE = { [0] = { [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(207), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(227), - [ts_sym_expression] = SHIFT(227), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(230), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_program] = SHIFT(235), - [ts_sym_statement] = SHIFT(236), - [ts_sym_statement_block] = SHIFT(230), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_repeat_helper1] = SHIFT(238), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(232), + [ts_sym__if] = SHIFT(231), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(252), + [ts_sym_expression] = SHIFT(255), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(256), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_program] = SHIFT(261), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(262), + [ts_sym_statement_block] = SHIFT(256), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_repeat_helper1] = SHIFT(264), + [ts_aux_sym_token3] = SHIFT(258), + [ts_aux_sym_token9] = SHIFT(40), [ts_builtin_sym_end] = REDUCE(ts_aux_sym_repeat_helper1, 0), }, [1] = { - [ts_sym_identifier] = SHIFT(2), + [ts_sym_formal_parameters] = SHIFT(2), + [ts_sym_identifier] = SHIFT(228), + [ts_aux_sym_token1] = SHIFT(50), }, [2] = { - [ts_sym_formal_parameters] = SHIFT(3), - [ts_aux_sym_token3] = SHIFT(50), + [ts_sym_statement_block] = SHIFT(3), + [ts_aux_sym_token3] = SHIFT(4), }, [3] = { - [ts_sym_statement_block] = SHIFT(4), - [ts_aux_sym_token5] = SHIFT(5), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_expression, 3), + [ts_aux_sym_token11] = REDUCE(ts_sym_function_expression, 3), + [ts_aux_sym_token12] = REDUCE(ts_sym_function_expression, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_expression, 3), }, [4] = { - [ts_aux_sym_token1] = REDUCE(ts_sym_function_expression, 4), - [ts_aux_sym_token2] = REDUCE(ts_sym_function_expression, 4), + [ts_sym__function] = SHIFT(1), + [ts_sym__if] = SHIFT(5), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(21), + [ts_sym_expression] = SHIFT(24), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(28), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(29), + [ts_sym_statement_block] = SHIFT(28), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_repeat_helper2] = SHIFT(226), + [ts_aux_sym_token3] = SHIFT(31), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper2, 0), + [ts_aux_sym_token9] = SHIFT(40), }, [5] = { - [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(6), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(26), - [ts_sym_expression] = SHIFT(26), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(29), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(30), - [ts_sym_statement_block] = SHIFT(29), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_repeat_helper2] = SHIFT(205), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(40), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 0), + [ts_aux_sym_token1] = SHIFT(6), }, [6] = { - [ts_aux_sym_token3] = SHIFT(7), + [ts_sym__function] = SHIFT(7), + [ts_sym_array] = SHIFT(181), + [ts_sym_expression] = SHIFT(182), + [ts_sym_false] = SHIFT(181), + [ts_sym_function_call] = SHIFT(206), + [ts_sym_function_expression] = SHIFT(206), + [ts_sym_identifier] = SHIFT(206), + [ts_sym_literal] = SHIFT(206), + [ts_sym_null] = SHIFT(181), + [ts_sym_number] = SHIFT(181), + [ts_sym_object] = SHIFT(181), + [ts_sym_property_access] = SHIFT(206), + [ts_sym_string] = SHIFT(181), + [ts_sym_true] = SHIFT(181), + [ts_aux_sym_token3] = SHIFT(207), + [ts_aux_sym_token9] = SHIFT(217), }, [7] = { - [ts_sym__function] = SHIFT(8), - [ts_sym_array] = SHIFT(163), - [ts_sym_expression] = SHIFT(164), - [ts_sym_false] = SHIFT(163), - [ts_sym_function_call] = SHIFT(180), - [ts_sym_function_expression] = SHIFT(180), - [ts_sym_identifier] = SHIFT(181), - [ts_sym_literal] = SHIFT(180), - [ts_sym_null] = SHIFT(163), - [ts_sym_number] = SHIFT(163), - [ts_sym_object] = SHIFT(163), - [ts_sym_string] = SHIFT(163), - [ts_sym_true] = SHIFT(163), - [ts_aux_sym_token10] = SHIFT(187), - [ts_aux_sym_token5] = SHIFT(192), + [ts_sym_formal_parameters] = SHIFT(8), + [ts_sym_identifier] = SHIFT(178), + [ts_aux_sym_token1] = SHIFT(50), }, [8] = { - [ts_sym_identifier] = SHIFT(9), + [ts_sym_statement_block] = SHIFT(9), + [ts_aux_sym_token3] = SHIFT(10), }, [9] = { - [ts_sym_formal_parameters] = SHIFT(10), - [ts_aux_sym_token3] = SHIFT(50), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_expression, 3), + [ts_aux_sym_token2] = REDUCE(ts_sym_function_expression, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_expression, 3), }, [10] = { - [ts_sym_statement_block] = SHIFT(11), - [ts_aux_sym_token5] = SHIFT(12), + [ts_sym__function] = SHIFT(1), + [ts_sym__if] = SHIFT(5), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(21), + [ts_sym_expression] = SHIFT(24), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(28), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(29), + [ts_sym_statement_block] = SHIFT(28), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_repeat_helper2] = SHIFT(176), + [ts_aux_sym_token3] = SHIFT(31), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper2, 0), + [ts_aux_sym_token9] = SHIFT(40), }, [11] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_function_expression, 4), + [ts_sym_identifier] = SHIFT(12), }, [12] = { - [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(6), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(26), - [ts_sym_expression] = SHIFT(26), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(29), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(30), - [ts_sym_statement_block] = SHIFT(29), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_repeat_helper2] = SHIFT(161), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(40), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 0), + [ts_aux_sym_token5] = SHIFT(13), }, [13] = { - [ts_sym_identifier] = SHIFT(14), + [ts_sym__function] = SHIFT(1), + [ts_sym_array] = SHIFT(14), + [ts_sym_expression] = SHIFT(15), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_token3] = SHIFT(174), + [ts_aux_sym_token9] = SHIFT(40), }, [14] = { - [ts_aux_sym_token7] = SHIFT(15), + [ts_aux_sym_token1] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token11] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token12] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token7] = REDUCE(ts_sym_literal, 1), }, [15] = { - [ts_sym__function] = SHIFT(1), - [ts_sym_array] = SHIFT(16), - [ts_sym_expression] = SHIFT(17), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(159), + [ts_aux_sym_token1] = SHIFT(16), + [ts_aux_sym_token11] = REDUCE(ts_sym_assignment, 4), + [ts_aux_sym_token12] = REDUCE(ts_sym_assignment, 4), + [ts_aux_sym_token7] = SHIFT(25), }, [16] = { - [ts_aux_sym_token1] = REDUCE(ts_sym_literal, 1), - [ts_aux_sym_token2] = REDUCE(ts_sym_literal, 1), + [ts_sym__function] = SHIFT(17), + [ts_sym_array] = SHIFT(63), + [ts_sym_expression] = SHIFT(170), + [ts_sym_false] = SHIFT(63), + [ts_sym_function_call] = SHIFT(76), + [ts_sym_function_expression] = SHIFT(76), + [ts_sym_identifier] = SHIFT(76), + [ts_sym_literal] = SHIFT(76), + [ts_sym_null] = SHIFT(63), + [ts_sym_number] = SHIFT(63), + [ts_sym_object] = SHIFT(63), + [ts_sym_property_access] = SHIFT(76), + [ts_sym_string] = SHIFT(63), + [ts_sym_true] = SHIFT(63), + [ts_aux_sym_token2] = SHIFT(173), + [ts_aux_sym_token3] = SHIFT(77), + [ts_aux_sym_token9] = SHIFT(89), }, [17] = { - [ts_aux_sym_token1] = REDUCE(ts_sym_assignment, 4), - [ts_aux_sym_token2] = REDUCE(ts_sym_assignment, 4), + [ts_sym_formal_parameters] = SHIFT(18), + [ts_sym_identifier] = SHIFT(167), + [ts_aux_sym_token1] = SHIFT(50), }, [18] = { - [ts_aux_sym_token1] = REDUCE(ts_sym_expression, 1), - [ts_aux_sym_token2] = REDUCE(ts_sym_expression, 1), - }, - - [19] = { - [ts_aux_sym_token1] = REDUCE(ts_sym_expression, 1), - [ts_aux_sym_token2] = REDUCE(ts_sym_expression, 1), + [ts_sym_statement_block] = SHIFT(19), [ts_aux_sym_token3] = SHIFT(20), }, + [19] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_function_expression, 3), + [ts_aux_sym_token2] = REDUCE(ts_sym_function_expression, 3), + [ts_aux_sym_token6] = REDUCE(ts_sym_function_expression, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_expression, 3), + }, + [20] = { - [ts_sym__function] = SHIFT(21), - [ts_sym_array] = SHIFT(70), - [ts_sym_expression] = SHIFT(155), - [ts_sym_false] = SHIFT(70), - [ts_sym_function_call] = SHIFT(77), - [ts_sym_function_expression] = SHIFT(77), - [ts_sym_identifier] = SHIFT(78), - [ts_sym_literal] = SHIFT(77), - [ts_sym_null] = SHIFT(70), - [ts_sym_number] = SHIFT(70), - [ts_sym_object] = SHIFT(70), - [ts_sym_string] = SHIFT(70), - [ts_sym_true] = SHIFT(70), - [ts_aux_sym_token10] = SHIFT(83), - [ts_aux_sym_token4] = SHIFT(158), - [ts_aux_sym_token5] = SHIFT(98), + [ts_sym__function] = SHIFT(1), + [ts_sym__if] = SHIFT(5), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(21), + [ts_sym_expression] = SHIFT(24), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(28), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(29), + [ts_sym_statement_block] = SHIFT(28), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_repeat_helper2] = SHIFT(165), + [ts_aux_sym_token3] = SHIFT(31), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper2, 0), + [ts_aux_sym_token9] = SHIFT(40), }, [21] = { - [ts_sym_identifier] = SHIFT(22), + [ts_sym__terminator] = SHIFT(22), + [ts_aux_sym_token11] = SHIFT(23), + [ts_aux_sym_token12] = SHIFT(23), }, [22] = { - [ts_sym_formal_parameters] = SHIFT(23), - [ts_aux_sym_token3] = SHIFT(50), - }, - - [23] = { - [ts_sym_statement_block] = SHIFT(24), - [ts_aux_sym_token5] = SHIFT(25), - }, - - [24] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_function_expression, 4), - [ts_aux_sym_token8] = REDUCE(ts_sym_function_expression, 4), - }, - - [25] = { - [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(6), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(26), - [ts_sym_expression] = SHIFT(26), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(29), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(30), - [ts_sym_statement_block] = SHIFT(29), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_repeat_helper2] = SHIFT(153), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(40), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 0), - }, - - [26] = { - [ts_sym__terminator] = SHIFT(27), - [ts_aux_sym_token1] = SHIFT(28), - [ts_aux_sym_token2] = SHIFT(28), - }, - - [27] = { [ts_sym__function] = REDUCE(ts_sym_statement, 2), [ts_sym__if] = REDUCE(ts_sym_statement, 2), [ts_sym__var] = REDUCE(ts_sym_statement, 2), @@ -1634,12 +1705,12 @@ PARSE_TABLE = { [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), + [ts_aux_sym_token3] = REDUCE(ts_sym_statement, 2), + [ts_aux_sym_token4] = REDUCE(ts_sym_statement, 2), + [ts_aux_sym_token9] = REDUCE(ts_sym_statement, 2), }, - [28] = { + [23] = { [ts_sym__function] = REDUCE(ts_sym__terminator, 1), [ts_sym__if] = REDUCE(ts_sym__terminator, 1), [ts_sym__var] = REDUCE(ts_sym__terminator, 1), @@ -1649,12 +1720,38 @@ PARSE_TABLE = { [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), + [ts_aux_sym_token3] = REDUCE(ts_sym__terminator, 1), + [ts_aux_sym_token4] = REDUCE(ts_sym__terminator, 1), + [ts_aux_sym_token9] = REDUCE(ts_sym__terminator, 1), }, - [29] = { + [24] = { + [ts_sym__terminator] = SHIFT(22), + [ts_aux_sym_token1] = SHIFT(16), + [ts_aux_sym_token11] = SHIFT(23), + [ts_aux_sym_token12] = SHIFT(23), + [ts_aux_sym_token7] = SHIFT(25), + }, + + [25] = { + [ts_sym_identifier] = SHIFT(26), + }, + + [26] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_property_access, 3), + [ts_aux_sym_token11] = REDUCE(ts_sym_property_access, 3), + [ts_aux_sym_token12] = REDUCE(ts_sym_property_access, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_property_access, 3), + }, + + [27] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token11] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token12] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token7] = REDUCE(ts_sym_expression, 1), + }, + + [28] = { [ts_sym__function] = REDUCE(ts_sym_statement, 1), [ts_sym__if] = REDUCE(ts_sym_statement, 1), [ts_sym__var] = REDUCE(ts_sym_statement, 1), @@ -1664,237 +1761,264 @@ PARSE_TABLE = { [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), + [ts_aux_sym_token3] = REDUCE(ts_sym_statement, 1), + [ts_aux_sym_token4] = REDUCE(ts_sym_statement, 1), + [ts_aux_sym_token9] = REDUCE(ts_sym_statement, 1), + }, + + [29] = { + [ts_sym__function] = SHIFT(1), + [ts_sym__if] = SHIFT(5), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(21), + [ts_sym_expression] = SHIFT(24), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(28), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(29), + [ts_sym_statement_block] = SHIFT(28), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_repeat_helper2] = SHIFT(30), + [ts_aux_sym_token3] = SHIFT(31), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper2, 0), + [ts_aux_sym_token9] = SHIFT(40), }, [30] = { - [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(6), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(26), - [ts_sym_expression] = SHIFT(26), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(29), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(30), - [ts_sym_statement_block] = SHIFT(29), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_repeat_helper2] = SHIFT(31), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(40), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 0), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper2, 2), }, [31] = { - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 2), + [ts_sym__function] = SHIFT(1), + [ts_sym__if] = SHIFT(5), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(21), + [ts_sym_expression] = SHIFT(24), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(32), + [ts_sym_if_statement] = SHIFT(28), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(29), + [ts_sym_statement_block] = SHIFT(28), + [ts_sym_string] = SHIFT(158), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_repeat_helper2] = SHIFT(159), + [ts_aux_sym_token3] = SHIFT(31), + [ts_aux_sym_token4] = SHIFT(161), + [ts_aux_sym_token9] = SHIFT(40), + [ts_builtin_sym_error] = SHIFT(162), }, [32] = { - [ts_sym__function] = SHIFT(33), - [ts_sym_array] = SHIFT(84), - [ts_sym_expression] = SHIFT(149), - [ts_sym_false] = SHIFT(84), - [ts_sym_function_call] = SHIFT(91), - [ts_sym_function_expression] = SHIFT(91), - [ts_sym_identifier] = SHIFT(92), - [ts_sym_literal] = SHIFT(91), - [ts_sym_null] = SHIFT(84), - [ts_sym_number] = SHIFT(84), - [ts_sym_object] = SHIFT(84), - [ts_sym_string] = SHIFT(84), - [ts_sym_true] = SHIFT(84), - [ts_aux_sym_token10] = SHIFT(108), - [ts_aux_sym_token11] = SHIFT(152), - [ts_aux_sym_token5] = SHIFT(113), - [ts_builtin_sym_error] = SHIFT(149), + [ts_aux_sym_token1] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token11] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token12] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token7] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token8] = SHIFT(33), }, [33] = { - [ts_sym_identifier] = SHIFT(34), + [ts_sym__function] = SHIFT(34), + [ts_sym_array] = SHIFT(80), + [ts_sym_expression] = SHIFT(155), + [ts_sym_false] = SHIFT(80), + [ts_sym_function_call] = SHIFT(112), + [ts_sym_function_expression] = SHIFT(112), + [ts_sym_identifier] = SHIFT(112), + [ts_sym_literal] = SHIFT(112), + [ts_sym_null] = SHIFT(80), + [ts_sym_number] = SHIFT(80), + [ts_sym_object] = SHIFT(80), + [ts_sym_property_access] = SHIFT(112), + [ts_sym_string] = SHIFT(80), + [ts_sym_true] = SHIFT(80), + [ts_aux_sym_token3] = SHIFT(113), + [ts_aux_sym_token9] = SHIFT(119), }, [34] = { [ts_sym_formal_parameters] = SHIFT(35), - [ts_aux_sym_token3] = SHIFT(50), + [ts_sym_identifier] = SHIFT(152), + [ts_aux_sym_token1] = SHIFT(50), }, [35] = { [ts_sym_statement_block] = SHIFT(36), - [ts_aux_sym_token5] = SHIFT(37), + [ts_aux_sym_token3] = SHIFT(37), }, [36] = { - [ts_aux_sym_token11] = REDUCE(ts_sym_function_expression, 4), - [ts_aux_sym_token8] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_expression, 3), + [ts_aux_sym_token4] = REDUCE(ts_sym_function_expression, 3), + [ts_aux_sym_token6] = REDUCE(ts_sym_function_expression, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_expression, 3), }, [37] = { [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(6), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(26), - [ts_sym_expression] = SHIFT(26), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(29), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(30), - [ts_sym_statement_block] = SHIFT(29), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), + [ts_sym__if] = SHIFT(5), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(21), + [ts_sym_expression] = SHIFT(24), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(28), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(29), + [ts_sym_statement_block] = SHIFT(28), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), [ts_aux_sym_repeat_helper2] = SHIFT(38), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(40), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 0), + [ts_aux_sym_token3] = SHIFT(31), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper2, 0), + [ts_aux_sym_token9] = SHIFT(40), }, [38] = { - [ts_aux_sym_token6] = SHIFT(39), + [ts_aux_sym_token4] = SHIFT(39), }, [39] = { - [ts_aux_sym_token11] = REDUCE(ts_sym_statement_block, 3), - [ts_aux_sym_token8] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token1] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token4] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token6] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_statement_block, 3), }, [40] = { - [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(6), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(26), - [ts_sym_expression] = SHIFT(26), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(29), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(30), - [ts_sym_statement_block] = SHIFT(29), - [ts_sym_string] = SHIFT(41), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_repeat_helper2] = SHIFT(143), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(40), - [ts_aux_sym_token6] = SHIFT(145), - [ts_builtin_sym_error] = SHIFT(146), - }, - - [41] = { - [ts_aux_sym_token1] = REDUCE(ts_sym_literal, 1), - [ts_aux_sym_token2] = REDUCE(ts_sym_literal, 1), - [ts_aux_sym_token9] = SHIFT(42), - }, - - [42] = { - [ts_sym__function] = SHIFT(43), + [ts_sym__function] = SHIFT(41), [ts_sym_array] = SHIFT(58), [ts_sym_expression] = SHIFT(59), [ts_sym_false] = SHIFT(58), - [ts_sym_function_call] = SHIFT(67), - [ts_sym_function_expression] = SHIFT(67), - [ts_sym_identifier] = SHIFT(68), - [ts_sym_literal] = SHIFT(67), + [ts_sym_function_call] = SHIFT(98), + [ts_sym_function_expression] = SHIFT(98), + [ts_sym_identifier] = SHIFT(98), + [ts_sym_literal] = SHIFT(98), [ts_sym_null] = SHIFT(58), [ts_sym_number] = SHIFT(58), [ts_sym_object] = SHIFT(58), + [ts_sym_property_access] = SHIFT(98), [ts_sym_string] = SHIFT(58), [ts_sym_true] = SHIFT(58), - [ts_aux_sym_token10] = SHIFT(104), - [ts_aux_sym_token5] = SHIFT(119), + [ts_aux_sym_token10] = SHIFT(150), + [ts_aux_sym_token3] = SHIFT(99), + [ts_aux_sym_token9] = SHIFT(124), + [ts_builtin_sym_error] = SHIFT(151), + }, + + [41] = { + [ts_sym_formal_parameters] = SHIFT(42), + [ts_sym_identifier] = SHIFT(47), + [ts_aux_sym_token1] = SHIFT(50), + }, + + [42] = { + [ts_sym_statement_block] = SHIFT(43), + [ts_aux_sym_token3] = SHIFT(44), }, [43] = { - [ts_sym_identifier] = SHIFT(44), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_expression, 3), + [ts_aux_sym_token10] = REDUCE(ts_sym_function_expression, 3), + [ts_aux_sym_token6] = REDUCE(ts_sym_function_expression, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_expression, 3), }, [44] = { - [ts_sym_formal_parameters] = SHIFT(45), - [ts_aux_sym_token3] = SHIFT(50), + [ts_sym__function] = SHIFT(1), + [ts_sym__if] = SHIFT(5), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(21), + [ts_sym_expression] = SHIFT(24), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(28), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(29), + [ts_sym_statement_block] = SHIFT(28), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_repeat_helper2] = SHIFT(45), + [ts_aux_sym_token3] = SHIFT(31), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper2, 0), + [ts_aux_sym_token9] = SHIFT(40), }, [45] = { - [ts_sym_statement_block] = SHIFT(46), - [ts_aux_sym_token5] = SHIFT(47), + [ts_aux_sym_token4] = SHIFT(46), }, [46] = { - [ts_aux_sym_token6] = REDUCE(ts_sym_function_expression, 4), - [ts_aux_sym_token8] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token1] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token10] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token6] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_statement_block, 3), }, [47] = { - [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(6), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(26), - [ts_sym_expression] = SHIFT(26), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(29), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(30), - [ts_sym_statement_block] = SHIFT(29), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_repeat_helper2] = SHIFT(48), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(40), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper2, 0), + [ts_sym_formal_parameters] = SHIFT(48), + [ts_aux_sym_token1] = SHIFT(50), }, [48] = { - [ts_aux_sym_token6] = SHIFT(49), + [ts_sym_statement_block] = SHIFT(49), + [ts_aux_sym_token3] = SHIFT(44), }, [49] = { - [ts_aux_sym_token6] = REDUCE(ts_sym_statement_block, 3), - [ts_aux_sym_token8] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token10] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token6] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_expression, 4), }, [50] = { [ts_sym_identifier] = SHIFT(51), - [ts_aux_sym_token4] = SHIFT(57), + [ts_aux_sym_token2] = SHIFT(57), }, [51] = { [ts_aux_sym_repeat_helper4] = SHIFT(52), - [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper4, 0), - [ts_aux_sym_token8] = SHIFT(54), + [ts_aux_sym_token2] = REDUCE(ts_aux_sym_repeat_helper4, 0), + [ts_aux_sym_token6] = SHIFT(54), }, [52] = { - [ts_aux_sym_token4] = SHIFT(53), + [ts_aux_sym_token2] = SHIFT(53), }, [53] = { - [ts_aux_sym_token5] = REDUCE(ts_sym_formal_parameters, 4), + [ts_aux_sym_token3] = REDUCE(ts_sym_formal_parameters, 4), }, [54] = { @@ -1903,683 +2027,784 @@ PARSE_TABLE = { [55] = { [ts_aux_sym_repeat_helper4] = SHIFT(56), - [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper4, 0), - [ts_aux_sym_token8] = SHIFT(54), + [ts_aux_sym_token2] = REDUCE(ts_aux_sym_repeat_helper4, 0), + [ts_aux_sym_token6] = SHIFT(54), }, [56] = { - [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper4, 3), + [ts_aux_sym_token2] = REDUCE(ts_aux_sym_repeat_helper4, 3), }, [57] = { - [ts_aux_sym_token5] = REDUCE(ts_sym_formal_parameters, 2), + [ts_aux_sym_token3] = REDUCE(ts_sym_formal_parameters, 2), }, [58] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token10] = REDUCE(ts_sym_literal, 1), [ts_aux_sym_token6] = REDUCE(ts_sym_literal, 1), - [ts_aux_sym_token8] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token7] = REDUCE(ts_sym_literal, 1), }, [59] = { - [ts_aux_sym_repeat_helper5] = SHIFT(60), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper5, 0), - [ts_aux_sym_token8] = SHIFT(62), + [ts_aux_sym_repeat_helper6] = SHIFT(60), + [ts_aux_sym_token1] = SHIFT(62), + [ts_aux_sym_token10] = REDUCE(ts_aux_sym_repeat_helper6, 0), + [ts_aux_sym_token6] = SHIFT(93), + [ts_aux_sym_token7] = SHIFT(96), }, [60] = { - [ts_aux_sym_token6] = SHIFT(61), + [ts_aux_sym_token10] = SHIFT(61), }, [61] = { - [ts_aux_sym_token1] = REDUCE(ts_sym_object, 6), - [ts_aux_sym_token2] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token1] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token11] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token12] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_array, 4), }, [62] = { + [ts_sym__function] = SHIFT(17), + [ts_sym_array] = SHIFT(63), + [ts_sym_expression] = SHIFT(64), + [ts_sym_false] = SHIFT(63), + [ts_sym_function_call] = SHIFT(76), + [ts_sym_function_expression] = SHIFT(76), + [ts_sym_identifier] = SHIFT(76), + [ts_sym_literal] = SHIFT(76), + [ts_sym_null] = SHIFT(63), + [ts_sym_number] = SHIFT(63), + [ts_sym_object] = SHIFT(63), + [ts_sym_property_access] = SHIFT(76), [ts_sym_string] = SHIFT(63), - [ts_builtin_sym_error] = SHIFT(141), + [ts_sym_true] = SHIFT(63), + [ts_aux_sym_token2] = SHIFT(149), + [ts_aux_sym_token3] = SHIFT(77), + [ts_aux_sym_token9] = SHIFT(89), }, [63] = { - [ts_aux_sym_token9] = SHIFT(64), + [ts_aux_sym_token1] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token2] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token6] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token7] = REDUCE(ts_sym_literal, 1), }, [64] = { - [ts_sym__function] = SHIFT(43), - [ts_sym_array] = SHIFT(58), - [ts_sym_expression] = SHIFT(65), - [ts_sym_false] = SHIFT(58), - [ts_sym_function_call] = SHIFT(67), - [ts_sym_function_expression] = SHIFT(67), - [ts_sym_identifier] = SHIFT(68), - [ts_sym_literal] = SHIFT(67), - [ts_sym_null] = SHIFT(58), - [ts_sym_number] = SHIFT(58), - [ts_sym_object] = SHIFT(58), - [ts_sym_string] = SHIFT(58), - [ts_sym_true] = SHIFT(58), - [ts_aux_sym_token10] = SHIFT(104), - [ts_aux_sym_token5] = SHIFT(119), + [ts_aux_sym_repeat_helper3] = SHIFT(65), + [ts_aux_sym_token1] = SHIFT(67), + [ts_aux_sym_token2] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token6] = SHIFT(71), + [ts_aux_sym_token7] = SHIFT(74), }, [65] = { - [ts_aux_sym_repeat_helper5] = SHIFT(66), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper5, 0), - [ts_aux_sym_token8] = SHIFT(62), + [ts_aux_sym_token2] = SHIFT(66), }, [66] = { - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper5, 5), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token10] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token6] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_call, 5), }, [67] = { - [ts_aux_sym_token6] = REDUCE(ts_sym_expression, 1), - [ts_aux_sym_token8] = REDUCE(ts_sym_expression, 1), + [ts_sym__function] = SHIFT(17), + [ts_sym_array] = SHIFT(63), + [ts_sym_expression] = SHIFT(68), + [ts_sym_false] = SHIFT(63), + [ts_sym_function_call] = SHIFT(76), + [ts_sym_function_expression] = SHIFT(76), + [ts_sym_identifier] = SHIFT(76), + [ts_sym_literal] = SHIFT(76), + [ts_sym_null] = SHIFT(63), + [ts_sym_number] = SHIFT(63), + [ts_sym_object] = SHIFT(63), + [ts_sym_property_access] = SHIFT(76), + [ts_sym_string] = SHIFT(63), + [ts_sym_true] = SHIFT(63), + [ts_aux_sym_token2] = SHIFT(148), + [ts_aux_sym_token3] = SHIFT(77), + [ts_aux_sym_token9] = SHIFT(89), }, [68] = { - [ts_aux_sym_token3] = SHIFT(69), - [ts_aux_sym_token6] = REDUCE(ts_sym_expression, 1), - [ts_aux_sym_token8] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_repeat_helper3] = SHIFT(69), + [ts_aux_sym_token1] = SHIFT(67), + [ts_aux_sym_token2] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token6] = SHIFT(71), + [ts_aux_sym_token7] = SHIFT(74), }, [69] = { - [ts_sym__function] = SHIFT(21), - [ts_sym_array] = SHIFT(70), - [ts_sym_expression] = SHIFT(71), - [ts_sym_false] = SHIFT(70), - [ts_sym_function_call] = SHIFT(77), - [ts_sym_function_expression] = SHIFT(77), - [ts_sym_identifier] = SHIFT(78), - [ts_sym_literal] = SHIFT(77), - [ts_sym_null] = SHIFT(70), - [ts_sym_number] = SHIFT(70), - [ts_sym_object] = SHIFT(70), - [ts_sym_string] = SHIFT(70), - [ts_sym_true] = SHIFT(70), - [ts_aux_sym_token10] = SHIFT(83), - [ts_aux_sym_token4] = SHIFT(140), - [ts_aux_sym_token5] = SHIFT(98), + [ts_aux_sym_token2] = SHIFT(70), }, [70] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_literal, 1), - [ts_aux_sym_token8] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token2] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token6] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_call, 5), }, [71] = { - [ts_aux_sym_repeat_helper3] = SHIFT(72), - [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper3, 0), - [ts_aux_sym_token8] = SHIFT(74), + [ts_sym__function] = SHIFT(17), + [ts_sym_array] = SHIFT(63), + [ts_sym_expression] = SHIFT(72), + [ts_sym_false] = SHIFT(63), + [ts_sym_function_call] = SHIFT(76), + [ts_sym_function_expression] = SHIFT(76), + [ts_sym_identifier] = SHIFT(76), + [ts_sym_literal] = SHIFT(76), + [ts_sym_null] = SHIFT(63), + [ts_sym_number] = SHIFT(63), + [ts_sym_object] = SHIFT(63), + [ts_sym_property_access] = SHIFT(76), + [ts_sym_string] = SHIFT(63), + [ts_sym_true] = SHIFT(63), + [ts_aux_sym_token3] = SHIFT(77), + [ts_aux_sym_token9] = SHIFT(89), }, [72] = { - [ts_aux_sym_token4] = SHIFT(73), + [ts_aux_sym_repeat_helper3] = SHIFT(73), + [ts_aux_sym_token1] = SHIFT(67), + [ts_aux_sym_token2] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token6] = SHIFT(71), + [ts_aux_sym_token7] = SHIFT(74), }, [73] = { - [ts_aux_sym_token6] = REDUCE(ts_sym_function_call, 5), - [ts_aux_sym_token8] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token2] = REDUCE(ts_aux_sym_repeat_helper3, 3), }, [74] = { - [ts_sym__function] = SHIFT(21), - [ts_sym_array] = SHIFT(70), - [ts_sym_expression] = SHIFT(75), - [ts_sym_false] = SHIFT(70), - [ts_sym_function_call] = SHIFT(77), - [ts_sym_function_expression] = SHIFT(77), - [ts_sym_identifier] = SHIFT(78), - [ts_sym_literal] = SHIFT(77), - [ts_sym_null] = SHIFT(70), - [ts_sym_number] = SHIFT(70), - [ts_sym_object] = SHIFT(70), - [ts_sym_string] = SHIFT(70), - [ts_sym_true] = SHIFT(70), - [ts_aux_sym_token10] = SHIFT(83), - [ts_aux_sym_token5] = SHIFT(98), + [ts_sym_identifier] = SHIFT(75), }, [75] = { - [ts_aux_sym_repeat_helper3] = SHIFT(76), - [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper3, 0), - [ts_aux_sym_token8] = SHIFT(74), + [ts_aux_sym_token1] = REDUCE(ts_sym_property_access, 3), + [ts_aux_sym_token2] = REDUCE(ts_sym_property_access, 3), + [ts_aux_sym_token6] = REDUCE(ts_sym_property_access, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_property_access, 3), }, [76] = { - [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper3, 3), + [ts_aux_sym_token1] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token2] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token6] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token7] = REDUCE(ts_sym_expression, 1), }, [77] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_expression, 1), - [ts_aux_sym_token8] = REDUCE(ts_sym_expression, 1), + [ts_sym_identifier] = SHIFT(78), + [ts_sym_string] = SHIFT(78), + [ts_aux_sym_token4] = SHIFT(144), + [ts_builtin_sym_error] = SHIFT(145), }, [78] = { - [ts_aux_sym_token3] = SHIFT(79), - [ts_aux_sym_token4] = REDUCE(ts_sym_expression, 1), - [ts_aux_sym_token8] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token8] = SHIFT(79), }, [79] = { - [ts_sym__function] = SHIFT(21), - [ts_sym_array] = SHIFT(70), - [ts_sym_expression] = SHIFT(80), - [ts_sym_false] = SHIFT(70), - [ts_sym_function_call] = SHIFT(77), - [ts_sym_function_expression] = SHIFT(77), - [ts_sym_identifier] = SHIFT(78), - [ts_sym_literal] = SHIFT(77), - [ts_sym_null] = SHIFT(70), - [ts_sym_number] = SHIFT(70), - [ts_sym_object] = SHIFT(70), - [ts_sym_string] = SHIFT(70), - [ts_sym_true] = SHIFT(70), - [ts_aux_sym_token10] = SHIFT(83), - [ts_aux_sym_token4] = SHIFT(139), - [ts_aux_sym_token5] = SHIFT(98), + [ts_sym__function] = SHIFT(34), + [ts_sym_array] = SHIFT(80), + [ts_sym_expression] = SHIFT(81), + [ts_sym_false] = SHIFT(80), + [ts_sym_function_call] = SHIFT(112), + [ts_sym_function_expression] = SHIFT(112), + [ts_sym_identifier] = SHIFT(112), + [ts_sym_literal] = SHIFT(112), + [ts_sym_null] = SHIFT(80), + [ts_sym_number] = SHIFT(80), + [ts_sym_object] = SHIFT(80), + [ts_sym_property_access] = SHIFT(112), + [ts_sym_string] = SHIFT(80), + [ts_sym_true] = SHIFT(80), + [ts_aux_sym_token3] = SHIFT(113), + [ts_aux_sym_token9] = SHIFT(119), }, [80] = { - [ts_aux_sym_repeat_helper3] = SHIFT(81), - [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper3, 0), - [ts_aux_sym_token8] = SHIFT(74), + [ts_aux_sym_token1] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token4] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token6] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token7] = REDUCE(ts_sym_literal, 1), }, [81] = { - [ts_aux_sym_token4] = SHIFT(82), + [ts_aux_sym_repeat_helper5] = SHIFT(82), + [ts_aux_sym_token1] = SHIFT(84), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper5, 0), + [ts_aux_sym_token6] = SHIFT(105), + [ts_aux_sym_token7] = SHIFT(110), }, [82] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_function_call, 5), - [ts_aux_sym_token8] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token4] = SHIFT(83), }, [83] = { - [ts_sym__function] = SHIFT(33), - [ts_sym_array] = SHIFT(84), - [ts_sym_expression] = SHIFT(85), - [ts_sym_false] = SHIFT(84), - [ts_sym_function_call] = SHIFT(91), - [ts_sym_function_expression] = SHIFT(91), - [ts_sym_identifier] = SHIFT(92), - [ts_sym_literal] = SHIFT(91), - [ts_sym_null] = SHIFT(84), - [ts_sym_number] = SHIFT(84), - [ts_sym_object] = SHIFT(84), - [ts_sym_string] = SHIFT(84), - [ts_sym_true] = SHIFT(84), - [ts_aux_sym_token10] = SHIFT(108), - [ts_aux_sym_token11] = SHIFT(138), - [ts_aux_sym_token5] = SHIFT(113), - [ts_builtin_sym_error] = SHIFT(85), + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token2] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 6), }, [84] = { - [ts_aux_sym_token11] = REDUCE(ts_sym_literal, 1), - [ts_aux_sym_token8] = REDUCE(ts_sym_literal, 1), + [ts_sym__function] = SHIFT(17), + [ts_sym_array] = SHIFT(63), + [ts_sym_expression] = SHIFT(85), + [ts_sym_false] = SHIFT(63), + [ts_sym_function_call] = SHIFT(76), + [ts_sym_function_expression] = SHIFT(76), + [ts_sym_identifier] = SHIFT(76), + [ts_sym_literal] = SHIFT(76), + [ts_sym_null] = SHIFT(63), + [ts_sym_number] = SHIFT(63), + [ts_sym_object] = SHIFT(63), + [ts_sym_property_access] = SHIFT(76), + [ts_sym_string] = SHIFT(63), + [ts_sym_true] = SHIFT(63), + [ts_aux_sym_token2] = SHIFT(88), + [ts_aux_sym_token3] = SHIFT(77), + [ts_aux_sym_token9] = SHIFT(89), }, [85] = { - [ts_aux_sym_repeat_helper6] = SHIFT(86), - [ts_aux_sym_token11] = REDUCE(ts_aux_sym_repeat_helper6, 0), - [ts_aux_sym_token8] = SHIFT(88), + [ts_aux_sym_repeat_helper3] = SHIFT(86), + [ts_aux_sym_token1] = SHIFT(67), + [ts_aux_sym_token2] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token6] = SHIFT(71), + [ts_aux_sym_token7] = SHIFT(74), }, [86] = { - [ts_aux_sym_token11] = SHIFT(87), + [ts_aux_sym_token2] = SHIFT(87), }, [87] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_array, 4), - [ts_aux_sym_token8] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token4] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token6] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_call, 5), }, [88] = { - [ts_sym__function] = SHIFT(33), - [ts_sym_array] = SHIFT(84), - [ts_sym_expression] = SHIFT(89), - [ts_sym_false] = SHIFT(84), - [ts_sym_function_call] = SHIFT(91), - [ts_sym_function_expression] = SHIFT(91), - [ts_sym_identifier] = SHIFT(92), - [ts_sym_literal] = SHIFT(91), - [ts_sym_null] = SHIFT(84), - [ts_sym_number] = SHIFT(84), - [ts_sym_object] = SHIFT(84), - [ts_sym_string] = SHIFT(84), - [ts_sym_true] = SHIFT(84), - [ts_aux_sym_token10] = SHIFT(108), - [ts_aux_sym_token5] = SHIFT(113), - [ts_builtin_sym_error] = SHIFT(89), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token4] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token6] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_call, 3), }, [89] = { - [ts_aux_sym_repeat_helper6] = SHIFT(90), - [ts_aux_sym_token11] = REDUCE(ts_aux_sym_repeat_helper6, 0), - [ts_aux_sym_token8] = SHIFT(88), + [ts_sym__function] = SHIFT(41), + [ts_sym_array] = SHIFT(58), + [ts_sym_expression] = SHIFT(90), + [ts_sym_false] = SHIFT(58), + [ts_sym_function_call] = SHIFT(98), + [ts_sym_function_expression] = SHIFT(98), + [ts_sym_identifier] = SHIFT(98), + [ts_sym_literal] = SHIFT(98), + [ts_sym_null] = SHIFT(58), + [ts_sym_number] = SHIFT(58), + [ts_sym_object] = SHIFT(58), + [ts_sym_property_access] = SHIFT(98), + [ts_sym_string] = SHIFT(58), + [ts_sym_true] = SHIFT(58), + [ts_aux_sym_token10] = SHIFT(142), + [ts_aux_sym_token3] = SHIFT(99), + [ts_aux_sym_token9] = SHIFT(124), + [ts_builtin_sym_error] = SHIFT(143), }, [90] = { - [ts_aux_sym_token11] = REDUCE(ts_aux_sym_repeat_helper6, 3), + [ts_aux_sym_repeat_helper6] = SHIFT(91), + [ts_aux_sym_token1] = SHIFT(62), + [ts_aux_sym_token10] = REDUCE(ts_aux_sym_repeat_helper6, 0), + [ts_aux_sym_token6] = SHIFT(93), + [ts_aux_sym_token7] = SHIFT(96), }, [91] = { - [ts_aux_sym_token11] = REDUCE(ts_sym_expression, 1), - [ts_aux_sym_token8] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token10] = SHIFT(92), }, [92] = { - [ts_aux_sym_token11] = REDUCE(ts_sym_expression, 1), - [ts_aux_sym_token3] = SHIFT(93), - [ts_aux_sym_token8] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token1] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token2] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token6] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_array, 4), }, [93] = { - [ts_sym__function] = SHIFT(21), - [ts_sym_array] = SHIFT(70), + [ts_sym__function] = SHIFT(41), + [ts_sym_array] = SHIFT(58), [ts_sym_expression] = SHIFT(94), - [ts_sym_false] = SHIFT(70), - [ts_sym_function_call] = SHIFT(77), - [ts_sym_function_expression] = SHIFT(77), - [ts_sym_identifier] = SHIFT(78), - [ts_sym_literal] = SHIFT(77), - [ts_sym_null] = SHIFT(70), - [ts_sym_number] = SHIFT(70), - [ts_sym_object] = SHIFT(70), - [ts_sym_string] = SHIFT(70), - [ts_sym_true] = SHIFT(70), - [ts_aux_sym_token10] = SHIFT(83), - [ts_aux_sym_token4] = SHIFT(97), - [ts_aux_sym_token5] = SHIFT(98), + [ts_sym_false] = SHIFT(58), + [ts_sym_function_call] = SHIFT(98), + [ts_sym_function_expression] = SHIFT(98), + [ts_sym_identifier] = SHIFT(98), + [ts_sym_literal] = SHIFT(98), + [ts_sym_null] = SHIFT(58), + [ts_sym_number] = SHIFT(58), + [ts_sym_object] = SHIFT(58), + [ts_sym_property_access] = SHIFT(98), + [ts_sym_string] = SHIFT(58), + [ts_sym_true] = SHIFT(58), + [ts_aux_sym_token3] = SHIFT(99), + [ts_aux_sym_token9] = SHIFT(124), + [ts_builtin_sym_error] = SHIFT(141), }, [94] = { - [ts_aux_sym_repeat_helper3] = SHIFT(95), - [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper3, 0), - [ts_aux_sym_token8] = SHIFT(74), + [ts_aux_sym_repeat_helper6] = SHIFT(95), + [ts_aux_sym_token1] = SHIFT(62), + [ts_aux_sym_token10] = REDUCE(ts_aux_sym_repeat_helper6, 0), + [ts_aux_sym_token6] = SHIFT(93), + [ts_aux_sym_token7] = SHIFT(96), }, [95] = { - [ts_aux_sym_token4] = SHIFT(96), + [ts_aux_sym_token10] = REDUCE(ts_aux_sym_repeat_helper6, 3), }, [96] = { - [ts_aux_sym_token11] = REDUCE(ts_sym_function_call, 5), - [ts_aux_sym_token8] = REDUCE(ts_sym_function_call, 5), + [ts_sym_identifier] = SHIFT(97), }, [97] = { - [ts_aux_sym_token11] = REDUCE(ts_sym_function_call, 3), - [ts_aux_sym_token8] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token1] = REDUCE(ts_sym_property_access, 3), + [ts_aux_sym_token10] = REDUCE(ts_sym_property_access, 3), + [ts_aux_sym_token6] = REDUCE(ts_sym_property_access, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_property_access, 3), }, [98] = { - [ts_sym_string] = SHIFT(99), - [ts_aux_sym_token6] = SHIFT(134), - [ts_builtin_sym_error] = SHIFT(135), + [ts_aux_sym_token1] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token10] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token6] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token7] = REDUCE(ts_sym_expression, 1), }, [99] = { - [ts_aux_sym_token9] = SHIFT(100), + [ts_sym_identifier] = SHIFT(100), + [ts_sym_string] = SHIFT(100), + [ts_aux_sym_token4] = SHIFT(137), + [ts_builtin_sym_error] = SHIFT(138), }, [100] = { - [ts_sym__function] = SHIFT(43), - [ts_sym_array] = SHIFT(58), - [ts_sym_expression] = SHIFT(101), - [ts_sym_false] = SHIFT(58), - [ts_sym_function_call] = SHIFT(67), - [ts_sym_function_expression] = SHIFT(67), - [ts_sym_identifier] = SHIFT(68), - [ts_sym_literal] = SHIFT(67), - [ts_sym_null] = SHIFT(58), - [ts_sym_number] = SHIFT(58), - [ts_sym_object] = SHIFT(58), - [ts_sym_string] = SHIFT(58), - [ts_sym_true] = SHIFT(58), - [ts_aux_sym_token10] = SHIFT(104), - [ts_aux_sym_token5] = SHIFT(119), + [ts_aux_sym_token8] = SHIFT(101), }, [101] = { - [ts_aux_sym_repeat_helper5] = SHIFT(102), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper5, 0), - [ts_aux_sym_token8] = SHIFT(62), + [ts_sym__function] = SHIFT(34), + [ts_sym_array] = SHIFT(80), + [ts_sym_expression] = SHIFT(102), + [ts_sym_false] = SHIFT(80), + [ts_sym_function_call] = SHIFT(112), + [ts_sym_function_expression] = SHIFT(112), + [ts_sym_identifier] = SHIFT(112), + [ts_sym_literal] = SHIFT(112), + [ts_sym_null] = SHIFT(80), + [ts_sym_number] = SHIFT(80), + [ts_sym_object] = SHIFT(80), + [ts_sym_property_access] = SHIFT(112), + [ts_sym_string] = SHIFT(80), + [ts_sym_true] = SHIFT(80), + [ts_aux_sym_token3] = SHIFT(113), + [ts_aux_sym_token9] = SHIFT(119), }, [102] = { - [ts_aux_sym_token6] = SHIFT(103), + [ts_aux_sym_repeat_helper5] = SHIFT(103), + [ts_aux_sym_token1] = SHIFT(84), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper5, 0), + [ts_aux_sym_token6] = SHIFT(105), + [ts_aux_sym_token7] = SHIFT(110), }, [103] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_object, 6), - [ts_aux_sym_token8] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token4] = SHIFT(104), }, [104] = { - [ts_sym__function] = SHIFT(33), - [ts_sym_array] = SHIFT(84), - [ts_sym_expression] = SHIFT(105), - [ts_sym_false] = SHIFT(84), - [ts_sym_function_call] = SHIFT(91), - [ts_sym_function_expression] = SHIFT(91), - [ts_sym_identifier] = SHIFT(92), - [ts_sym_literal] = SHIFT(91), - [ts_sym_null] = SHIFT(84), - [ts_sym_number] = SHIFT(84), - [ts_sym_object] = SHIFT(84), - [ts_sym_string] = SHIFT(84), - [ts_sym_true] = SHIFT(84), - [ts_aux_sym_token10] = SHIFT(108), - [ts_aux_sym_token11] = SHIFT(133), - [ts_aux_sym_token5] = SHIFT(113), - [ts_builtin_sym_error] = SHIFT(105), + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token10] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 6), }, [105] = { - [ts_aux_sym_repeat_helper6] = SHIFT(106), - [ts_aux_sym_token11] = REDUCE(ts_aux_sym_repeat_helper6, 0), - [ts_aux_sym_token8] = SHIFT(88), + [ts_sym_identifier] = SHIFT(106), + [ts_sym_string] = SHIFT(106), + [ts_builtin_sym_error] = SHIFT(135), }, [106] = { - [ts_aux_sym_token11] = SHIFT(107), + [ts_aux_sym_token8] = SHIFT(107), }, [107] = { - [ts_aux_sym_token6] = REDUCE(ts_sym_array, 4), - [ts_aux_sym_token8] = REDUCE(ts_sym_array, 4), + [ts_sym__function] = SHIFT(34), + [ts_sym_array] = SHIFT(80), + [ts_sym_expression] = SHIFT(108), + [ts_sym_false] = SHIFT(80), + [ts_sym_function_call] = SHIFT(112), + [ts_sym_function_expression] = SHIFT(112), + [ts_sym_identifier] = SHIFT(112), + [ts_sym_literal] = SHIFT(112), + [ts_sym_null] = SHIFT(80), + [ts_sym_number] = SHIFT(80), + [ts_sym_object] = SHIFT(80), + [ts_sym_property_access] = SHIFT(112), + [ts_sym_string] = SHIFT(80), + [ts_sym_true] = SHIFT(80), + [ts_aux_sym_token3] = SHIFT(113), + [ts_aux_sym_token9] = SHIFT(119), }, [108] = { - [ts_sym__function] = SHIFT(33), - [ts_sym_array] = SHIFT(84), - [ts_sym_expression] = SHIFT(109), - [ts_sym_false] = SHIFT(84), - [ts_sym_function_call] = SHIFT(91), - [ts_sym_function_expression] = SHIFT(91), - [ts_sym_identifier] = SHIFT(92), - [ts_sym_literal] = SHIFT(91), - [ts_sym_null] = SHIFT(84), - [ts_sym_number] = SHIFT(84), - [ts_sym_object] = SHIFT(84), - [ts_sym_string] = SHIFT(84), - [ts_sym_true] = SHIFT(84), - [ts_aux_sym_token10] = SHIFT(108), - [ts_aux_sym_token11] = SHIFT(112), - [ts_aux_sym_token5] = SHIFT(113), - [ts_builtin_sym_error] = SHIFT(109), + [ts_aux_sym_repeat_helper5] = SHIFT(109), + [ts_aux_sym_token1] = SHIFT(84), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper5, 0), + [ts_aux_sym_token6] = SHIFT(105), + [ts_aux_sym_token7] = SHIFT(110), }, [109] = { - [ts_aux_sym_repeat_helper6] = SHIFT(110), - [ts_aux_sym_token11] = REDUCE(ts_aux_sym_repeat_helper6, 0), - [ts_aux_sym_token8] = SHIFT(88), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper5, 5), }, [110] = { - [ts_aux_sym_token11] = SHIFT(111), + [ts_sym_identifier] = SHIFT(111), }, [111] = { - [ts_aux_sym_token11] = REDUCE(ts_sym_array, 4), - [ts_aux_sym_token8] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token1] = REDUCE(ts_sym_property_access, 3), + [ts_aux_sym_token4] = REDUCE(ts_sym_property_access, 3), + [ts_aux_sym_token6] = REDUCE(ts_sym_property_access, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_property_access, 3), }, [112] = { - [ts_aux_sym_token11] = REDUCE(ts_sym_array, 2), - [ts_aux_sym_token8] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token1] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token4] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token6] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token7] = REDUCE(ts_sym_expression, 1), }, [113] = { + [ts_sym_identifier] = SHIFT(114), [ts_sym_string] = SHIFT(114), - [ts_aux_sym_token6] = SHIFT(129), - [ts_builtin_sym_error] = SHIFT(130), + [ts_aux_sym_token4] = SHIFT(131), + [ts_builtin_sym_error] = SHIFT(132), }, [114] = { - [ts_aux_sym_token9] = SHIFT(115), + [ts_aux_sym_token8] = SHIFT(115), }, [115] = { - [ts_sym__function] = SHIFT(43), - [ts_sym_array] = SHIFT(58), + [ts_sym__function] = SHIFT(34), + [ts_sym_array] = SHIFT(80), [ts_sym_expression] = SHIFT(116), - [ts_sym_false] = SHIFT(58), - [ts_sym_function_call] = SHIFT(67), - [ts_sym_function_expression] = SHIFT(67), - [ts_sym_identifier] = SHIFT(68), - [ts_sym_literal] = SHIFT(67), - [ts_sym_null] = SHIFT(58), - [ts_sym_number] = SHIFT(58), - [ts_sym_object] = SHIFT(58), - [ts_sym_string] = SHIFT(58), - [ts_sym_true] = SHIFT(58), - [ts_aux_sym_token10] = SHIFT(104), - [ts_aux_sym_token5] = SHIFT(119), + [ts_sym_false] = SHIFT(80), + [ts_sym_function_call] = SHIFT(112), + [ts_sym_function_expression] = SHIFT(112), + [ts_sym_identifier] = SHIFT(112), + [ts_sym_literal] = SHIFT(112), + [ts_sym_null] = SHIFT(80), + [ts_sym_number] = SHIFT(80), + [ts_sym_object] = SHIFT(80), + [ts_sym_property_access] = SHIFT(112), + [ts_sym_string] = SHIFT(80), + [ts_sym_true] = SHIFT(80), + [ts_aux_sym_token3] = SHIFT(113), + [ts_aux_sym_token9] = SHIFT(119), }, [116] = { [ts_aux_sym_repeat_helper5] = SHIFT(117), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper5, 0), - [ts_aux_sym_token8] = SHIFT(62), + [ts_aux_sym_token1] = SHIFT(84), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper5, 0), + [ts_aux_sym_token6] = SHIFT(105), + [ts_aux_sym_token7] = SHIFT(110), }, [117] = { - [ts_aux_sym_token6] = SHIFT(118), + [ts_aux_sym_token4] = SHIFT(118), }, [118] = { - [ts_aux_sym_token11] = REDUCE(ts_sym_object, 6), - [ts_aux_sym_token8] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token4] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 6), }, [119] = { - [ts_sym_string] = SHIFT(120), - [ts_aux_sym_token6] = SHIFT(125), - [ts_builtin_sym_error] = SHIFT(126), - }, - - [120] = { - [ts_aux_sym_token9] = SHIFT(121), - }, - - [121] = { - [ts_sym__function] = SHIFT(43), + [ts_sym__function] = SHIFT(41), [ts_sym_array] = SHIFT(58), - [ts_sym_expression] = SHIFT(122), + [ts_sym_expression] = SHIFT(120), [ts_sym_false] = SHIFT(58), - [ts_sym_function_call] = SHIFT(67), - [ts_sym_function_expression] = SHIFT(67), - [ts_sym_identifier] = SHIFT(68), - [ts_sym_literal] = SHIFT(67), + [ts_sym_function_call] = SHIFT(98), + [ts_sym_function_expression] = SHIFT(98), + [ts_sym_identifier] = SHIFT(98), + [ts_sym_literal] = SHIFT(98), [ts_sym_null] = SHIFT(58), [ts_sym_number] = SHIFT(58), [ts_sym_object] = SHIFT(58), + [ts_sym_property_access] = SHIFT(98), [ts_sym_string] = SHIFT(58), [ts_sym_true] = SHIFT(58), - [ts_aux_sym_token10] = SHIFT(104), - [ts_aux_sym_token5] = SHIFT(119), + [ts_aux_sym_token10] = SHIFT(123), + [ts_aux_sym_token3] = SHIFT(99), + [ts_aux_sym_token9] = SHIFT(124), + [ts_builtin_sym_error] = SHIFT(130), + }, + + [120] = { + [ts_aux_sym_repeat_helper6] = SHIFT(121), + [ts_aux_sym_token1] = SHIFT(62), + [ts_aux_sym_token10] = REDUCE(ts_aux_sym_repeat_helper6, 0), + [ts_aux_sym_token6] = SHIFT(93), + [ts_aux_sym_token7] = SHIFT(96), + }, + + [121] = { + [ts_aux_sym_token10] = SHIFT(122), }, [122] = { - [ts_aux_sym_repeat_helper5] = SHIFT(123), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper5, 0), - [ts_aux_sym_token8] = SHIFT(62), + [ts_aux_sym_token1] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token4] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token6] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_array, 4), }, [123] = { - [ts_aux_sym_token6] = SHIFT(124), + [ts_aux_sym_token1] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token4] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token6] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token7] = REDUCE(ts_sym_array, 2), }, [124] = { - [ts_aux_sym_token6] = REDUCE(ts_sym_object, 6), - [ts_aux_sym_token8] = REDUCE(ts_sym_object, 6), + [ts_sym__function] = SHIFT(41), + [ts_sym_array] = SHIFT(58), + [ts_sym_expression] = SHIFT(125), + [ts_sym_false] = SHIFT(58), + [ts_sym_function_call] = SHIFT(98), + [ts_sym_function_expression] = SHIFT(98), + [ts_sym_identifier] = SHIFT(98), + [ts_sym_literal] = SHIFT(98), + [ts_sym_null] = SHIFT(58), + [ts_sym_number] = SHIFT(58), + [ts_sym_object] = SHIFT(58), + [ts_sym_property_access] = SHIFT(98), + [ts_sym_string] = SHIFT(58), + [ts_sym_true] = SHIFT(58), + [ts_aux_sym_token10] = SHIFT(128), + [ts_aux_sym_token3] = SHIFT(99), + [ts_aux_sym_token9] = SHIFT(124), + [ts_builtin_sym_error] = SHIFT(129), }, [125] = { - [ts_aux_sym_token6] = REDUCE(ts_sym_object, 2), - [ts_aux_sym_token8] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_repeat_helper6] = SHIFT(126), + [ts_aux_sym_token1] = SHIFT(62), + [ts_aux_sym_token10] = REDUCE(ts_aux_sym_repeat_helper6, 0), + [ts_aux_sym_token6] = SHIFT(93), + [ts_aux_sym_token7] = SHIFT(96), }, [126] = { - [ts_aux_sym_repeat_helper5] = SHIFT(127), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper5, 0), - [ts_aux_sym_token8] = SHIFT(62), + [ts_aux_sym_token10] = SHIFT(127), }, [127] = { - [ts_aux_sym_token6] = SHIFT(128), + [ts_aux_sym_token1] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token10] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token6] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_array, 4), }, [128] = { - [ts_aux_sym_token6] = REDUCE(ts_sym_object, 4), - [ts_aux_sym_token8] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token1] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token10] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token6] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token7] = REDUCE(ts_sym_array, 2), }, [129] = { - [ts_aux_sym_token11] = REDUCE(ts_sym_object, 2), - [ts_aux_sym_token8] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_repeat_helper6] = SHIFT(126), + [ts_aux_sym_token10] = REDUCE(ts_aux_sym_repeat_helper6, 0), + [ts_aux_sym_token6] = SHIFT(93), }, [130] = { - [ts_aux_sym_repeat_helper5] = SHIFT(131), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper5, 0), - [ts_aux_sym_token8] = SHIFT(62), + [ts_aux_sym_repeat_helper6] = SHIFT(121), + [ts_aux_sym_token10] = REDUCE(ts_aux_sym_repeat_helper6, 0), + [ts_aux_sym_token6] = SHIFT(93), }, [131] = { - [ts_aux_sym_token6] = SHIFT(132), + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token4] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 2), }, [132] = { - [ts_aux_sym_token11] = REDUCE(ts_sym_object, 4), - [ts_aux_sym_token8] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_repeat_helper5] = SHIFT(133), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper5, 0), + [ts_aux_sym_token6] = SHIFT(105), }, [133] = { - [ts_aux_sym_token6] = REDUCE(ts_sym_array, 2), - [ts_aux_sym_token8] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token4] = SHIFT(134), }, [134] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_object, 2), - [ts_aux_sym_token8] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token4] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 4), }, [135] = { [ts_aux_sym_repeat_helper5] = SHIFT(136), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper5, 0), - [ts_aux_sym_token8] = SHIFT(62), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper5, 0), + [ts_aux_sym_token6] = SHIFT(105), }, [136] = { - [ts_aux_sym_token6] = SHIFT(137), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper5, 3), }, [137] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_object, 4), - [ts_aux_sym_token8] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token10] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 2), }, [138] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_array, 2), - [ts_aux_sym_token8] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_repeat_helper5] = SHIFT(139), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper5, 0), + [ts_aux_sym_token6] = SHIFT(105), }, [139] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_function_call, 3), - [ts_aux_sym_token8] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token4] = SHIFT(140), }, [140] = { - [ts_aux_sym_token6] = REDUCE(ts_sym_function_call, 3), - [ts_aux_sym_token8] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token10] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 4), }, [141] = { - [ts_aux_sym_repeat_helper5] = SHIFT(142), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper5, 0), - [ts_aux_sym_token8] = SHIFT(62), + [ts_aux_sym_repeat_helper6] = SHIFT(95), + [ts_aux_sym_token10] = REDUCE(ts_aux_sym_repeat_helper6, 0), + [ts_aux_sym_token6] = SHIFT(93), }, [142] = { - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper5, 3), + [ts_aux_sym_token1] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token2] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token6] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token7] = REDUCE(ts_sym_array, 2), }, [143] = { - [ts_aux_sym_token6] = SHIFT(144), + [ts_aux_sym_repeat_helper6] = SHIFT(91), + [ts_aux_sym_token10] = REDUCE(ts_aux_sym_repeat_helper6, 0), + [ts_aux_sym_token6] = SHIFT(93), }, [144] = { - [ts_sym__function] = REDUCE(ts_sym_statement_block, 3), - [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), + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token2] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 2), }, [145] = { - [ts_aux_sym_token1] = REDUCE(ts_sym_object, 2), - [ts_aux_sym_token2] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_repeat_helper5] = SHIFT(146), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper5, 0), + [ts_aux_sym_token6] = SHIFT(105), }, [146] = { - [ts_aux_sym_repeat_helper5] = SHIFT(147), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper5, 0), - [ts_aux_sym_token8] = SHIFT(62), + [ts_aux_sym_token4] = SHIFT(147), }, [147] = { - [ts_aux_sym_token6] = SHIFT(148), + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token2] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token6] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 4), }, [148] = { - [ts_aux_sym_token1] = REDUCE(ts_sym_object, 4), - [ts_aux_sym_token2] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token2] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token6] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_call, 3), }, [149] = { - [ts_aux_sym_repeat_helper6] = SHIFT(150), - [ts_aux_sym_token11] = REDUCE(ts_aux_sym_repeat_helper6, 0), - [ts_aux_sym_token8] = SHIFT(88), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token10] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token6] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_call, 3), }, [150] = { - [ts_aux_sym_token11] = SHIFT(151), + [ts_aux_sym_token1] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token11] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token12] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token7] = REDUCE(ts_sym_array, 2), }, [151] = { - [ts_aux_sym_token1] = REDUCE(ts_sym_array, 4), - [ts_aux_sym_token2] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_repeat_helper6] = SHIFT(60), + [ts_aux_sym_token10] = REDUCE(ts_aux_sym_repeat_helper6, 0), + [ts_aux_sym_token6] = SHIFT(93), }, [152] = { - [ts_aux_sym_token1] = REDUCE(ts_sym_array, 2), - [ts_aux_sym_token2] = REDUCE(ts_sym_array, 2), + [ts_sym_formal_parameters] = SHIFT(153), + [ts_aux_sym_token1] = SHIFT(50), }, [153] = { - [ts_aux_sym_token6] = SHIFT(154), + [ts_sym_statement_block] = SHIFT(154), + [ts_aux_sym_token3] = SHIFT(37), }, [154] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_statement_block, 3), - [ts_aux_sym_token8] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token4] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token6] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_expression, 4), }, [155] = { - [ts_aux_sym_repeat_helper3] = SHIFT(156), - [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper3, 0), - [ts_aux_sym_token8] = SHIFT(74), + [ts_aux_sym_repeat_helper5] = SHIFT(156), + [ts_aux_sym_token1] = SHIFT(84), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper5, 0), + [ts_aux_sym_token6] = SHIFT(105), + [ts_aux_sym_token7] = SHIFT(110), }, [156] = { @@ -2587,587 +2812,296 @@ PARSE_TABLE = { }, [157] = { - [ts_aux_sym_token1] = REDUCE(ts_sym_function_call, 5), - [ts_aux_sym_token2] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token11] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token12] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 6), }, [158] = { - [ts_aux_sym_token1] = REDUCE(ts_sym_function_call, 3), - [ts_aux_sym_token2] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token1] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token11] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token12] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token7] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token8] = SHIFT(33), }, [159] = { - [ts_sym_string] = SHIFT(160), - [ts_aux_sym_token6] = SHIFT(145), - [ts_builtin_sym_error] = SHIFT(146), + [ts_aux_sym_token4] = SHIFT(160), }, [160] = { - [ts_aux_sym_token9] = SHIFT(42), + [ts_sym__function] = REDUCE(ts_sym_statement_block, 3), + [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_token3] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token4] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token9] = REDUCE(ts_sym_statement_block, 3), }, [161] = { - [ts_aux_sym_token6] = SHIFT(162), + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token11] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token12] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 2), }, [162] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_repeat_helper5] = SHIFT(163), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper5, 0), + [ts_aux_sym_token6] = SHIFT(105), }, [163] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token4] = SHIFT(164), }, [164] = { - [ts_aux_sym_token4] = SHIFT(165), + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token11] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token12] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 4), }, [165] = { - [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(166), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(170), - [ts_sym_expression] = SHIFT(170), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(173), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(202), - [ts_sym_statement_block] = SHIFT(173), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(177), + [ts_aux_sym_token4] = SHIFT(166), }, [166] = { - [ts_aux_sym_token3] = SHIFT(167), + [ts_aux_sym_token1] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token2] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token6] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_statement_block, 3), }, [167] = { - [ts_sym__function] = SHIFT(8), - [ts_sym_array] = SHIFT(163), - [ts_sym_expression] = SHIFT(168), - [ts_sym_false] = SHIFT(163), - [ts_sym_function_call] = SHIFT(180), - [ts_sym_function_expression] = SHIFT(180), - [ts_sym_identifier] = SHIFT(181), - [ts_sym_literal] = SHIFT(180), - [ts_sym_null] = SHIFT(163), - [ts_sym_number] = SHIFT(163), - [ts_sym_object] = SHIFT(163), - [ts_sym_string] = SHIFT(163), - [ts_sym_true] = SHIFT(163), - [ts_aux_sym_token10] = SHIFT(187), - [ts_aux_sym_token5] = SHIFT(192), + [ts_sym_formal_parameters] = SHIFT(168), + [ts_aux_sym_token1] = SHIFT(50), }, [168] = { - [ts_aux_sym_token4] = SHIFT(169), + [ts_sym_statement_block] = SHIFT(169), + [ts_aux_sym_token3] = SHIFT(20), }, [169] = { - [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(166), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(170), - [ts_sym_expression] = SHIFT(170), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(173), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(174), - [ts_sym_statement_block] = SHIFT(173), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(177), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token2] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token6] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_expression, 4), }, [170] = { - [ts_sym__terminator] = SHIFT(171), - [ts_aux_sym_token1] = SHIFT(172), - [ts_aux_sym_token2] = SHIFT(172), + [ts_aux_sym_repeat_helper3] = SHIFT(171), + [ts_aux_sym_token1] = SHIFT(67), + [ts_aux_sym_token2] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token6] = SHIFT(71), + [ts_aux_sym_token7] = SHIFT(74), }, [171] = { - [ts_sym__else] = REDUCE(ts_sym_statement, 2), - [ts_sym__function] = REDUCE(ts_sym_statement, 2), - [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), + [ts_aux_sym_token2] = SHIFT(172), }, [172] = { - [ts_sym__else] = REDUCE(ts_sym__terminator, 1), - [ts_sym__function] = REDUCE(ts_sym__terminator, 1), - [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), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token11] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token12] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_call, 5), }, [173] = { - [ts_sym__else] = REDUCE(ts_sym_statement, 1), - [ts_sym__function] = REDUCE(ts_sym_statement, 1), - [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), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token11] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token12] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_call, 3), }, [174] = { - [ts_sym__else] = SHIFT(175), - [ts_sym__function] = REDUCE(ts_sym_if_statement, 5), - [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), + [ts_sym_identifier] = SHIFT(175), + [ts_sym_string] = SHIFT(175), + [ts_aux_sym_token4] = SHIFT(161), + [ts_builtin_sym_error] = SHIFT(162), }, [175] = { - [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(166), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(170), - [ts_sym_expression] = SHIFT(170), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(173), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(176), - [ts_sym_statement_block] = SHIFT(173), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(177), + [ts_aux_sym_token8] = SHIFT(33), }, [176] = { - [ts_sym__else] = REDUCE(ts_sym_if_statement, 7), - [ts_sym__function] = REDUCE(ts_sym_if_statement, 7), - [ts_sym__if] = REDUCE(ts_sym_if_statement, 7), - [ts_sym__var] = REDUCE(ts_sym_if_statement, 7), - [ts_sym_false] = REDUCE(ts_sym_if_statement, 7), - [ts_sym_identifier] = REDUCE(ts_sym_if_statement, 7), - [ts_sym_null] = REDUCE(ts_sym_if_statement, 7), - [ts_sym_number] = REDUCE(ts_sym_if_statement, 7), - [ts_sym_string] = REDUCE(ts_sym_if_statement, 7), - [ts_sym_true] = REDUCE(ts_sym_if_statement, 7), - [ts_aux_sym_token10] = REDUCE(ts_sym_if_statement, 7), - [ts_aux_sym_token5] = REDUCE(ts_sym_if_statement, 7), - [ts_aux_sym_token6] = REDUCE(ts_sym_if_statement, 7), + [ts_aux_sym_token4] = SHIFT(177), }, [177] = { - [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(6), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(26), - [ts_sym_expression] = SHIFT(26), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(29), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(30), - [ts_sym_statement_block] = SHIFT(29), - [ts_sym_string] = SHIFT(41), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_repeat_helper2] = SHIFT(178), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(40), - [ts_aux_sym_token6] = SHIFT(145), - [ts_builtin_sym_error] = SHIFT(146), + [ts_aux_sym_token1] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token2] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_statement_block, 3), }, [178] = { - [ts_aux_sym_token6] = SHIFT(179), + [ts_sym_formal_parameters] = SHIFT(179), + [ts_aux_sym_token1] = SHIFT(50), }, [179] = { - [ts_sym__else] = REDUCE(ts_sym_statement_block, 3), - [ts_sym__function] = REDUCE(ts_sym_statement_block, 3), - [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), + [ts_sym_statement_block] = SHIFT(180), + [ts_aux_sym_token3] = SHIFT(10), }, [180] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token2] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_expression, 4), }, [181] = { - [ts_aux_sym_token3] = SHIFT(182), - [ts_aux_sym_token4] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token1] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token2] = REDUCE(ts_sym_literal, 1), + [ts_aux_sym_token7] = REDUCE(ts_sym_literal, 1), }, [182] = { - [ts_sym__function] = SHIFT(21), - [ts_sym_array] = SHIFT(70), - [ts_sym_expression] = SHIFT(183), - [ts_sym_false] = SHIFT(70), - [ts_sym_function_call] = SHIFT(77), - [ts_sym_function_expression] = SHIFT(77), - [ts_sym_identifier] = SHIFT(78), - [ts_sym_literal] = SHIFT(77), - [ts_sym_null] = SHIFT(70), - [ts_sym_number] = SHIFT(70), - [ts_sym_object] = SHIFT(70), - [ts_sym_string] = SHIFT(70), - [ts_sym_true] = SHIFT(70), - [ts_aux_sym_token10] = SHIFT(83), - [ts_aux_sym_token4] = SHIFT(186), - [ts_aux_sym_token5] = SHIFT(98), + [ts_aux_sym_token1] = SHIFT(183), + [ts_aux_sym_token2] = SHIFT(188), + [ts_aux_sym_token7] = SHIFT(204), }, [183] = { - [ts_aux_sym_repeat_helper3] = SHIFT(184), - [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper3, 0), - [ts_aux_sym_token8] = SHIFT(74), + [ts_sym__function] = SHIFT(17), + [ts_sym_array] = SHIFT(63), + [ts_sym_expression] = SHIFT(184), + [ts_sym_false] = SHIFT(63), + [ts_sym_function_call] = SHIFT(76), + [ts_sym_function_expression] = SHIFT(76), + [ts_sym_identifier] = SHIFT(76), + [ts_sym_literal] = SHIFT(76), + [ts_sym_null] = SHIFT(63), + [ts_sym_number] = SHIFT(63), + [ts_sym_object] = SHIFT(63), + [ts_sym_property_access] = SHIFT(76), + [ts_sym_string] = SHIFT(63), + [ts_sym_true] = SHIFT(63), + [ts_aux_sym_token2] = SHIFT(187), + [ts_aux_sym_token3] = SHIFT(77), + [ts_aux_sym_token9] = SHIFT(89), }, [184] = { - [ts_aux_sym_token4] = SHIFT(185), + [ts_aux_sym_repeat_helper3] = SHIFT(185), + [ts_aux_sym_token1] = SHIFT(67), + [ts_aux_sym_token2] = REDUCE(ts_aux_sym_repeat_helper3, 0), + [ts_aux_sym_token6] = SHIFT(71), + [ts_aux_sym_token7] = SHIFT(74), }, [185] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token2] = SHIFT(186), }, [186] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token2] = REDUCE(ts_sym_function_call, 5), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_call, 5), }, [187] = { - [ts_sym__function] = SHIFT(33), - [ts_sym_array] = SHIFT(84), - [ts_sym_expression] = SHIFT(188), - [ts_sym_false] = SHIFT(84), - [ts_sym_function_call] = SHIFT(91), - [ts_sym_function_expression] = SHIFT(91), - [ts_sym_identifier] = SHIFT(92), - [ts_sym_literal] = SHIFT(91), - [ts_sym_null] = SHIFT(84), - [ts_sym_number] = SHIFT(84), - [ts_sym_object] = SHIFT(84), - [ts_sym_string] = SHIFT(84), - [ts_sym_true] = SHIFT(84), - [ts_aux_sym_token10] = SHIFT(108), - [ts_aux_sym_token11] = SHIFT(191), - [ts_aux_sym_token5] = SHIFT(113), - [ts_builtin_sym_error] = SHIFT(188), + [ts_aux_sym_token1] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token2] = REDUCE(ts_sym_function_call, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_call, 3), }, [188] = { - [ts_aux_sym_repeat_helper6] = SHIFT(189), - [ts_aux_sym_token11] = REDUCE(ts_aux_sym_repeat_helper6, 0), - [ts_aux_sym_token8] = SHIFT(88), + [ts_sym__function] = SHIFT(1), + [ts_sym__if] = SHIFT(189), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(193), + [ts_sym_expression] = SHIFT(196), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(197), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(223), + [ts_sym_statement_block] = SHIFT(197), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_token3] = SHIFT(201), + [ts_aux_sym_token9] = SHIFT(40), }, [189] = { - [ts_aux_sym_token11] = SHIFT(190), + [ts_aux_sym_token1] = SHIFT(190), }, [190] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_array, 4), + [ts_sym__function] = SHIFT(7), + [ts_sym_array] = SHIFT(181), + [ts_sym_expression] = SHIFT(191), + [ts_sym_false] = SHIFT(181), + [ts_sym_function_call] = SHIFT(206), + [ts_sym_function_expression] = SHIFT(206), + [ts_sym_identifier] = SHIFT(206), + [ts_sym_literal] = SHIFT(206), + [ts_sym_null] = SHIFT(181), + [ts_sym_number] = SHIFT(181), + [ts_sym_object] = SHIFT(181), + [ts_sym_property_access] = SHIFT(206), + [ts_sym_string] = SHIFT(181), + [ts_sym_true] = SHIFT(181), + [ts_aux_sym_token3] = SHIFT(207), + [ts_aux_sym_token9] = SHIFT(217), }, [191] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token1] = SHIFT(183), + [ts_aux_sym_token2] = SHIFT(192), + [ts_aux_sym_token7] = SHIFT(204), }, [192] = { - [ts_sym_string] = SHIFT(193), - [ts_aux_sym_token6] = SHIFT(198), - [ts_builtin_sym_error] = SHIFT(199), + [ts_sym__function] = SHIFT(1), + [ts_sym__if] = SHIFT(189), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(193), + [ts_sym_expression] = SHIFT(196), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(197), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(198), + [ts_sym_statement_block] = SHIFT(197), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_token3] = SHIFT(201), + [ts_aux_sym_token9] = SHIFT(40), }, [193] = { - [ts_aux_sym_token9] = SHIFT(194), + [ts_sym__terminator] = SHIFT(194), + [ts_aux_sym_token11] = SHIFT(195), + [ts_aux_sym_token12] = SHIFT(195), }, [194] = { - [ts_sym__function] = SHIFT(43), - [ts_sym_array] = SHIFT(58), - [ts_sym_expression] = SHIFT(195), - [ts_sym_false] = SHIFT(58), - [ts_sym_function_call] = SHIFT(67), - [ts_sym_function_expression] = SHIFT(67), - [ts_sym_identifier] = SHIFT(68), - [ts_sym_literal] = SHIFT(67), - [ts_sym_null] = SHIFT(58), - [ts_sym_number] = SHIFT(58), - [ts_sym_object] = SHIFT(58), - [ts_sym_string] = SHIFT(58), - [ts_sym_true] = SHIFT(58), - [ts_aux_sym_token10] = SHIFT(104), - [ts_aux_sym_token5] = SHIFT(119), - }, - - [195] = { - [ts_aux_sym_repeat_helper5] = SHIFT(196), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper5, 0), - [ts_aux_sym_token8] = SHIFT(62), - }, - - [196] = { - [ts_aux_sym_token6] = SHIFT(197), - }, - - [197] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_object, 6), - }, - - [198] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_object, 2), - }, - - [199] = { - [ts_aux_sym_repeat_helper5] = SHIFT(200), - [ts_aux_sym_token6] = REDUCE(ts_aux_sym_repeat_helper5, 0), - [ts_aux_sym_token8] = SHIFT(62), - }, - - [200] = { - [ts_aux_sym_token6] = SHIFT(201), - }, - - [201] = { - [ts_aux_sym_token4] = REDUCE(ts_sym_object, 4), - }, - - [202] = { - [ts_sym__else] = SHIFT(203), - [ts_sym__function] = REDUCE(ts_sym_if_statement, 5), - [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), - }, - - [203] = { - [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(6), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(26), - [ts_sym_expression] = SHIFT(26), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(29), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(204), - [ts_sym_statement_block] = SHIFT(29), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(40), - }, - - [204] = { - [ts_sym__function] = REDUCE(ts_sym_if_statement, 7), - [ts_sym__if] = REDUCE(ts_sym_if_statement, 7), - [ts_sym__var] = REDUCE(ts_sym_if_statement, 7), - [ts_sym_false] = REDUCE(ts_sym_if_statement, 7), - [ts_sym_identifier] = REDUCE(ts_sym_if_statement, 7), - [ts_sym_null] = REDUCE(ts_sym_if_statement, 7), - [ts_sym_number] = REDUCE(ts_sym_if_statement, 7), - [ts_sym_string] = REDUCE(ts_sym_if_statement, 7), - [ts_sym_true] = REDUCE(ts_sym_if_statement, 7), - [ts_aux_sym_token10] = REDUCE(ts_sym_if_statement, 7), - [ts_aux_sym_token5] = REDUCE(ts_sym_if_statement, 7), - [ts_aux_sym_token6] = REDUCE(ts_sym_if_statement, 7), - }, - - [205] = { - [ts_aux_sym_token6] = SHIFT(206), - }, - - [206] = { - [ts_aux_sym_token1] = REDUCE(ts_sym_statement_block, 3), - [ts_aux_sym_token2] = REDUCE(ts_sym_statement_block, 3), - }, - - [207] = { - [ts_aux_sym_token3] = SHIFT(208), - }, - - [208] = { - [ts_sym__function] = SHIFT(8), - [ts_sym_array] = SHIFT(163), - [ts_sym_expression] = SHIFT(209), - [ts_sym_false] = SHIFT(163), - [ts_sym_function_call] = SHIFT(180), - [ts_sym_function_expression] = SHIFT(180), - [ts_sym_identifier] = SHIFT(181), - [ts_sym_literal] = SHIFT(180), - [ts_sym_null] = SHIFT(163), - [ts_sym_number] = SHIFT(163), - [ts_sym_object] = SHIFT(163), - [ts_sym_string] = SHIFT(163), - [ts_sym_true] = SHIFT(163), - [ts_aux_sym_token10] = SHIFT(187), - [ts_aux_sym_token5] = SHIFT(192), - }, - - [209] = { - [ts_aux_sym_token4] = SHIFT(210), - }, - - [210] = { - [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(211), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(215), - [ts_sym_expression] = SHIFT(215), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(218), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(225), - [ts_sym_statement_block] = SHIFT(218), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(222), - }, - - [211] = { - [ts_aux_sym_token3] = SHIFT(212), - }, - - [212] = { - [ts_sym__function] = SHIFT(8), - [ts_sym_array] = SHIFT(163), - [ts_sym_expression] = SHIFT(213), - [ts_sym_false] = SHIFT(163), - [ts_sym_function_call] = SHIFT(180), - [ts_sym_function_expression] = SHIFT(180), - [ts_sym_identifier] = SHIFT(181), - [ts_sym_literal] = SHIFT(180), - [ts_sym_null] = SHIFT(163), - [ts_sym_number] = SHIFT(163), - [ts_sym_object] = SHIFT(163), - [ts_sym_string] = SHIFT(163), - [ts_sym_true] = SHIFT(163), - [ts_aux_sym_token10] = SHIFT(187), - [ts_aux_sym_token5] = SHIFT(192), - }, - - [213] = { - [ts_aux_sym_token4] = SHIFT(214), - }, - - [214] = { - [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(211), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(215), - [ts_sym_expression] = SHIFT(215), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(218), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(219), - [ts_sym_statement_block] = SHIFT(218), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(222), - }, - - [215] = { - [ts_sym__terminator] = SHIFT(216), - [ts_aux_sym_token1] = SHIFT(217), - [ts_aux_sym_token2] = SHIFT(217), - }, - - [216] = { [ts_sym__else] = REDUCE(ts_sym_statement, 2), [ts_sym__function] = REDUCE(ts_sym_statement, 2), [ts_sym__if] = REDUCE(ts_sym_statement, 2), @@ -3178,12 +3112,12 @@ PARSE_TABLE = { [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), + [ts_aux_sym_token3] = REDUCE(ts_sym_statement, 2), + [ts_aux_sym_token4] = REDUCE(ts_sym_statement, 2), + [ts_aux_sym_token9] = REDUCE(ts_sym_statement, 2), }, - [217] = { + [195] = { [ts_sym__else] = REDUCE(ts_sym__terminator, 1), [ts_sym__function] = REDUCE(ts_sym__terminator, 1), [ts_sym__if] = REDUCE(ts_sym__terminator, 1), @@ -3194,12 +3128,20 @@ PARSE_TABLE = { [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), + [ts_aux_sym_token3] = REDUCE(ts_sym__terminator, 1), + [ts_aux_sym_token4] = REDUCE(ts_sym__terminator, 1), + [ts_aux_sym_token9] = REDUCE(ts_sym__terminator, 1), }, - [218] = { + [196] = { + [ts_sym__terminator] = SHIFT(194), + [ts_aux_sym_token1] = SHIFT(16), + [ts_aux_sym_token11] = SHIFT(195), + [ts_aux_sym_token12] = SHIFT(195), + [ts_aux_sym_token7] = SHIFT(25), + }, + + [197] = { [ts_sym__else] = REDUCE(ts_sym_statement, 1), [ts_sym__function] = REDUCE(ts_sym_statement, 1), [ts_sym__if] = REDUCE(ts_sym_statement, 1), @@ -3210,13 +3152,13 @@ PARSE_TABLE = { [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), + [ts_aux_sym_token3] = REDUCE(ts_sym_statement, 1), + [ts_aux_sym_token4] = REDUCE(ts_sym_statement, 1), + [ts_aux_sym_token9] = REDUCE(ts_sym_statement, 1), }, - [219] = { - [ts_sym__else] = SHIFT(220), + [198] = { + [ts_sym__else] = SHIFT(199), [ts_sym__function] = REDUCE(ts_sym_if_statement, 5), [ts_sym__if] = REDUCE(ts_sym_if_statement, 5), [ts_sym__var] = REDUCE(ts_sym_if_statement, 5), @@ -3226,36 +3168,37 @@ PARSE_TABLE = { [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), + [ts_aux_sym_token3] = REDUCE(ts_sym_if_statement, 5), + [ts_aux_sym_token4] = REDUCE(ts_sym_if_statement, 5), + [ts_aux_sym_token9] = REDUCE(ts_sym_if_statement, 5), }, - [220] = { + [199] = { [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(211), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(215), - [ts_sym_expression] = SHIFT(215), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(218), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(221), - [ts_sym_statement_block] = SHIFT(218), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(222), + [ts_sym__if] = SHIFT(189), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(193), + [ts_sym_expression] = SHIFT(196), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(197), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(200), + [ts_sym_statement_block] = SHIFT(197), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_token3] = SHIFT(201), + [ts_aux_sym_token9] = SHIFT(40), }, - [221] = { + [200] = { [ts_sym__else] = REDUCE(ts_sym_if_statement, 7), [ts_sym__function] = REDUCE(ts_sym_if_statement, 7), [ts_sym__if] = REDUCE(ts_sym_if_statement, 7), @@ -3266,43 +3209,44 @@ PARSE_TABLE = { [ts_sym_number] = REDUCE(ts_sym_if_statement, 7), [ts_sym_string] = REDUCE(ts_sym_if_statement, 7), [ts_sym_true] = REDUCE(ts_sym_if_statement, 7), - [ts_aux_sym_token10] = REDUCE(ts_sym_if_statement, 7), - [ts_aux_sym_token5] = REDUCE(ts_sym_if_statement, 7), - [ts_builtin_sym_end] = REDUCE(ts_sym_if_statement, 7), + [ts_aux_sym_token3] = REDUCE(ts_sym_if_statement, 7), + [ts_aux_sym_token4] = REDUCE(ts_sym_if_statement, 7), + [ts_aux_sym_token9] = REDUCE(ts_sym_if_statement, 7), }, - [222] = { + [201] = { [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(6), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(26), - [ts_sym_expression] = SHIFT(26), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(29), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(30), - [ts_sym_statement_block] = SHIFT(29), - [ts_sym_string] = SHIFT(41), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_repeat_helper2] = SHIFT(223), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(40), - [ts_aux_sym_token6] = SHIFT(145), - [ts_builtin_sym_error] = SHIFT(146), + [ts_sym__if] = SHIFT(5), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(21), + [ts_sym_expression] = SHIFT(24), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(32), + [ts_sym_if_statement] = SHIFT(28), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(29), + [ts_sym_statement_block] = SHIFT(28), + [ts_sym_string] = SHIFT(158), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_repeat_helper2] = SHIFT(202), + [ts_aux_sym_token3] = SHIFT(31), + [ts_aux_sym_token4] = SHIFT(161), + [ts_aux_sym_token9] = SHIFT(40), + [ts_builtin_sym_error] = SHIFT(162), }, - [223] = { - [ts_aux_sym_token6] = SHIFT(224), + [202] = { + [ts_aux_sym_token4] = SHIFT(203), }, - [224] = { + [203] = { [ts_sym__else] = REDUCE(ts_sym_statement_block, 3), [ts_sym__function] = REDUCE(ts_sym_statement_block, 3), [ts_sym__if] = REDUCE(ts_sym_statement_block, 3), @@ -3313,13 +3257,150 @@ PARSE_TABLE = { [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), + [ts_aux_sym_token3] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token4] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token9] = REDUCE(ts_sym_statement_block, 3), }, - [225] = { - [ts_sym__else] = SHIFT(226), + [204] = { + [ts_sym_identifier] = SHIFT(205), + }, + + [205] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_property_access, 3), + [ts_aux_sym_token2] = REDUCE(ts_sym_property_access, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_property_access, 3), + }, + + [206] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token2] = REDUCE(ts_sym_expression, 1), + [ts_aux_sym_token7] = REDUCE(ts_sym_expression, 1), + }, + + [207] = { + [ts_sym_identifier] = SHIFT(208), + [ts_sym_string] = SHIFT(208), + [ts_aux_sym_token4] = SHIFT(213), + [ts_builtin_sym_error] = SHIFT(214), + }, + + [208] = { + [ts_aux_sym_token8] = SHIFT(209), + }, + + [209] = { + [ts_sym__function] = SHIFT(34), + [ts_sym_array] = SHIFT(80), + [ts_sym_expression] = SHIFT(210), + [ts_sym_false] = SHIFT(80), + [ts_sym_function_call] = SHIFT(112), + [ts_sym_function_expression] = SHIFT(112), + [ts_sym_identifier] = SHIFT(112), + [ts_sym_literal] = SHIFT(112), + [ts_sym_null] = SHIFT(80), + [ts_sym_number] = SHIFT(80), + [ts_sym_object] = SHIFT(80), + [ts_sym_property_access] = SHIFT(112), + [ts_sym_string] = SHIFT(80), + [ts_sym_true] = SHIFT(80), + [ts_aux_sym_token3] = SHIFT(113), + [ts_aux_sym_token9] = SHIFT(119), + }, + + [210] = { + [ts_aux_sym_repeat_helper5] = SHIFT(211), + [ts_aux_sym_token1] = SHIFT(84), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper5, 0), + [ts_aux_sym_token6] = SHIFT(105), + [ts_aux_sym_token7] = SHIFT(110), + }, + + [211] = { + [ts_aux_sym_token4] = SHIFT(212), + }, + + [212] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token2] = REDUCE(ts_sym_object, 6), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 6), + }, + + [213] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token2] = REDUCE(ts_sym_object, 2), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 2), + }, + + [214] = { + [ts_aux_sym_repeat_helper5] = SHIFT(215), + [ts_aux_sym_token4] = REDUCE(ts_aux_sym_repeat_helper5, 0), + [ts_aux_sym_token6] = SHIFT(105), + }, + + [215] = { + [ts_aux_sym_token4] = SHIFT(216), + }, + + [216] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token2] = REDUCE(ts_sym_object, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_object, 4), + }, + + [217] = { + [ts_sym__function] = SHIFT(41), + [ts_sym_array] = SHIFT(58), + [ts_sym_expression] = SHIFT(218), + [ts_sym_false] = SHIFT(58), + [ts_sym_function_call] = SHIFT(98), + [ts_sym_function_expression] = SHIFT(98), + [ts_sym_identifier] = SHIFT(98), + [ts_sym_literal] = SHIFT(98), + [ts_sym_null] = SHIFT(58), + [ts_sym_number] = SHIFT(58), + [ts_sym_object] = SHIFT(58), + [ts_sym_property_access] = SHIFT(98), + [ts_sym_string] = SHIFT(58), + [ts_sym_true] = SHIFT(58), + [ts_aux_sym_token10] = SHIFT(221), + [ts_aux_sym_token3] = SHIFT(99), + [ts_aux_sym_token9] = SHIFT(124), + [ts_builtin_sym_error] = SHIFT(222), + }, + + [218] = { + [ts_aux_sym_repeat_helper6] = SHIFT(219), + [ts_aux_sym_token1] = SHIFT(62), + [ts_aux_sym_token10] = REDUCE(ts_aux_sym_repeat_helper6, 0), + [ts_aux_sym_token6] = SHIFT(93), + [ts_aux_sym_token7] = SHIFT(96), + }, + + [219] = { + [ts_aux_sym_token10] = SHIFT(220), + }, + + [220] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token2] = REDUCE(ts_sym_array, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_array, 4), + }, + + [221] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token2] = REDUCE(ts_sym_array, 2), + [ts_aux_sym_token7] = REDUCE(ts_sym_array, 2), + }, + + [222] = { + [ts_aux_sym_repeat_helper6] = SHIFT(219), + [ts_aux_sym_token10] = REDUCE(ts_aux_sym_repeat_helper6, 0), + [ts_aux_sym_token6] = SHIFT(93), + }, + + [223] = { + [ts_sym__else] = SHIFT(224), [ts_sym__function] = REDUCE(ts_sym_if_statement, 5), [ts_sym__if] = REDUCE(ts_sym_if_statement, 5), [ts_sym__var] = REDUCE(ts_sym_if_statement, 5), @@ -3329,87 +3410,37 @@ PARSE_TABLE = { [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), + [ts_aux_sym_token3] = REDUCE(ts_sym_if_statement, 5), + [ts_aux_sym_token4] = REDUCE(ts_sym_if_statement, 5), + [ts_aux_sym_token9] = REDUCE(ts_sym_if_statement, 5), }, - [226] = { + [224] = { [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(207), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(227), - [ts_sym_expression] = SHIFT(227), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(230), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(231), - [ts_sym_statement_block] = SHIFT(230), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(232), + [ts_sym__if] = SHIFT(5), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(21), + [ts_sym_expression] = SHIFT(24), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(28), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(225), + [ts_sym_statement_block] = SHIFT(28), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_token3] = SHIFT(31), + [ts_aux_sym_token9] = SHIFT(40), }, - [227] = { - [ts_sym__terminator] = SHIFT(228), - [ts_aux_sym_token1] = SHIFT(229), - [ts_aux_sym_token2] = SHIFT(229), - }, - - [228] = { - [ts_sym__function] = REDUCE(ts_sym_statement, 2), - [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), - }, - - [229] = { - [ts_sym__function] = REDUCE(ts_sym__terminator, 1), - [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), - }, - - [230] = { - [ts_sym__function] = REDUCE(ts_sym_statement, 1), - [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), - }, - - [231] = { + [225] = { [ts_sym__function] = REDUCE(ts_sym_if_statement, 7), [ts_sym__if] = REDUCE(ts_sym_if_statement, 7), [ts_sym__var] = REDUCE(ts_sym_if_statement, 7), @@ -3419,43 +3450,300 @@ PARSE_TABLE = { [ts_sym_number] = REDUCE(ts_sym_if_statement, 7), [ts_sym_string] = REDUCE(ts_sym_if_statement, 7), [ts_sym_true] = REDUCE(ts_sym_if_statement, 7), - [ts_aux_sym_token10] = REDUCE(ts_sym_if_statement, 7), - [ts_aux_sym_token5] = REDUCE(ts_sym_if_statement, 7), - [ts_builtin_sym_end] = REDUCE(ts_sym_if_statement, 7), + [ts_aux_sym_token3] = REDUCE(ts_sym_if_statement, 7), + [ts_aux_sym_token4] = REDUCE(ts_sym_if_statement, 7), + [ts_aux_sym_token9] = REDUCE(ts_sym_if_statement, 7), + }, + + [226] = { + [ts_aux_sym_token4] = SHIFT(227), + }, + + [227] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token11] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token12] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token7] = REDUCE(ts_sym_statement_block, 3), + }, + + [228] = { + [ts_sym_formal_parameters] = SHIFT(229), + [ts_aux_sym_token1] = SHIFT(50), + }, + + [229] = { + [ts_sym_statement_block] = SHIFT(230), + [ts_aux_sym_token3] = SHIFT(4), + }, + + [230] = { + [ts_aux_sym_token1] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token11] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token12] = REDUCE(ts_sym_function_expression, 4), + [ts_aux_sym_token7] = REDUCE(ts_sym_function_expression, 4), + }, + + [231] = { + [ts_aux_sym_token1] = SHIFT(232), }, [232] = { - [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(6), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(26), - [ts_sym_expression] = SHIFT(26), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(29), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(30), - [ts_sym_statement_block] = SHIFT(29), - [ts_sym_string] = SHIFT(41), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_repeat_helper2] = SHIFT(233), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(40), - [ts_aux_sym_token6] = SHIFT(145), - [ts_builtin_sym_error] = SHIFT(146), + [ts_sym__function] = SHIFT(7), + [ts_sym_array] = SHIFT(181), + [ts_sym_expression] = SHIFT(233), + [ts_sym_false] = SHIFT(181), + [ts_sym_function_call] = SHIFT(206), + [ts_sym_function_expression] = SHIFT(206), + [ts_sym_identifier] = SHIFT(206), + [ts_sym_literal] = SHIFT(206), + [ts_sym_null] = SHIFT(181), + [ts_sym_number] = SHIFT(181), + [ts_sym_object] = SHIFT(181), + [ts_sym_property_access] = SHIFT(206), + [ts_sym_string] = SHIFT(181), + [ts_sym_true] = SHIFT(181), + [ts_aux_sym_token3] = SHIFT(207), + [ts_aux_sym_token9] = SHIFT(217), }, [233] = { - [ts_aux_sym_token6] = SHIFT(234), + [ts_aux_sym_token1] = SHIFT(183), + [ts_aux_sym_token2] = SHIFT(234), + [ts_aux_sym_token7] = SHIFT(204), }, [234] = { + [ts_sym__function] = SHIFT(1), + [ts_sym__if] = SHIFT(235), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(239), + [ts_sym_expression] = SHIFT(242), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(243), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(250), + [ts_sym_statement_block] = SHIFT(243), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_token3] = SHIFT(247), + [ts_aux_sym_token9] = SHIFT(40), + }, + + [235] = { + [ts_aux_sym_token1] = SHIFT(236), + }, + + [236] = { + [ts_sym__function] = SHIFT(7), + [ts_sym_array] = SHIFT(181), + [ts_sym_expression] = SHIFT(237), + [ts_sym_false] = SHIFT(181), + [ts_sym_function_call] = SHIFT(206), + [ts_sym_function_expression] = SHIFT(206), + [ts_sym_identifier] = SHIFT(206), + [ts_sym_literal] = SHIFT(206), + [ts_sym_null] = SHIFT(181), + [ts_sym_number] = SHIFT(181), + [ts_sym_object] = SHIFT(181), + [ts_sym_property_access] = SHIFT(206), + [ts_sym_string] = SHIFT(181), + [ts_sym_true] = SHIFT(181), + [ts_aux_sym_token3] = SHIFT(207), + [ts_aux_sym_token9] = SHIFT(217), + }, + + [237] = { + [ts_aux_sym_token1] = SHIFT(183), + [ts_aux_sym_token2] = SHIFT(238), + [ts_aux_sym_token7] = SHIFT(204), + }, + + [238] = { + [ts_sym__function] = SHIFT(1), + [ts_sym__if] = SHIFT(235), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(239), + [ts_sym_expression] = SHIFT(242), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(243), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(244), + [ts_sym_statement_block] = SHIFT(243), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_token3] = SHIFT(247), + [ts_aux_sym_token9] = SHIFT(40), + }, + + [239] = { + [ts_sym__terminator] = SHIFT(240), + [ts_aux_sym_token11] = SHIFT(241), + [ts_aux_sym_token12] = SHIFT(241), + }, + + [240] = { + [ts_sym__else] = REDUCE(ts_sym_statement, 2), + [ts_sym__function] = REDUCE(ts_sym_statement, 2), + [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_token3] = REDUCE(ts_sym_statement, 2), + [ts_aux_sym_token9] = REDUCE(ts_sym_statement, 2), + [ts_builtin_sym_end] = REDUCE(ts_sym_statement, 2), + }, + + [241] = { + [ts_sym__else] = REDUCE(ts_sym__terminator, 1), + [ts_sym__function] = REDUCE(ts_sym__terminator, 1), + [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_token3] = REDUCE(ts_sym__terminator, 1), + [ts_aux_sym_token9] = REDUCE(ts_sym__terminator, 1), + [ts_builtin_sym_end] = REDUCE(ts_sym__terminator, 1), + }, + + [242] = { + [ts_sym__terminator] = SHIFT(240), + [ts_aux_sym_token1] = SHIFT(16), + [ts_aux_sym_token11] = SHIFT(241), + [ts_aux_sym_token12] = SHIFT(241), + [ts_aux_sym_token7] = SHIFT(25), + }, + + [243] = { + [ts_sym__else] = REDUCE(ts_sym_statement, 1), + [ts_sym__function] = REDUCE(ts_sym_statement, 1), + [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_token3] = REDUCE(ts_sym_statement, 1), + [ts_aux_sym_token9] = REDUCE(ts_sym_statement, 1), + [ts_builtin_sym_end] = REDUCE(ts_sym_statement, 1), + }, + + [244] = { + [ts_sym__else] = SHIFT(245), + [ts_sym__function] = REDUCE(ts_sym_if_statement, 5), + [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_token3] = REDUCE(ts_sym_if_statement, 5), + [ts_aux_sym_token9] = REDUCE(ts_sym_if_statement, 5), + [ts_builtin_sym_end] = REDUCE(ts_sym_if_statement, 5), + }, + + [245] = { + [ts_sym__function] = SHIFT(1), + [ts_sym__if] = SHIFT(235), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(239), + [ts_sym_expression] = SHIFT(242), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(243), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(246), + [ts_sym_statement_block] = SHIFT(243), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_token3] = SHIFT(247), + [ts_aux_sym_token9] = SHIFT(40), + }, + + [246] = { + [ts_sym__else] = REDUCE(ts_sym_if_statement, 7), + [ts_sym__function] = REDUCE(ts_sym_if_statement, 7), + [ts_sym__if] = REDUCE(ts_sym_if_statement, 7), + [ts_sym__var] = REDUCE(ts_sym_if_statement, 7), + [ts_sym_false] = REDUCE(ts_sym_if_statement, 7), + [ts_sym_identifier] = REDUCE(ts_sym_if_statement, 7), + [ts_sym_null] = REDUCE(ts_sym_if_statement, 7), + [ts_sym_number] = REDUCE(ts_sym_if_statement, 7), + [ts_sym_string] = REDUCE(ts_sym_if_statement, 7), + [ts_sym_true] = REDUCE(ts_sym_if_statement, 7), + [ts_aux_sym_token3] = REDUCE(ts_sym_if_statement, 7), + [ts_aux_sym_token9] = REDUCE(ts_sym_if_statement, 7), + [ts_builtin_sym_end] = REDUCE(ts_sym_if_statement, 7), + }, + + [247] = { + [ts_sym__function] = SHIFT(1), + [ts_sym__if] = SHIFT(5), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(21), + [ts_sym_expression] = SHIFT(24), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(32), + [ts_sym_if_statement] = SHIFT(28), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(29), + [ts_sym_statement_block] = SHIFT(28), + [ts_sym_string] = SHIFT(158), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_repeat_helper2] = SHIFT(248), + [ts_aux_sym_token3] = SHIFT(31), + [ts_aux_sym_token4] = SHIFT(161), + [ts_aux_sym_token9] = SHIFT(40), + [ts_builtin_sym_error] = SHIFT(162), + }, + + [248] = { + [ts_aux_sym_token4] = SHIFT(249), + }, + + [249] = { + [ts_sym__else] = REDUCE(ts_sym_statement_block, 3), [ts_sym__function] = REDUCE(ts_sym_statement_block, 3), [ts_sym__if] = REDUCE(ts_sym_statement_block, 3), [ts_sym__var] = REDUCE(ts_sym_statement_block, 3), @@ -3465,46 +3753,209 @@ PARSE_TABLE = { [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_token3] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token9] = REDUCE(ts_sym_statement_block, 3), [ts_builtin_sym_end] = REDUCE(ts_sym_statement_block, 3), }, - [235] = { + [250] = { + [ts_sym__else] = SHIFT(251), + [ts_sym__function] = REDUCE(ts_sym_if_statement, 5), + [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_token3] = REDUCE(ts_sym_if_statement, 5), + [ts_aux_sym_token9] = REDUCE(ts_sym_if_statement, 5), + [ts_builtin_sym_end] = REDUCE(ts_sym_if_statement, 5), + }, + + [251] = { + [ts_sym__function] = SHIFT(1), + [ts_sym__if] = SHIFT(231), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(252), + [ts_sym_expression] = SHIFT(255), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(256), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(257), + [ts_sym_statement_block] = SHIFT(256), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_token3] = SHIFT(258), + [ts_aux_sym_token9] = SHIFT(40), + }, + + [252] = { + [ts_sym__terminator] = SHIFT(253), + [ts_aux_sym_token11] = SHIFT(254), + [ts_aux_sym_token12] = SHIFT(254), + }, + + [253] = { + [ts_sym__function] = REDUCE(ts_sym_statement, 2), + [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_token3] = REDUCE(ts_sym_statement, 2), + [ts_aux_sym_token9] = REDUCE(ts_sym_statement, 2), + [ts_builtin_sym_end] = REDUCE(ts_sym_statement, 2), + }, + + [254] = { + [ts_sym__function] = REDUCE(ts_sym__terminator, 1), + [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_token3] = REDUCE(ts_sym__terminator, 1), + [ts_aux_sym_token9] = REDUCE(ts_sym__terminator, 1), + [ts_builtin_sym_end] = REDUCE(ts_sym__terminator, 1), + }, + + [255] = { + [ts_sym__terminator] = SHIFT(253), + [ts_aux_sym_token1] = SHIFT(16), + [ts_aux_sym_token11] = SHIFT(254), + [ts_aux_sym_token12] = SHIFT(254), + [ts_aux_sym_token7] = SHIFT(25), + }, + + [256] = { + [ts_sym__function] = REDUCE(ts_sym_statement, 1), + [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_token3] = REDUCE(ts_sym_statement, 1), + [ts_aux_sym_token9] = REDUCE(ts_sym_statement, 1), + [ts_builtin_sym_end] = REDUCE(ts_sym_statement, 1), + }, + + [257] = { + [ts_sym__function] = REDUCE(ts_sym_if_statement, 7), + [ts_sym__if] = REDUCE(ts_sym_if_statement, 7), + [ts_sym__var] = REDUCE(ts_sym_if_statement, 7), + [ts_sym_false] = REDUCE(ts_sym_if_statement, 7), + [ts_sym_identifier] = REDUCE(ts_sym_if_statement, 7), + [ts_sym_null] = REDUCE(ts_sym_if_statement, 7), + [ts_sym_number] = REDUCE(ts_sym_if_statement, 7), + [ts_sym_string] = REDUCE(ts_sym_if_statement, 7), + [ts_sym_true] = REDUCE(ts_sym_if_statement, 7), + [ts_aux_sym_token3] = REDUCE(ts_sym_if_statement, 7), + [ts_aux_sym_token9] = REDUCE(ts_sym_if_statement, 7), + [ts_builtin_sym_end] = REDUCE(ts_sym_if_statement, 7), + }, + + [258] = { + [ts_sym__function] = SHIFT(1), + [ts_sym__if] = SHIFT(5), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(21), + [ts_sym_expression] = SHIFT(24), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(32), + [ts_sym_if_statement] = SHIFT(28), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(29), + [ts_sym_statement_block] = SHIFT(28), + [ts_sym_string] = SHIFT(158), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_repeat_helper2] = SHIFT(259), + [ts_aux_sym_token3] = SHIFT(31), + [ts_aux_sym_token4] = SHIFT(161), + [ts_aux_sym_token9] = SHIFT(40), + [ts_builtin_sym_error] = SHIFT(162), + }, + + [259] = { + [ts_aux_sym_token4] = SHIFT(260), + }, + + [260] = { + [ts_sym__function] = REDUCE(ts_sym_statement_block, 3), + [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_token3] = REDUCE(ts_sym_statement_block, 3), + [ts_aux_sym_token9] = REDUCE(ts_sym_statement_block, 3), + [ts_builtin_sym_end] = REDUCE(ts_sym_statement_block, 3), + }, + + [261] = { [ts_builtin_sym_end] = ACCEPT_INPUT(), }, - [236] = { + [262] = { [ts_sym__function] = SHIFT(1), - [ts_sym__if] = SHIFT(207), - [ts_sym__var] = SHIFT(13), - [ts_sym_array] = SHIFT(16), - [ts_sym_assignment] = SHIFT(227), - [ts_sym_expression] = SHIFT(227), - [ts_sym_false] = SHIFT(16), - [ts_sym_function_call] = SHIFT(18), - [ts_sym_function_expression] = SHIFT(18), - [ts_sym_identifier] = SHIFT(19), - [ts_sym_if_statement] = SHIFT(230), - [ts_sym_literal] = SHIFT(18), - [ts_sym_null] = SHIFT(16), - [ts_sym_number] = SHIFT(16), - [ts_sym_object] = SHIFT(16), - [ts_sym_statement] = SHIFT(236), - [ts_sym_statement_block] = SHIFT(230), - [ts_sym_string] = SHIFT(16), - [ts_sym_true] = SHIFT(16), - [ts_aux_sym_repeat_helper1] = SHIFT(237), - [ts_aux_sym_token10] = SHIFT(32), - [ts_aux_sym_token5] = SHIFT(232), + [ts_sym__if] = SHIFT(231), + [ts_sym__var] = SHIFT(11), + [ts_sym_array] = SHIFT(14), + [ts_sym_assignment] = SHIFT(252), + [ts_sym_expression] = SHIFT(255), + [ts_sym_false] = SHIFT(14), + [ts_sym_function_call] = SHIFT(27), + [ts_sym_function_expression] = SHIFT(27), + [ts_sym_identifier] = SHIFT(27), + [ts_sym_if_statement] = SHIFT(256), + [ts_sym_literal] = SHIFT(27), + [ts_sym_null] = SHIFT(14), + [ts_sym_number] = SHIFT(14), + [ts_sym_object] = SHIFT(14), + [ts_sym_property_access] = SHIFT(27), + [ts_sym_statement] = SHIFT(262), + [ts_sym_statement_block] = SHIFT(256), + [ts_sym_string] = SHIFT(14), + [ts_sym_true] = SHIFT(14), + [ts_aux_sym_repeat_helper1] = SHIFT(263), + [ts_aux_sym_token3] = SHIFT(258), + [ts_aux_sym_token9] = SHIFT(40), [ts_builtin_sym_end] = REDUCE(ts_aux_sym_repeat_helper1, 0), }, - [237] = { + [263] = { [ts_builtin_sym_end] = REDUCE(ts_aux_sym_repeat_helper1, 2), }, - [238] = { + [264] = { [ts_builtin_sym_end] = REDUCE(ts_sym_program, 1), }, }; diff --git a/spec/compiler/build_tables/first_set_spec.cc b/spec/compiler/build_tables/first_set_spec.cc index 0657ccfe..3a92be7b 100644 --- a/spec/compiler/build_tables/first_set_spec.cc +++ b/spec/compiler/build_tables/first_set_spec.cc @@ -68,6 +68,21 @@ describe("computing FIRST sets", []() { }))); }); }); + + describe("when there are left-recursive rules", [&]() { + it("terminates", [&]() { + Grammar grammar({ + { "expression", choice({ + seq({ sym("expression"), sym("x") }), + sym("y"), + }) }, + }); + + AssertThat(first_set(sym("expression"), grammar), Equals(set({ + Symbol("y") + }))); + }); + }); }); -END_TEST \ No newline at end of file +END_TEST diff --git a/spec/compiler/build_tables/rule_can_be_blank_spec.cc b/spec/compiler/build_tables/rule_can_be_blank_spec.cc index e6eb239f..07fa8dec 100644 --- a/spec/compiler/build_tables/rule_can_be_blank_spec.cc +++ b/spec/compiler/build_tables/rule_can_be_blank_spec.cc @@ -1,5 +1,6 @@ #include "compiler_spec_helper.h" #include "compiler/build_tables/rule_can_be_blank.h" +#include "compiler/prepared_grammar.h" using namespace rules; using build_tables::rule_can_be_blank; @@ -7,21 +8,63 @@ using build_tables::rule_can_be_blank; START_TEST describe("checking if rules can be blank", [&]() { - it("handles sequences", [&]() { - rule_ptr rule = seq({ - choice({ - str("x"), - blank(), - }), - str("y"), - }); + rule_ptr rule; - AssertThat(rule_can_be_blank(rule), Equals(false)); + it("returns false for basic rules", [&]() { + AssertThat(rule_can_be_blank(sym("x")), IsFalse()); + AssertThat(rule_can_be_blank(str("x")), IsFalse()); + AssertThat(rule_can_be_blank(pattern("x")), IsFalse()); + }); + + it("returns true for blanks", [&]() { + AssertThat(rule_can_be_blank(blank()), IsTrue()); }); it("returns true for repeats", [&]() { - rule_ptr rule = repeat(str("x")); - AssertThat(rule_can_be_blank(rule), Equals(true)); + AssertThat(rule_can_be_blank(repeat(str("x"))), IsTrue()); + }); + + it("returns true for choices iff one or more sides can be blank", [&]() { + rule = choice({ sym("x"), blank() }); + AssertThat(rule_can_be_blank(rule), IsTrue()); + + rule = choice({ blank(), sym("x") }); + AssertThat(rule_can_be_blank(rule), IsTrue()); + + rule = choice({ sym("x"), sym("y") }); + AssertThat(rule_can_be_blank(rule), IsFalse()); + }); + + it("returns true for sequences iff both sides can be blank", [&]() { + rule = seq({ blank(), str("x") }); + AssertThat(rule_can_be_blank(rule), IsFalse()); + + rule = seq({ str("x"), blank() }); + AssertThat(rule_can_be_blank(rule), IsFalse()); + + rule = seq({ blank(), choice({ sym("x"), blank() }) }); + AssertThat(rule_can_be_blank(rule), IsTrue()); + }); + + describe("checking recursively (by expanding non-terminals)", [&]() { + PreparedGrammar grammar({ + { "A", choice({ + seq({ sym("A"), sym("x") }), + blank() }) }, + { "B", choice({ + seq({ sym("B"), sym("y") }), + sym("z") }) }, + }, {}); + + it("terminates for left-recursive rules that can be blank", [&]() { + rule = sym("A"); + AssertThat(rule_can_be_blank(rule, grammar), IsTrue()); + }); + + it("terminates for left-recursive rules that can't be blank", [&]() { + rule = sym("B"); + AssertThat(rule_can_be_blank(rule, grammar), IsFalse()); + }); }); }); diff --git a/spec/runtime/languages/javascript/main.txt b/spec/runtime/languages/javascript/main.txt index d79b9b0c..bb23ea91 100644 --- a/spec/runtime/languages/javascript/main.txt +++ b/spec/runtime/languages/javascript/main.txt @@ -56,15 +56,21 @@ else { ========================================== parses named functions ========================================== -function doThis(argA, argB) { - var x = argA; +var x = { + theMethod: function(argA, argB) { + var x = argA; + } }; -doThis(5, 6); +x.theMethod(5, 6); --- (program - (statement (function_expression + (statement (assignment (identifier) - (formal_parameters (identifier) (identifier)) - (statement_block (statement (assignment (identifier) (identifier)))))) - (statement (function_call (identifier) (number) (number)))) \ No newline at end of file + (object (identifier) (function_expression + (formal_parameters (identifier) (identifier)) + (statement_block (statement (assignment (identifier) (identifier)))))))) + (statement (function_call + (property_access (identifier) (identifier)) + (number) (number)))) + diff --git a/src/compiler/build_tables/first_set.cc b/src/compiler/build_tables/first_set.cc index 2a8d722d..fceb9cc3 100644 --- a/src/compiler/build_tables/first_set.cc +++ b/src/compiler/build_tables/first_set.cc @@ -19,14 +19,19 @@ namespace tree_sitter { class FirstSet : public rules::RuleFn> { const PreparedGrammar grammar; + set visited_symbols; public: explicit FirstSet(const PreparedGrammar &grammar) : grammar(grammar) {} void visit(const Symbol *rule) { - if (grammar.has_definition(*rule)) { - value = apply(grammar.rule(*rule)); - } else { - value = set({ *rule }); + if (visited_symbols.find(*rule) == visited_symbols.end()) { + visited_symbols.insert(*rule); + + if (grammar.has_definition(*rule)) { + value = apply(grammar.rule(*rule)); + } else { + value = set({ *rule }); + } } } diff --git a/src/compiler/build_tables/rule_can_be_blank.cc b/src/compiler/build_tables/rule_can_be_blank.cc index 652d2995..1848efb2 100644 --- a/src/compiler/build_tables/rule_can_be_blank.cc +++ b/src/compiler/build_tables/rule_can_be_blank.cc @@ -1,4 +1,5 @@ #include "compiler/build_tables/rule_can_be_blank.h" +#include #include "tree_sitter/compiler.h" #include "compiler/prepared_grammar.h" #include "compiler/rules/symbol.h" @@ -8,6 +9,8 @@ #include "compiler/rules/blank.h" namespace tree_sitter { + using std::set; + namespace build_tables { class CanBeBlank : public rules::RuleFn { protected: @@ -34,13 +37,17 @@ namespace tree_sitter { class CanBeBlankRecursive : public CanBeBlank { const PreparedGrammar grammar; + set visited_symbols; using CanBeBlank::visit; public: explicit CanBeBlankRecursive(const PreparedGrammar &grammar) : grammar(grammar) {} void visit(const rules::Symbol *rule) { - value = grammar.has_definition(*rule) && apply(grammar.rule(*rule)); + if (visited_symbols.find(*rule) == visited_symbols.end()) { + visited_symbols.insert(*rule); + value = grammar.has_definition(*rule) && apply(grammar.rule(*rule)); + } } };