Improve trees generated by arithmetic grammar
This work should inform how to implement operator precedence helper functions
This commit is contained in:
parent
7adb0bf34f
commit
99817a38c1
6 changed files with 1666 additions and 719 deletions
|
|
@ -3,30 +3,42 @@
|
|||
namespace tree_sitter_examples {
|
||||
using tree_sitter::Grammar;
|
||||
using namespace tree_sitter::rules;
|
||||
using std::string;
|
||||
|
||||
static rule_ptr infix_op(string op, string rule_name) {
|
||||
return choice({
|
||||
seq({
|
||||
sym(rule_name),
|
||||
str(op),
|
||||
sym(rule_name) }),
|
||||
sym(rule_name) });
|
||||
}
|
||||
|
||||
extern const Grammar arithmetic({
|
||||
{ "expression", choice({
|
||||
seq({
|
||||
sym("term"),
|
||||
sym("plus"),
|
||||
sym("term") }),
|
||||
sym("term") }) },
|
||||
{ "term", choice({
|
||||
seq({
|
||||
sym("factor"),
|
||||
sym("times"),
|
||||
sym("factor") }),
|
||||
sym("factor") }) },
|
||||
{ "factor", choice({
|
||||
sym("variable"),
|
||||
sym("sum"),
|
||||
sym("difference") }) },
|
||||
{ "_operand1", choice({
|
||||
sym("product"),
|
||||
sym("quotient") }) },
|
||||
{ "_operand2", choice({
|
||||
sym("exponent") }) },
|
||||
{ "_operand3", choice({
|
||||
sym("number"),
|
||||
seq({
|
||||
str("("),
|
||||
err(sym("expression")),
|
||||
str(")") }) }) },
|
||||
{ "plus", str("+") },
|
||||
{ "times", str("*") },
|
||||
sym("variable"),
|
||||
sym("grouping") }) },
|
||||
{ "grouping", seq({
|
||||
str("("),
|
||||
err(sym("expression")),
|
||||
str(")") }) },
|
||||
|
||||
{ "sum", infix_op("+", "_operand1") },
|
||||
{ "difference", infix_op("-", "_operand1") },
|
||||
{ "product", infix_op("*", "_operand2") },
|
||||
{ "quotient", infix_op("/", "_operand2") },
|
||||
{ "exponent", infix_op("^", "_operand3") },
|
||||
|
||||
{ "number", pattern("\\d+") },
|
||||
{ "variable", pattern("[a-zA-Z]+") },
|
||||
{ "variable", pattern("\\a[\\w_]*") },
|
||||
});
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -649,52 +649,38 @@ LEX_FN() {
|
|||
ADVANCE(54);
|
||||
if (lookahead == 'i')
|
||||
ADVANCE(55);
|
||||
if ('j' <= lookahead && lookahead <= 'i')
|
||||
ADVANCE(43);
|
||||
if (lookahead == 'm')
|
||||
ADVANCE(64);
|
||||
if ('n' <= lookahead && lookahead <= 'm')
|
||||
ADVANCE(84);
|
||||
if (lookahead == 's')
|
||||
ADVANCE(69);
|
||||
if ('t' <= lookahead && lookahead <= 's')
|
||||
ADVANCE(85);
|
||||
LEX_ERROR();
|
||||
case 84:
|
||||
if (lookahead == 'a')
|
||||
ADVANCE(65);
|
||||
LEX_ERROR();
|
||||
case 85:
|
||||
if (lookahead == 't')
|
||||
ADVANCE(70);
|
||||
LEX_ERROR();
|
||||
case 86:
|
||||
if (lookahead == '[')
|
||||
ADVANCE(54);
|
||||
LEX_ERROR();
|
||||
case 85:
|
||||
if (lookahead == ')')
|
||||
ADVANCE(32);
|
||||
if (lookahead == ',')
|
||||
ADVANCE(53);
|
||||
LEX_ERROR();
|
||||
case 86:
|
||||
if (lookahead == ')')
|
||||
ADVANCE(32);
|
||||
if (lookahead == ',')
|
||||
ADVANCE(53);
|
||||
if (('A' <= lookahead && lookahead <= 'Z') ||
|
||||
('a' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(19);
|
||||
LEX_ERROR();
|
||||
case 87:
|
||||
if (lookahead == ')')
|
||||
ADVANCE(32);
|
||||
if (lookahead == ',')
|
||||
ADVANCE(53);
|
||||
if (('A' <= lookahead && lookahead <= 'Z') ||
|
||||
('a' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(19);
|
||||
LEX_ERROR();
|
||||
case 88:
|
||||
if (lookahead == ')')
|
||||
ADVANCE(32);
|
||||
if (lookahead == ',')
|
||||
ADVANCE(53);
|
||||
if (('A' <= lookahead && lookahead <= 'Z') ||
|
||||
('a' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(19);
|
||||
LEX_ERROR();
|
||||
case 89:
|
||||
if (lookahead == ')')
|
||||
ADVANCE(32);
|
||||
if (('A' <= lookahead && lookahead <= 'Z') ||
|
||||
('a' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(19);
|
||||
LEX_ERROR();
|
||||
case 90:
|
||||
if (lookahead == '(')
|
||||
ADVANCE(35);
|
||||
if (('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -703,7 +689,7 @@ LEX_FN() {
|
|||
if (lookahead == '}')
|
||||
ADVANCE(39);
|
||||
LEX_ERROR();
|
||||
case 91:
|
||||
case 89:
|
||||
if (lookahead == '*')
|
||||
ADVANCE(52);
|
||||
if (lookahead == ',')
|
||||
|
|
@ -718,18 +704,12 @@ LEX_FN() {
|
|||
ADVANCE(54);
|
||||
if (lookahead == 'i')
|
||||
ADVANCE(55);
|
||||
if ('j' <= lookahead && lookahead <= 'i')
|
||||
ADVANCE(43);
|
||||
if (lookahead == 'm')
|
||||
ADVANCE(64);
|
||||
if ('n' <= lookahead && lookahead <= 'm')
|
||||
ADVANCE(84);
|
||||
if (lookahead == 's')
|
||||
ADVANCE(69);
|
||||
if ('t' <= lookahead && lookahead <= 's')
|
||||
ADVANCE(85);
|
||||
LEX_ERROR();
|
||||
case 92:
|
||||
case 90:
|
||||
if (lookahead == ')')
|
||||
ADVANCE(32);
|
||||
if (lookahead == '*')
|
||||
|
|
@ -749,7 +729,7 @@ LEX_FN() {
|
|||
if (lookahead == 's')
|
||||
ADVANCE(69);
|
||||
LEX_ERROR();
|
||||
case 93:
|
||||
case 91:
|
||||
if (lookahead == '(')
|
||||
ADVANCE(35);
|
||||
if (('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -758,73 +738,73 @@ LEX_FN() {
|
|||
if (lookahead == '{')
|
||||
ADVANCE(41);
|
||||
LEX_ERROR();
|
||||
case 94:
|
||||
case 92:
|
||||
if (lookahead == '=')
|
||||
ADVANCE(93);
|
||||
LEX_ERROR();
|
||||
case 93:
|
||||
ACCEPT_TOKEN(ts_aux_sym_token3);
|
||||
case 94:
|
||||
if ('0' <= lookahead && lookahead <= '9')
|
||||
ADVANCE(95);
|
||||
LEX_ERROR();
|
||||
case 95:
|
||||
ACCEPT_TOKEN(ts_aux_sym_token3);
|
||||
if (lookahead == '.')
|
||||
ADVANCE(96);
|
||||
if ('0' <= lookahead && lookahead <= '9')
|
||||
ADVANCE(99);
|
||||
ACCEPT_TOKEN(ts_sym_number);
|
||||
case 96:
|
||||
if ('0' <= lookahead && lookahead <= '9')
|
||||
ADVANCE(97);
|
||||
LEX_ERROR();
|
||||
case 97:
|
||||
if (lookahead == '.')
|
||||
ADVANCE(98);
|
||||
if ('0' <= lookahead && lookahead <= '9')
|
||||
ADVANCE(101);
|
||||
ADVANCE(98);
|
||||
ACCEPT_TOKEN(ts_sym_number);
|
||||
case 98:
|
||||
if ('0' <= lookahead && lookahead <= '9')
|
||||
ADVANCE(99);
|
||||
LEX_ERROR();
|
||||
ADVANCE(98);
|
||||
ACCEPT_TOKEN(ts_sym_number);
|
||||
case 99:
|
||||
if (lookahead == '.')
|
||||
ADVANCE(96);
|
||||
if ('0' <= lookahead && lookahead <= '9')
|
||||
ADVANCE(100);
|
||||
ADVANCE(99);
|
||||
ACCEPT_TOKEN(ts_sym_number);
|
||||
case 100:
|
||||
if ('0' <= lookahead && lookahead <= '9')
|
||||
ADVANCE(100);
|
||||
ACCEPT_TOKEN(ts_sym_number);
|
||||
LEX_ERROR();
|
||||
case 101:
|
||||
if (lookahead == '.')
|
||||
ADVANCE(98);
|
||||
if ('0' <= lookahead && lookahead <= '9')
|
||||
ADVANCE(101);
|
||||
ACCEPT_TOKEN(ts_sym_number);
|
||||
if (lookahead == 'p')
|
||||
ADVANCE(102);
|
||||
LEX_ERROR();
|
||||
case 102:
|
||||
if (lookahead == 'a')
|
||||
ADVANCE(103);
|
||||
LEX_ERROR();
|
||||
case 103:
|
||||
if (lookahead == 'p')
|
||||
if (lookahead == 'c')
|
||||
ADVANCE(104);
|
||||
LEX_ERROR();
|
||||
case 104:
|
||||
if (lookahead == 'a')
|
||||
if (lookahead == 'k')
|
||||
ADVANCE(105);
|
||||
LEX_ERROR();
|
||||
case 105:
|
||||
if (lookahead == 'c')
|
||||
if (lookahead == 'a')
|
||||
ADVANCE(106);
|
||||
LEX_ERROR();
|
||||
case 106:
|
||||
if (lookahead == 'k')
|
||||
if (lookahead == 'g')
|
||||
ADVANCE(107);
|
||||
LEX_ERROR();
|
||||
case 107:
|
||||
if (lookahead == 'a')
|
||||
if (lookahead == 'e')
|
||||
ADVANCE(108);
|
||||
LEX_ERROR();
|
||||
case 108:
|
||||
if (lookahead == 'g')
|
||||
ADVANCE(109);
|
||||
LEX_ERROR();
|
||||
case 109:
|
||||
if (lookahead == 'e')
|
||||
ADVANCE(110);
|
||||
LEX_ERROR();
|
||||
case 110:
|
||||
ACCEPT_TOKEN(ts_sym__package);
|
||||
case 111:
|
||||
case 109:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
|
|
@ -832,11 +812,9 @@ LEX_FN() {
|
|||
('v' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
if (lookahead == 'u')
|
||||
ADVANCE(112);
|
||||
if ('v' <= lookahead && lookahead <= 'u')
|
||||
ADVANCE(2);
|
||||
ADVANCE(110);
|
||||
ACCEPT_TOKEN(ts_sym__identifier);
|
||||
case 112:
|
||||
case 110:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
|
|
@ -844,11 +822,9 @@ LEX_FN() {
|
|||
('o' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
if (lookahead == 'n')
|
||||
ADVANCE(113);
|
||||
if ('o' <= lookahead && lookahead <= 'n')
|
||||
ADVANCE(3);
|
||||
ADVANCE(111);
|
||||
ACCEPT_TOKEN(ts_sym__identifier);
|
||||
case 113:
|
||||
case 111:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
|
|
@ -856,18 +832,16 @@ LEX_FN() {
|
|||
('d' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
if (lookahead == 'c')
|
||||
ADVANCE(114);
|
||||
if ('d' <= lookahead && lookahead <= 'c')
|
||||
ADVANCE(4);
|
||||
ADVANCE(112);
|
||||
ACCEPT_TOKEN(ts_sym__identifier);
|
||||
case 114:
|
||||
case 112:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
('a' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
ACCEPT_TOKEN(ts_sym__func);
|
||||
case 115:
|
||||
case 113:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
|
|
@ -875,7 +849,7 @@ LEX_FN() {
|
|||
('o' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
if (lookahead == 'm')
|
||||
ADVANCE(116);
|
||||
ADVANCE(114);
|
||||
if ('n' <= lookahead && lookahead <= 'm')
|
||||
ADVANCE(6);
|
||||
if (lookahead == 'n')
|
||||
|
|
@ -883,7 +857,7 @@ LEX_FN() {
|
|||
if ('o' <= lookahead && lookahead <= 'n')
|
||||
ADVANCE(44);
|
||||
ACCEPT_TOKEN(ts_sym__identifier);
|
||||
case 116:
|
||||
case 114:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
|
|
@ -891,11 +865,9 @@ LEX_FN() {
|
|||
('q' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
if (lookahead == 'p')
|
||||
ADVANCE(117);
|
||||
if ('q' <= lookahead && lookahead <= 'p')
|
||||
ADVANCE(7);
|
||||
ADVANCE(115);
|
||||
ACCEPT_TOKEN(ts_sym__identifier);
|
||||
case 117:
|
||||
case 115:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
|
|
@ -903,11 +875,9 @@ LEX_FN() {
|
|||
('p' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
if (lookahead == 'o')
|
||||
ADVANCE(118);
|
||||
if ('p' <= lookahead && lookahead <= 'o')
|
||||
ADVANCE(8);
|
||||
ADVANCE(116);
|
||||
ACCEPT_TOKEN(ts_sym__identifier);
|
||||
case 118:
|
||||
case 116:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
|
|
@ -915,11 +885,9 @@ LEX_FN() {
|
|||
('s' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
if (lookahead == 'r')
|
||||
ADVANCE(119);
|
||||
if ('s' <= lookahead && lookahead <= 'r')
|
||||
ADVANCE(9);
|
||||
ADVANCE(117);
|
||||
ACCEPT_TOKEN(ts_sym__identifier);
|
||||
case 119:
|
||||
case 117:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
|
|
@ -927,29 +895,29 @@ LEX_FN() {
|
|||
('u' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
if (lookahead == 't')
|
||||
ADVANCE(120);
|
||||
if ('u' <= lookahead && lookahead <= 't')
|
||||
ADVANCE(10);
|
||||
ADVANCE(118);
|
||||
ACCEPT_TOKEN(ts_sym__identifier);
|
||||
case 120:
|
||||
case 118:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
('a' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
ACCEPT_TOKEN(ts_sym__import);
|
||||
case 121:
|
||||
case 119:
|
||||
if (lookahead == 'a')
|
||||
ADVANCE(65);
|
||||
LEX_ERROR();
|
||||
case 120:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
('b' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
if (lookahead == 'a')
|
||||
ADVANCE(122);
|
||||
if ('b' <= lookahead && lookahead <= 'a')
|
||||
ADVANCE(105);
|
||||
ADVANCE(121);
|
||||
ACCEPT_TOKEN(ts_sym__identifier);
|
||||
case 122:
|
||||
case 121:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
|
|
@ -957,11 +925,9 @@ LEX_FN() {
|
|||
('d' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
if (lookahead == 'c')
|
||||
ADVANCE(123);
|
||||
if ('d' <= lookahead && lookahead <= 'c')
|
||||
ADVANCE(106);
|
||||
ADVANCE(122);
|
||||
ACCEPT_TOKEN(ts_sym__identifier);
|
||||
case 123:
|
||||
case 122:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
|
|
@ -969,22 +935,18 @@ LEX_FN() {
|
|||
('l' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
if (lookahead == 'k')
|
||||
ADVANCE(124);
|
||||
if ('l' <= lookahead && lookahead <= 'k')
|
||||
ADVANCE(107);
|
||||
ADVANCE(123);
|
||||
ACCEPT_TOKEN(ts_sym__identifier);
|
||||
case 124:
|
||||
case 123:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
('b' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
if (lookahead == 'a')
|
||||
ADVANCE(125);
|
||||
if ('b' <= lookahead && lookahead <= 'a')
|
||||
ADVANCE(108);
|
||||
ADVANCE(124);
|
||||
ACCEPT_TOKEN(ts_sym__identifier);
|
||||
case 125:
|
||||
case 124:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
|
|
@ -992,11 +954,9 @@ LEX_FN() {
|
|||
('h' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
if (lookahead == 'g')
|
||||
ADVANCE(126);
|
||||
if ('h' <= lookahead && lookahead <= 'g')
|
||||
ADVANCE(109);
|
||||
ADVANCE(125);
|
||||
ACCEPT_TOKEN(ts_sym__identifier);
|
||||
case 126:
|
||||
case 125:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
|
|
@ -1004,17 +964,19 @@ LEX_FN() {
|
|||
('f' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
if (lookahead == 'e')
|
||||
ADVANCE(127);
|
||||
if ('f' <= lookahead && lookahead <= 'e')
|
||||
ADVANCE(110);
|
||||
ADVANCE(126);
|
||||
ACCEPT_TOKEN(ts_sym__identifier);
|
||||
case 127:
|
||||
case 126:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
('a' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(20);
|
||||
ACCEPT_TOKEN(ts_sym__package);
|
||||
case 127:
|
||||
if (lookahead == 't')
|
||||
ADVANCE(70);
|
||||
LEX_ERROR();
|
||||
case 128:
|
||||
if (('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -1096,9 +1058,9 @@ LEX_FN() {
|
|||
if (lookahead == ',')
|
||||
ADVANCE(53);
|
||||
if ('0' <= lookahead && lookahead <= '9')
|
||||
ADVANCE(97);
|
||||
if (lookahead == '=')
|
||||
ADVANCE(95);
|
||||
if (lookahead == '=')
|
||||
ADVANCE(93);
|
||||
if (('A' <= lookahead && lookahead <= 'Z') ||
|
||||
('a' <= lookahead && lookahead <= 'e') ||
|
||||
('g' <= lookahead && lookahead <= 'h') ||
|
||||
|
|
@ -1113,25 +1075,25 @@ LEX_FN() {
|
|||
if (lookahead == ']')
|
||||
ADVANCE(82);
|
||||
if (lookahead == 'f')
|
||||
ADVANCE(111);
|
||||
ADVANCE(109);
|
||||
if ('g' <= lookahead && lookahead <= 'f')
|
||||
ADVANCE(1);
|
||||
if (lookahead == 'i')
|
||||
ADVANCE(115);
|
||||
ADVANCE(113);
|
||||
if ('j' <= lookahead && lookahead <= 'i')
|
||||
ADVANCE(43);
|
||||
ADVANCE(5);
|
||||
if (lookahead == 'm')
|
||||
ADVANCE(64);
|
||||
if ('n' <= lookahead && lookahead <= 'm')
|
||||
ADVANCE(84);
|
||||
ADVANCE(119);
|
||||
if (lookahead == 'p')
|
||||
ADVANCE(121);
|
||||
ADVANCE(120);
|
||||
if ('q' <= lookahead && lookahead <= 'p')
|
||||
ADVANCE(104);
|
||||
ADVANCE(102);
|
||||
if (lookahead == 's')
|
||||
ADVANCE(69);
|
||||
if ('t' <= lookahead && lookahead <= 's')
|
||||
ADVANCE(85);
|
||||
ADVANCE(127);
|
||||
if (lookahead == 't')
|
||||
ADVANCE(128);
|
||||
if ('u' <= lookahead && lookahead <= 't')
|
||||
|
|
@ -1151,7 +1113,7 @@ LEX_FN() {
|
|||
}
|
||||
|
||||
LEX_STATES = {
|
||||
[0] = 103,
|
||||
[0] = 101,
|
||||
[1] = 18,
|
||||
[2] = 0,
|
||||
[3] = 0,
|
||||
|
|
@ -1175,22 +1137,22 @@ LEX_STATES = {
|
|||
[21] = 36,
|
||||
[22] = 38,
|
||||
[23] = 36,
|
||||
[24] = 92,
|
||||
[24] = 90,
|
||||
[25] = 42,
|
||||
[26] = 40,
|
||||
[27] = 80,
|
||||
[28] = 37,
|
||||
[29] = 80,
|
||||
[30] = 38,
|
||||
[31] = 92,
|
||||
[32] = 86,
|
||||
[31] = 90,
|
||||
[32] = 84,
|
||||
[33] = 83,
|
||||
[34] = 81,
|
||||
[35] = 40,
|
||||
[36] = 80,
|
||||
[37] = 38,
|
||||
[38] = 81,
|
||||
[39] = 86,
|
||||
[39] = 84,
|
||||
[40] = 83,
|
||||
[41] = 40,
|
||||
[42] = 80,
|
||||
|
|
@ -1201,7 +1163,7 @@ LEX_STATES = {
|
|||
[47] = 80,
|
||||
[48] = 38,
|
||||
[49] = 80,
|
||||
[50] = 86,
|
||||
[50] = 84,
|
||||
[51] = 83,
|
||||
[52] = 81,
|
||||
[53] = 81,
|
||||
|
|
@ -1231,114 +1193,114 @@ LEX_STATES = {
|
|||
[77] = 81,
|
||||
[78] = 81,
|
||||
[79] = 83,
|
||||
[80] = 87,
|
||||
[80] = 85,
|
||||
[81] = 40,
|
||||
[82] = 80,
|
||||
[83] = 38,
|
||||
[84] = 87,
|
||||
[85] = 87,
|
||||
[86] = 87,
|
||||
[84] = 85,
|
||||
[85] = 85,
|
||||
[86] = 85,
|
||||
[87] = 83,
|
||||
[88] = 87,
|
||||
[88] = 85,
|
||||
[89] = 81,
|
||||
[90] = 83,
|
||||
[91] = 87,
|
||||
[92] = 87,
|
||||
[91] = 85,
|
||||
[92] = 85,
|
||||
[93] = 33,
|
||||
[94] = 90,
|
||||
[94] = 88,
|
||||
[95] = 80,
|
||||
[96] = 89,
|
||||
[97] = 88,
|
||||
[98] = 87,
|
||||
[96] = 87,
|
||||
[97] = 86,
|
||||
[98] = 85,
|
||||
[99] = 33,
|
||||
[100] = 80,
|
||||
[101] = 18,
|
||||
[102] = 87,
|
||||
[102] = 85,
|
||||
[103] = 33,
|
||||
[104] = 18,
|
||||
[105] = 87,
|
||||
[105] = 85,
|
||||
[106] = 33,
|
||||
[107] = 80,
|
||||
[108] = 18,
|
||||
[109] = 18,
|
||||
[110] = 18,
|
||||
[111] = 87,
|
||||
[111] = 85,
|
||||
[112] = 33,
|
||||
[113] = 80,
|
||||
[114] = 83,
|
||||
[115] = 87,
|
||||
[115] = 85,
|
||||
[116] = 33,
|
||||
[117] = 91,
|
||||
[117] = 89,
|
||||
[118] = 83,
|
||||
[119] = 87,
|
||||
[119] = 85,
|
||||
[120] = 33,
|
||||
[121] = 18,
|
||||
[122] = 91,
|
||||
[123] = 91,
|
||||
[122] = 89,
|
||||
[123] = 89,
|
||||
[124] = 83,
|
||||
[125] = 91,
|
||||
[125] = 89,
|
||||
[126] = 83,
|
||||
[127] = 87,
|
||||
[127] = 85,
|
||||
[128] = 33,
|
||||
[129] = 90,
|
||||
[129] = 88,
|
||||
[130] = 80,
|
||||
[131] = 89,
|
||||
[132] = 87,
|
||||
[131] = 87,
|
||||
[132] = 85,
|
||||
[133] = 33,
|
||||
[134] = 80,
|
||||
[135] = 18,
|
||||
[136] = 87,
|
||||
[136] = 85,
|
||||
[137] = 33,
|
||||
[138] = 80,
|
||||
[139] = 18,
|
||||
[140] = 91,
|
||||
[140] = 89,
|
||||
[141] = 83,
|
||||
[142] = 90,
|
||||
[142] = 88,
|
||||
[143] = 80,
|
||||
[144] = 89,
|
||||
[145] = 87,
|
||||
[144] = 87,
|
||||
[145] = 85,
|
||||
[146] = 33,
|
||||
[147] = 18,
|
||||
[148] = 87,
|
||||
[148] = 85,
|
||||
[149] = 33,
|
||||
[150] = 80,
|
||||
[151] = 38,
|
||||
[152] = 87,
|
||||
[153] = 87,
|
||||
[152] = 85,
|
||||
[153] = 85,
|
||||
[154] = 33,
|
||||
[155] = 93,
|
||||
[155] = 91,
|
||||
[156] = 40,
|
||||
[157] = 40,
|
||||
[158] = 89,
|
||||
[159] = 87,
|
||||
[158] = 87,
|
||||
[159] = 85,
|
||||
[160] = 33,
|
||||
[161] = 40,
|
||||
[162] = 18,
|
||||
[163] = 87,
|
||||
[163] = 85,
|
||||
[164] = 33,
|
||||
[165] = 40,
|
||||
[166] = 40,
|
||||
[167] = 91,
|
||||
[167] = 89,
|
||||
[168] = 83,
|
||||
[169] = 87,
|
||||
[169] = 85,
|
||||
[170] = 33,
|
||||
[171] = 93,
|
||||
[171] = 91,
|
||||
[172] = 40,
|
||||
[173] = 89,
|
||||
[174] = 87,
|
||||
[173] = 87,
|
||||
[174] = 85,
|
||||
[175] = 33,
|
||||
[176] = 40,
|
||||
[177] = 18,
|
||||
[178] = 87,
|
||||
[178] = 85,
|
||||
[179] = 33,
|
||||
[180] = 40,
|
||||
[181] = 93,
|
||||
[181] = 91,
|
||||
[182] = 40,
|
||||
[183] = 89,
|
||||
[184] = 87,
|
||||
[183] = 87,
|
||||
[184] = 85,
|
||||
[185] = 33,
|
||||
[186] = 18,
|
||||
[187] = 87,
|
||||
[187] = 85,
|
||||
[188] = 33,
|
||||
[189] = 40,
|
||||
[190] = 18,
|
||||
|
|
@ -1349,7 +1311,7 @@ LEX_STATES = {
|
|||
[195] = 80,
|
||||
[196] = 38,
|
||||
[197] = 36,
|
||||
[198] = 86,
|
||||
[198] = 84,
|
||||
[199] = 83,
|
||||
[200] = 81,
|
||||
[201] = 83,
|
||||
|
|
@ -1366,16 +1328,16 @@ LEX_STATES = {
|
|||
[212] = 36,
|
||||
[213] = 36,
|
||||
[214] = 18,
|
||||
[215] = 94,
|
||||
[216] = 94,
|
||||
[217] = 96,
|
||||
[215] = 92,
|
||||
[216] = 92,
|
||||
[217] = 94,
|
||||
[218] = 36,
|
||||
[219] = 36,
|
||||
[220] = 36,
|
||||
[221] = 36,
|
||||
[222] = 102,
|
||||
[223] = 102,
|
||||
[224] = 102,
|
||||
[222] = 100,
|
||||
[223] = 100,
|
||||
[224] = 100,
|
||||
};
|
||||
|
||||
PARSE_TABLE = {
|
||||
|
|
|
|||
|
|
@ -334,6 +334,8 @@ LEX_FN() {
|
|||
ADVANCE(27);
|
||||
if (lookahead == 'a')
|
||||
ADVANCE(30);
|
||||
if ('b' <= lookahead && lookahead <= 'a')
|
||||
ADVANCE(7);
|
||||
if (lookahead == 'u')
|
||||
ADVANCE(34);
|
||||
if ('v' <= lookahead && lookahead <= 'u')
|
||||
|
|
@ -395,11 +397,31 @@ LEX_FN() {
|
|||
('o' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'n')
|
||||
ADVANCE(35);
|
||||
if ('o' <= lookahead && lookahead <= 'n')
|
||||
ADVANCE(46);
|
||||
ADVANCE(41);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 35:
|
||||
if (lookahead == 'c')
|
||||
ADVANCE(36);
|
||||
LEX_ERROR();
|
||||
case 36:
|
||||
if (lookahead == 't')
|
||||
ADVANCE(37);
|
||||
LEX_ERROR();
|
||||
case 37:
|
||||
if (lookahead == 'i')
|
||||
ADVANCE(38);
|
||||
LEX_ERROR();
|
||||
case 38:
|
||||
if (lookahead == 'o')
|
||||
ADVANCE(39);
|
||||
LEX_ERROR();
|
||||
case 39:
|
||||
if (lookahead == 'n')
|
||||
ADVANCE(40);
|
||||
LEX_ERROR();
|
||||
case 40:
|
||||
ACCEPT_TOKEN(ts_sym__function);
|
||||
case 41:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -408,11 +430,9 @@ LEX_FN() {
|
|||
('d' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'c')
|
||||
ADVANCE(36);
|
||||
if ('d' <= lookahead && lookahead <= 'c')
|
||||
ADVANCE(45);
|
||||
ADVANCE(42);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 36:
|
||||
case 42:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -421,11 +441,9 @@ LEX_FN() {
|
|||
('u' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 't')
|
||||
ADVANCE(37);
|
||||
if ('u' <= lookahead && lookahead <= 't')
|
||||
ADVANCE(44);
|
||||
ADVANCE(43);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 37:
|
||||
case 43:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -434,11 +452,9 @@ LEX_FN() {
|
|||
('j' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'i')
|
||||
ADVANCE(38);
|
||||
if ('j' <= lookahead && lookahead <= 'i')
|
||||
ADVANCE(43);
|
||||
ADVANCE(44);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 38:
|
||||
case 44:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -447,11 +463,9 @@ LEX_FN() {
|
|||
('p' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'o')
|
||||
ADVANCE(39);
|
||||
if ('p' <= lookahead && lookahead <= 'o')
|
||||
ADVANCE(42);
|
||||
ADVANCE(45);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 39:
|
||||
case 45:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -460,11 +474,9 @@ LEX_FN() {
|
|||
('o' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'n')
|
||||
ADVANCE(40);
|
||||
if ('o' <= lookahead && lookahead <= 'n')
|
||||
ADVANCE(41);
|
||||
ADVANCE(46);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 40:
|
||||
case 46:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -472,31 +484,9 @@ LEX_FN() {
|
|||
('a' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
ACCEPT_TOKEN(ts_sym__function);
|
||||
case 41:
|
||||
ACCEPT_TOKEN(ts_sym__function);
|
||||
case 42:
|
||||
if (lookahead == 'n')
|
||||
ADVANCE(41);
|
||||
LEX_ERROR();
|
||||
case 43:
|
||||
if (lookahead == 'o')
|
||||
ADVANCE(42);
|
||||
LEX_ERROR();
|
||||
case 44:
|
||||
if (lookahead == 'i')
|
||||
ADVANCE(43);
|
||||
LEX_ERROR();
|
||||
case 45:
|
||||
if (lookahead == 't')
|
||||
ADVANCE(44);
|
||||
LEX_ERROR();
|
||||
case 46:
|
||||
if (lookahead == 'c')
|
||||
ADVANCE(45);
|
||||
LEX_ERROR();
|
||||
case 47:
|
||||
if (lookahead == 'n')
|
||||
ADVANCE(46);
|
||||
ADVANCE(35);
|
||||
LEX_ERROR();
|
||||
case 48:
|
||||
if ((lookahead == '$') ||
|
||||
|
|
@ -507,8 +497,6 @@ LEX_FN() {
|
|||
ADVANCE(27);
|
||||
if (lookahead == 'a')
|
||||
ADVANCE(30);
|
||||
if ('b' <= lookahead && lookahead <= 'a')
|
||||
ADVANCE(7);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 49:
|
||||
if ((lookahead == '$') ||
|
||||
|
|
@ -519,41 +507,37 @@ LEX_FN() {
|
|||
('v' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'u')
|
||||
ADVANCE(53);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 50:
|
||||
if (lookahead == 'l')
|
||||
ADVANCE(51);
|
||||
LEX_ERROR();
|
||||
case 51:
|
||||
if (lookahead == 'l')
|
||||
ADVANCE(52);
|
||||
LEX_ERROR();
|
||||
case 52:
|
||||
ACCEPT_TOKEN(ts_sym_null);
|
||||
case 53:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
('a' <= lookahead && lookahead <= 'k') ||
|
||||
('m' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'l')
|
||||
ADVANCE(54);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 54:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
('a' <= lookahead && lookahead <= 'k') ||
|
||||
('m' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'l')
|
||||
ADVANCE(50);
|
||||
if ('v' <= lookahead && lookahead <= 'u')
|
||||
ADVANCE(55);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 55:
|
||||
case 50:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
('a' <= lookahead && lookahead <= 'k') ||
|
||||
('m' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'l')
|
||||
ADVANCE(51);
|
||||
if ('m' <= lookahead && lookahead <= 'l')
|
||||
ADVANCE(54);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 51:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
(lookahead == '_') ||
|
||||
('a' <= lookahead && lookahead <= 'k') ||
|
||||
('m' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'l')
|
||||
ADVANCE(52);
|
||||
if ('m' <= lookahead && lookahead <= 'l')
|
||||
ADVANCE(53);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 52:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -561,6 +545,16 @@ LEX_FN() {
|
|||
('a' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
ACCEPT_TOKEN(ts_sym_null);
|
||||
case 53:
|
||||
ACCEPT_TOKEN(ts_sym_null);
|
||||
case 54:
|
||||
if (lookahead == 'l')
|
||||
ADVANCE(53);
|
||||
LEX_ERROR();
|
||||
case 55:
|
||||
if (lookahead == 'l')
|
||||
ADVANCE(54);
|
||||
LEX_ERROR();
|
||||
case 56:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
|
|
@ -570,19 +564,11 @@ LEX_FN() {
|
|||
('s' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'r')
|
||||
ADVANCE(60);
|
||||
ADVANCE(57);
|
||||
if ('s' <= lookahead && lookahead <= 'r')
|
||||
ADVANCE(62);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 57:
|
||||
if (lookahead == 'u')
|
||||
ADVANCE(58);
|
||||
LEX_ERROR();
|
||||
case 58:
|
||||
if (lookahead == 'e')
|
||||
ADVANCE(59);
|
||||
LEX_ERROR();
|
||||
case 59:
|
||||
ACCEPT_TOKEN(ts_sym_true);
|
||||
case 60:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -591,9 +577,11 @@ LEX_FN() {
|
|||
('v' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'u')
|
||||
ADVANCE(58);
|
||||
if ('v' <= lookahead && lookahead <= 'u')
|
||||
ADVANCE(61);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 61:
|
||||
case 58:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -602,9 +590,11 @@ LEX_FN() {
|
|||
('f' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'e')
|
||||
ADVANCE(62);
|
||||
ADVANCE(59);
|
||||
if ('f' <= lookahead && lookahead <= 'e')
|
||||
ADVANCE(60);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 62:
|
||||
case 59:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -612,6 +602,16 @@ LEX_FN() {
|
|||
('a' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
ACCEPT_TOKEN(ts_sym_true);
|
||||
case 60:
|
||||
ACCEPT_TOKEN(ts_sym_true);
|
||||
case 61:
|
||||
if (lookahead == 'e')
|
||||
ADVANCE(60);
|
||||
LEX_ERROR();
|
||||
case 62:
|
||||
if (lookahead == 'u')
|
||||
ADVANCE(61);
|
||||
LEX_ERROR();
|
||||
case 63:
|
||||
ACCEPT_TOKEN(ts_aux_sym_token1);
|
||||
case 64:
|
||||
|
|
@ -658,11 +658,13 @@ LEX_FN() {
|
|||
if (lookahead == '[')
|
||||
ADVANCE(28);
|
||||
if (lookahead == 'f')
|
||||
ADVANCE(73);
|
||||
ADVANCE(70);
|
||||
if ('g' <= lookahead && lookahead <= 'f')
|
||||
ADVANCE(48);
|
||||
if (lookahead == 'i')
|
||||
ADVANCE(76);
|
||||
ADVANCE(75);
|
||||
if ('j' <= lookahead && lookahead <= 'i')
|
||||
ADVANCE(78);
|
||||
if (lookahead == 'n')
|
||||
ADVANCE(49);
|
||||
if (lookahead == 't')
|
||||
|
|
@ -675,20 +677,6 @@ LEX_FN() {
|
|||
ADVANCE(84);
|
||||
LEX_ERROR();
|
||||
case 70:
|
||||
if (lookahead == 'a')
|
||||
ADVANCE(7);
|
||||
if (lookahead == 'o')
|
||||
ADVANCE(71);
|
||||
if (lookahead == 'u')
|
||||
ADVANCE(47);
|
||||
LEX_ERROR();
|
||||
case 71:
|
||||
if (lookahead == 'r')
|
||||
ADVANCE(72);
|
||||
LEX_ERROR();
|
||||
case 72:
|
||||
ACCEPT_TOKEN(ts_sym__for);
|
||||
case 73:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -699,12 +687,16 @@ LEX_FN() {
|
|||
ADVANCE(27);
|
||||
if (lookahead == 'a')
|
||||
ADVANCE(30);
|
||||
if ('b' <= lookahead && lookahead <= 'a')
|
||||
ADVANCE(7);
|
||||
if (lookahead == 'o')
|
||||
ADVANCE(71);
|
||||
if ('p' <= lookahead && lookahead <= 'o')
|
||||
ADVANCE(74);
|
||||
if (lookahead == 'u')
|
||||
ADVANCE(34);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 74:
|
||||
case 71:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -713,9 +705,11 @@ LEX_FN() {
|
|||
('s' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'r')
|
||||
ADVANCE(75);
|
||||
ADVANCE(72);
|
||||
if ('s' <= lookahead && lookahead <= 'r')
|
||||
ADVANCE(73);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 75:
|
||||
case 72:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -723,7 +717,13 @@ LEX_FN() {
|
|||
('a' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
ACCEPT_TOKEN(ts_sym__for);
|
||||
case 76:
|
||||
case 73:
|
||||
ACCEPT_TOKEN(ts_sym__for);
|
||||
case 74:
|
||||
if (lookahead == 'r')
|
||||
ADVANCE(73);
|
||||
LEX_ERROR();
|
||||
case 75:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -732,11 +732,11 @@ LEX_FN() {
|
|||
('g' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'f')
|
||||
ADVANCE(78);
|
||||
ADVANCE(76);
|
||||
if ('g' <= lookahead && lookahead <= 'f')
|
||||
ADVANCE(77);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 77:
|
||||
ACCEPT_TOKEN(ts_sym__if);
|
||||
case 78:
|
||||
case 76:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -744,6 +744,12 @@ LEX_FN() {
|
|||
('a' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
ACCEPT_TOKEN(ts_sym__if);
|
||||
case 77:
|
||||
ACCEPT_TOKEN(ts_sym__if);
|
||||
case 78:
|
||||
if (lookahead == 'f')
|
||||
ADVANCE(77);
|
||||
LEX_ERROR();
|
||||
case 79:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
|
|
@ -752,15 +758,11 @@ LEX_FN() {
|
|||
('b' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'a')
|
||||
ADVANCE(82);
|
||||
ADVANCE(80);
|
||||
if ('b' <= lookahead && lookahead <= 'a')
|
||||
ADVANCE(83);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 80:
|
||||
if (lookahead == 'r')
|
||||
ADVANCE(81);
|
||||
LEX_ERROR();
|
||||
case 81:
|
||||
ACCEPT_TOKEN(ts_sym__var);
|
||||
case 82:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -769,9 +771,11 @@ LEX_FN() {
|
|||
('s' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'r')
|
||||
ADVANCE(83);
|
||||
ADVANCE(81);
|
||||
if ('s' <= lookahead && lookahead <= 'r')
|
||||
ADVANCE(82);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 83:
|
||||
case 81:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -779,6 +783,12 @@ LEX_FN() {
|
|||
('a' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
ACCEPT_TOKEN(ts_sym__var);
|
||||
case 82:
|
||||
ACCEPT_TOKEN(ts_sym__var);
|
||||
case 83:
|
||||
if (lookahead == 'r')
|
||||
ADVANCE(82);
|
||||
LEX_ERROR();
|
||||
case 84:
|
||||
ACCEPT_TOKEN(ts_aux_sym_token2);
|
||||
case 85:
|
||||
|
|
@ -1052,27 +1062,47 @@ LEX_FN() {
|
|||
if (lookahead == '[')
|
||||
ADVANCE(28);
|
||||
if (lookahead == 'e')
|
||||
ADVANCE(116);
|
||||
if ('f' <= lookahead && lookahead <= 'e')
|
||||
ADVANCE(123);
|
||||
ADVANCE(120);
|
||||
if (lookahead == 'f')
|
||||
ADVANCE(73);
|
||||
ADVANCE(70);
|
||||
if ('g' <= lookahead && lookahead <= 'f')
|
||||
ADVANCE(48);
|
||||
ADVANCE(6);
|
||||
if (lookahead == 'i')
|
||||
ADVANCE(76);
|
||||
ADVANCE(75);
|
||||
if ('j' <= lookahead && lookahead <= 'i')
|
||||
ADVANCE(78);
|
||||
if (lookahead == 'n')
|
||||
ADVANCE(49);
|
||||
if ('o' <= lookahead && lookahead <= 'n')
|
||||
ADVANCE(124);
|
||||
if (lookahead == 't')
|
||||
ADVANCE(56);
|
||||
if ('u' <= lookahead && lookahead <= 't')
|
||||
ADVANCE(125);
|
||||
if (lookahead == 'v')
|
||||
ADVANCE(79);
|
||||
if ('w' <= lookahead && lookahead <= 'v')
|
||||
ADVANCE(126);
|
||||
if (lookahead == '{')
|
||||
ADVANCE(63);
|
||||
if (lookahead == '}')
|
||||
ADVANCE(84);
|
||||
LEX_ERROR();
|
||||
case 116:
|
||||
if (lookahead == 'l')
|
||||
ADVANCE(117);
|
||||
LEX_ERROR();
|
||||
case 117:
|
||||
if (lookahead == 's')
|
||||
ADVANCE(118);
|
||||
LEX_ERROR();
|
||||
case 118:
|
||||
if (lookahead == 'e')
|
||||
ADVANCE(119);
|
||||
LEX_ERROR();
|
||||
case 119:
|
||||
ACCEPT_TOKEN(ts_sym__else);
|
||||
case 120:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -1081,11 +1111,9 @@ LEX_FN() {
|
|||
('m' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'l')
|
||||
ADVANCE(117);
|
||||
if ('m' <= lookahead && lookahead <= 'l')
|
||||
ADVANCE(122);
|
||||
ADVANCE(121);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 117:
|
||||
case 121:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -1094,11 +1122,9 @@ LEX_FN() {
|
|||
('t' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 's')
|
||||
ADVANCE(118);
|
||||
if ('t' <= lookahead && lookahead <= 's')
|
||||
ADVANCE(121);
|
||||
ADVANCE(122);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 118:
|
||||
case 122:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -1107,11 +1133,9 @@ LEX_FN() {
|
|||
('f' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
if (lookahead == 'e')
|
||||
ADVANCE(119);
|
||||
if ('f' <= lookahead && lookahead <= 'e')
|
||||
ADVANCE(120);
|
||||
ADVANCE(123);
|
||||
ACCEPT_TOKEN(ts_sym_identifier);
|
||||
case 119:
|
||||
case 123:
|
||||
if ((lookahead == '$') ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
|
|
@ -1119,21 +1143,19 @@ LEX_FN() {
|
|||
('a' <= lookahead && lookahead <= 'z'))
|
||||
ADVANCE(27);
|
||||
ACCEPT_TOKEN(ts_sym__else);
|
||||
case 120:
|
||||
ACCEPT_TOKEN(ts_sym__else);
|
||||
case 121:
|
||||
if (lookahead == 'e')
|
||||
ADVANCE(120);
|
||||
LEX_ERROR();
|
||||
case 122:
|
||||
if (lookahead == 's')
|
||||
ADVANCE(121);
|
||||
LEX_ERROR();
|
||||
case 123:
|
||||
if (lookahead == 'l')
|
||||
ADVANCE(122);
|
||||
LEX_ERROR();
|
||||
case 124:
|
||||
if (lookahead == 'u')
|
||||
ADVANCE(55);
|
||||
LEX_ERROR();
|
||||
case 125:
|
||||
if (lookahead == 'r')
|
||||
ADVANCE(62);
|
||||
LEX_ERROR();
|
||||
case 126:
|
||||
if (lookahead == 'a')
|
||||
ADVANCE(83);
|
||||
LEX_ERROR();
|
||||
case 127:
|
||||
if (lookahead == '\"')
|
||||
ADVANCE(11);
|
||||
if ('0' <= lookahead && lookahead <= '9')
|
||||
|
|
@ -1149,11 +1171,13 @@ LEX_FN() {
|
|||
if (lookahead == '[')
|
||||
ADVANCE(28);
|
||||
if (lookahead == 'f')
|
||||
ADVANCE(73);
|
||||
ADVANCE(70);
|
||||
if ('g' <= lookahead && lookahead <= 'f')
|
||||
ADVANCE(48);
|
||||
if (lookahead == 'i')
|
||||
ADVANCE(76);
|
||||
ADVANCE(75);
|
||||
if ('j' <= lookahead && lookahead <= 'i')
|
||||
ADVANCE(78);
|
||||
if (lookahead == 'n')
|
||||
ADVANCE(49);
|
||||
if (lookahead == 't')
|
||||
|
|
@ -1163,7 +1187,7 @@ LEX_FN() {
|
|||
if (lookahead == '{')
|
||||
ADVANCE(63);
|
||||
LEX_ERROR();
|
||||
case 125:
|
||||
case 128:
|
||||
if (lookahead == '(')
|
||||
ADVANCE(2);
|
||||
if (lookahead == ')')
|
||||
|
|
@ -1173,7 +1197,7 @@ LEX_FN() {
|
|||
if (lookahead == '=')
|
||||
ADVANCE(86);
|
||||
LEX_ERROR();
|
||||
case 126:
|
||||
case 129:
|
||||
if (lookahead == '\"')
|
||||
ADVANCE(11);
|
||||
if ('0' <= lookahead && lookahead <= '9')
|
||||
|
|
@ -1190,34 +1214,18 @@ LEX_FN() {
|
|||
if (lookahead == 'f')
|
||||
ADVANCE(29);
|
||||
if ('g' <= lookahead && lookahead <= 'f')
|
||||
ADVANCE(6);
|
||||
ADVANCE(48);
|
||||
if (lookahead == 'n')
|
||||
ADVANCE(49);
|
||||
if ('o' <= lookahead && lookahead <= 'n')
|
||||
ADVANCE(127);
|
||||
if (lookahead == 't')
|
||||
ADVANCE(56);
|
||||
if ('u' <= lookahead && lookahead <= 't')
|
||||
ADVANCE(128);
|
||||
if (lookahead == 'v')
|
||||
ADVANCE(79);
|
||||
if ('w' <= lookahead && lookahead <= 'v')
|
||||
ADVANCE(129);
|
||||
ADVANCE(126);
|
||||
if (lookahead == '{')
|
||||
ADVANCE(63);
|
||||
LEX_ERROR();
|
||||
case 127:
|
||||
if (lookahead == 'u')
|
||||
ADVANCE(50);
|
||||
LEX_ERROR();
|
||||
case 128:
|
||||
if (lookahead == 'r')
|
||||
ADVANCE(57);
|
||||
LEX_ERROR();
|
||||
case 129:
|
||||
if (lookahead == 'a')
|
||||
ADVANCE(80);
|
||||
LEX_ERROR();
|
||||
case 130:
|
||||
if (lookahead == '\"')
|
||||
ADVANCE(11);
|
||||
|
|
@ -1234,26 +1242,40 @@ LEX_FN() {
|
|||
if (lookahead == '[')
|
||||
ADVANCE(28);
|
||||
if (lookahead == 'e')
|
||||
ADVANCE(116);
|
||||
if ('f' <= lookahead && lookahead <= 'e')
|
||||
ADVANCE(123);
|
||||
ADVANCE(120);
|
||||
if (lookahead == 'f')
|
||||
ADVANCE(73);
|
||||
ADVANCE(70);
|
||||
if ('g' <= lookahead && lookahead <= 'f')
|
||||
ADVANCE(48);
|
||||
ADVANCE(6);
|
||||
if (lookahead == 'i')
|
||||
ADVANCE(76);
|
||||
ADVANCE(75);
|
||||
if ('j' <= lookahead && lookahead <= 'i')
|
||||
ADVANCE(78);
|
||||
if (lookahead == 'n')
|
||||
ADVANCE(49);
|
||||
if ('o' <= lookahead && lookahead <= 'n')
|
||||
ADVANCE(124);
|
||||
if (lookahead == 't')
|
||||
ADVANCE(56);
|
||||
if ('u' <= lookahead && lookahead <= 't')
|
||||
ADVANCE(125);
|
||||
if (lookahead == 'v')
|
||||
ADVANCE(79);
|
||||
if ('w' <= lookahead && lookahead <= 'v')
|
||||
ADVANCE(126);
|
||||
if (lookahead == '{')
|
||||
ADVANCE(63);
|
||||
LEX_ERROR();
|
||||
case 131:
|
||||
LEX_ERROR();
|
||||
case 132:
|
||||
if (lookahead == 'l')
|
||||
ADVANCE(117);
|
||||
if (lookahead == 'o')
|
||||
ADVANCE(74);
|
||||
if (lookahead == 'u')
|
||||
ADVANCE(47);
|
||||
LEX_ERROR();
|
||||
case ts_lex_state_error:
|
||||
if (lookahead == '\n')
|
||||
ADVANCE(1);
|
||||
|
|
@ -1288,21 +1310,29 @@ LEX_FN() {
|
|||
if (lookahead == ']')
|
||||
ADVANCE(94);
|
||||
if (lookahead == 'e')
|
||||
ADVANCE(116);
|
||||
ADVANCE(120);
|
||||
if ('f' <= lookahead && lookahead <= 'e')
|
||||
ADVANCE(132);
|
||||
if (lookahead == 'f')
|
||||
ADVANCE(73);
|
||||
ADVANCE(70);
|
||||
if ('g' <= lookahead && lookahead <= 'f')
|
||||
ADVANCE(48);
|
||||
ADVANCE(6);
|
||||
if (lookahead == 'i')
|
||||
ADVANCE(76);
|
||||
ADVANCE(75);
|
||||
if ('j' <= lookahead && lookahead <= 'i')
|
||||
ADVANCE(78);
|
||||
if (lookahead == 'n')
|
||||
ADVANCE(49);
|
||||
if ('o' <= lookahead && lookahead <= 'n')
|
||||
ADVANCE(124);
|
||||
if (lookahead == 't')
|
||||
ADVANCE(56);
|
||||
if ('u' <= lookahead && lookahead <= 't')
|
||||
ADVANCE(125);
|
||||
if (lookahead == 'v')
|
||||
ADVANCE(79);
|
||||
if ('w' <= lookahead && lookahead <= 'v')
|
||||
ADVANCE(129);
|
||||
ADVANCE(126);
|
||||
if (lookahead == '{')
|
||||
ADVANCE(63);
|
||||
if (lookahead == '}')
|
||||
|
|
@ -1314,15 +1344,15 @@ LEX_FN() {
|
|||
}
|
||||
|
||||
LEX_STATES = {
|
||||
[0] = 124,
|
||||
[0] = 127,
|
||||
[1] = 100,
|
||||
[2] = 126,
|
||||
[2] = 129,
|
||||
[3] = 101,
|
||||
[4] = 96,
|
||||
[5] = 0,
|
||||
[6] = 69,
|
||||
[7] = 100,
|
||||
[8] = 126,
|
||||
[8] = 129,
|
||||
[9] = 87,
|
||||
[10] = 64,
|
||||
[11] = 5,
|
||||
|
|
@ -1521,19 +1551,19 @@ LEX_STATES = {
|
|||
[204] = 97,
|
||||
[205] = 68,
|
||||
[206] = 68,
|
||||
[207] = 124,
|
||||
[207] = 127,
|
||||
[208] = 100,
|
||||
[209] = 126,
|
||||
[209] = 129,
|
||||
[210] = 0,
|
||||
[211] = 5,
|
||||
[212] = 5,
|
||||
[213] = 5,
|
||||
[214] = 68,
|
||||
[215] = 124,
|
||||
[215] = 127,
|
||||
[216] = 100,
|
||||
[217] = 5,
|
||||
[218] = 68,
|
||||
[219] = 124,
|
||||
[219] = 127,
|
||||
[220] = 87,
|
||||
[221] = 64,
|
||||
[222] = 115,
|
||||
|
|
@ -1543,7 +1573,7 @@ LEX_STATES = {
|
|||
[226] = 115,
|
||||
[227] = 115,
|
||||
[228] = 115,
|
||||
[229] = 124,
|
||||
[229] = 127,
|
||||
[230] = 115,
|
||||
[231] = 69,
|
||||
[232] = 89,
|
||||
|
|
@ -1552,7 +1582,7 @@ LEX_STATES = {
|
|||
[235] = 64,
|
||||
[236] = 87,
|
||||
[237] = 68,
|
||||
[238] = 125,
|
||||
[238] = 128,
|
||||
[239] = 5,
|
||||
[240] = 68,
|
||||
[241] = 107,
|
||||
|
|
@ -1576,7 +1606,7 @@ LEX_STATES = {
|
|||
[259] = 97,
|
||||
[260] = 64,
|
||||
[261] = 115,
|
||||
[262] = 124,
|
||||
[262] = 127,
|
||||
[263] = 69,
|
||||
[264] = 97,
|
||||
[265] = 89,
|
||||
|
|
@ -1592,7 +1622,7 @@ LEX_STATES = {
|
|||
[275] = 5,
|
||||
[276] = 5,
|
||||
[277] = 68,
|
||||
[278] = 124,
|
||||
[278] = 127,
|
||||
[279] = 69,
|
||||
[280] = 97,
|
||||
[281] = 89,
|
||||
|
|
@ -1604,21 +1634,21 @@ LEX_STATES = {
|
|||
[287] = 5,
|
||||
[288] = 5,
|
||||
[289] = 68,
|
||||
[290] = 124,
|
||||
[290] = 127,
|
||||
[291] = 100,
|
||||
[292] = 5,
|
||||
[293] = 68,
|
||||
[294] = 124,
|
||||
[294] = 127,
|
||||
[295] = 100,
|
||||
[296] = 126,
|
||||
[296] = 129,
|
||||
[297] = 5,
|
||||
[298] = 5,
|
||||
[299] = 68,
|
||||
[300] = 124,
|
||||
[300] = 127,
|
||||
[301] = 100,
|
||||
[302] = 5,
|
||||
[303] = 68,
|
||||
[304] = 124,
|
||||
[304] = 127,
|
||||
[305] = 87,
|
||||
[306] = 64,
|
||||
[307] = 130,
|
||||
|
|
@ -1628,7 +1658,7 @@ LEX_STATES = {
|
|||
[311] = 130,
|
||||
[312] = 130,
|
||||
[313] = 130,
|
||||
[314] = 124,
|
||||
[314] = 127,
|
||||
[315] = 130,
|
||||
[316] = 69,
|
||||
[317] = 89,
|
||||
|
|
@ -1639,26 +1669,26 @@ LEX_STATES = {
|
|||
[322] = 130,
|
||||
[323] = 97,
|
||||
[324] = 130,
|
||||
[325] = 124,
|
||||
[325] = 127,
|
||||
[326] = 87,
|
||||
[327] = 64,
|
||||
[328] = 124,
|
||||
[329] = 124,
|
||||
[328] = 127,
|
||||
[329] = 127,
|
||||
[330] = 85,
|
||||
[331] = 0,
|
||||
[332] = 124,
|
||||
[333] = 124,
|
||||
[334] = 124,
|
||||
[332] = 127,
|
||||
[333] = 127,
|
||||
[334] = 127,
|
||||
[335] = 69,
|
||||
[336] = 89,
|
||||
[337] = 124,
|
||||
[337] = 127,
|
||||
[338] = 113,
|
||||
[339] = 64,
|
||||
[340] = 97,
|
||||
[341] = 124,
|
||||
[341] = 127,
|
||||
[342] = 97,
|
||||
[343] = 131,
|
||||
[344] = 124,
|
||||
[344] = 127,
|
||||
[345] = 131,
|
||||
[346] = 131,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -10,7 +10,8 @@ recovers from errors inside parenthesized expressions
|
|||
=====================================================
|
||||
x + (y * + z) * 5
|
||||
---
|
||||
(expression
|
||||
(expression (sum
|
||||
(variable)
|
||||
(plus)
|
||||
(term (factor (ERROR)) (times) (number)))
|
||||
(product
|
||||
(grouping (ERROR))
|
||||
(number))))
|
||||
|
|
@ -17,9 +17,8 @@ parses products
|
|||
===================
|
||||
x * x
|
||||
---
|
||||
(expression (term
|
||||
(expression (product
|
||||
(variable)
|
||||
(times)
|
||||
(variable)))
|
||||
|
||||
===================
|
||||
|
|
@ -27,28 +26,28 @@ parses sums
|
|||
===================
|
||||
x + x
|
||||
---
|
||||
(expression
|
||||
(expression (sum
|
||||
(variable)
|
||||
(plus)
|
||||
(variable))
|
||||
(variable)))
|
||||
|
||||
====================
|
||||
parses complex trees
|
||||
====================
|
||||
x * y + z * a
|
||||
x * y + z / a
|
||||
---
|
||||
(expression
|
||||
(term (variable) (times) (variable))
|
||||
(plus)
|
||||
(term (variable) (times) (variable)))
|
||||
(expression (sum
|
||||
(product (variable) (variable))
|
||||
(quotient (variable) (variable))))
|
||||
|
||||
=================================
|
||||
handles parenthesized expressions
|
||||
=================================
|
||||
x * (y + z)
|
||||
============================
|
||||
parses exponents
|
||||
============================
|
||||
x + y * z^(a + b)
|
||||
---
|
||||
(expression (term
|
||||
(expression (sum
|
||||
(variable)
|
||||
(times)
|
||||
(factor (expression (variable) (plus) (variable)))))
|
||||
|
||||
(product
|
||||
(variable)
|
||||
(exponent
|
||||
(variable)
|
||||
(grouping (sum (variable) (variable)))))))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue