Refactor logic for marking '_'-prefixed rules as hidden
This commit is contained in:
parent
9591c88f39
commit
f9316933ad
16 changed files with 22975 additions and 22952 deletions
|
|
@ -3,14 +3,12 @@
|
|||
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <initializer_list>
|
||||
#include "tree_sitter/compiler.h"
|
||||
#include "compiler/rule.h"
|
||||
|
||||
using std::map;
|
||||
using std::vector;
|
||||
using std::string;
|
||||
using std::initializer_list;
|
||||
using std::pair;
|
||||
using tree_sitter::rule_ptr;
|
||||
|
|
@ -31,23 +29,6 @@ class rule_map : public map<K, rule_ptr> {
|
|||
rule_map(const initializer_list<pair<const K, rule_ptr>> &list) : map<K, rule_ptr>(list) {}
|
||||
};
|
||||
|
||||
class rule_list : public vector<pair<string, rule_ptr>> {
|
||||
public:
|
||||
bool operator==(const vector<pair<string, rule_ptr>> &other) const {
|
||||
if (this->size() != other.size()) return false;
|
||||
for (size_t i = 0; i < this->size(); i++) {
|
||||
auto pair = this->operator[](i);
|
||||
auto other_pair = other[i];
|
||||
if (!pair.second->operator==(*other_pair.second))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
rule_list(const initializer_list<pair<string, rule_ptr>> &list) :
|
||||
vector<pair<string, rule_ptr>>(list) {}
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class eq_vector : public vector<T> {
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ describe("expand_repeats", []() {
|
|||
i_token(0),
|
||||
choice({ i_sym(1), blank() })
|
||||
}),
|
||||
RuleEntryTypeHidden
|
||||
RuleEntryTypeAuxiliary
|
||||
},
|
||||
})));
|
||||
});
|
||||
|
|
@ -66,7 +66,7 @@ describe("expand_repeats", []() {
|
|||
i_token(11),
|
||||
choice({ i_sym(1), blank() })
|
||||
}),
|
||||
RuleEntryTypeHidden
|
||||
RuleEntryTypeAuxiliary
|
||||
},
|
||||
})));
|
||||
});
|
||||
|
|
@ -94,7 +94,7 @@ describe("expand_repeats", []() {
|
|||
i_token(11),
|
||||
choice({ i_sym(1), blank() }),
|
||||
}),
|
||||
RuleEntryTypeHidden
|
||||
RuleEntryTypeAuxiliary
|
||||
},
|
||||
})));
|
||||
});
|
||||
|
|
@ -138,7 +138,7 @@ describe("expand_repeats", []() {
|
|||
i_token(4),
|
||||
choice({ i_sym(2), blank() }),
|
||||
}),
|
||||
RuleEntryTypeHidden
|
||||
RuleEntryTypeAuxiliary
|
||||
},
|
||||
})));
|
||||
});
|
||||
|
|
@ -172,7 +172,7 @@ describe("expand_repeats", []() {
|
|||
i_token(10),
|
||||
choice({ i_sym(1), blank() }),
|
||||
}),
|
||||
RuleEntryTypeHidden
|
||||
RuleEntryTypeAuxiliary
|
||||
},
|
||||
{
|
||||
"rule0_repeat2",
|
||||
|
|
@ -180,7 +180,7 @@ describe("expand_repeats", []() {
|
|||
i_token(11),
|
||||
choice({ i_sym(2), blank() }),
|
||||
}),
|
||||
RuleEntryTypeHidden
|
||||
RuleEntryTypeAuxiliary
|
||||
},
|
||||
})));
|
||||
});
|
||||
|
|
@ -218,7 +218,7 @@ describe("expand_repeats", []() {
|
|||
i_token(10),
|
||||
choice({ i_sym(2), blank() }),
|
||||
}),
|
||||
RuleEntryTypeHidden
|
||||
RuleEntryTypeAuxiliary
|
||||
},
|
||||
{
|
||||
"rule1_repeat1",
|
||||
|
|
@ -226,7 +226,7 @@ describe("expand_repeats", []() {
|
|||
i_token(11),
|
||||
choice({ i_sym(3), blank() })
|
||||
}),
|
||||
RuleEntryTypeHidden
|
||||
RuleEntryTypeAuxiliary
|
||||
},
|
||||
})));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -24,18 +24,22 @@ describe("extract_tokens", []() {
|
|||
token(repeat(choice({ str("ef"), str("gh") }))),
|
||||
}),
|
||||
})),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
{
|
||||
"rule_B",
|
||||
pattern("ij+"),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
{
|
||||
"rule_C",
|
||||
choice({ str("kl"), blank() }),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
{
|
||||
"rule_D",
|
||||
repeat(i_sym(3))
|
||||
repeat(i_sym(3)),
|
||||
RuleEntryTypeNamed,
|
||||
}
|
||||
}, {}, {}});
|
||||
|
||||
|
|
@ -96,14 +100,14 @@ describe("extract_tokens", []() {
|
|||
{
|
||||
"/cd*/",
|
||||
pattern("cd*"),
|
||||
RuleEntryTypeHidden,
|
||||
RuleEntryTypeAuxiliary,
|
||||
},
|
||||
|
||||
// Rules marked as tokens become hidden rules.
|
||||
{
|
||||
"/(ef|gh)*/",
|
||||
repeat(choice({ str("ef"), str("gh") })),
|
||||
RuleEntryTypeHidden,
|
||||
RuleEntryTypeAuxiliary,
|
||||
},
|
||||
|
||||
// This named rule was moved wholesale to the lexical grammar.
|
||||
|
|
@ -131,7 +135,8 @@ describe("extract_tokens", []() {
|
|||
str("ab"),
|
||||
i_sym(0),
|
||||
str("ab"),
|
||||
})
|
||||
}),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
}, {}, {}});
|
||||
|
||||
|
|
@ -159,15 +164,18 @@ describe("extract_tokens", []() {
|
|||
auto result = extract_tokens(InternedGrammar{{
|
||||
{
|
||||
"rule_A",
|
||||
seq({ i_sym(1), str("ab") })
|
||||
seq({ i_sym(1), str("ab") }),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
{
|
||||
"rule_B",
|
||||
str("cd")
|
||||
str("cd"),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
{
|
||||
"rule_C",
|
||||
seq({ str("ef"), str("cd") })
|
||||
seq({ str("ef"), str("cd") }),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
}, {}, {}});
|
||||
|
||||
|
|
@ -215,15 +223,18 @@ describe("extract_tokens", []() {
|
|||
auto result = extract_tokens(InternedGrammar{{
|
||||
{
|
||||
"rule_A",
|
||||
str("ok")
|
||||
str("ok"),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
{
|
||||
"rule_B",
|
||||
repeat(i_sym(0))
|
||||
repeat(i_sym(0)),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
{
|
||||
"rule_C",
|
||||
repeat(seq({ i_sym(0), i_sym(0) }))
|
||||
repeat(seq({ i_sym(0), i_sym(0) })),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
}, { str(" ") }, { { Symbol(1), Symbol(2) } }});
|
||||
|
||||
|
|
@ -238,7 +249,11 @@ describe("extract_tokens", []() {
|
|||
describe("handling ubiquitous tokens", [&]() {
|
||||
it("adds inline ubiquitous tokens to the lexical grammar's separators", [&]() {
|
||||
auto result = extract_tokens(InternedGrammar{{
|
||||
{ "rule_A", str("x") },
|
||||
{
|
||||
"rule_A",
|
||||
str("x"),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
}, {
|
||||
pattern("\\s+"),
|
||||
str("y"),
|
||||
|
|
@ -256,9 +271,21 @@ describe("extract_tokens", []() {
|
|||
|
||||
it("updates ubiquitous symbols according to the new symbol numbers", [&]() {
|
||||
auto result = extract_tokens(InternedGrammar{ {
|
||||
{ "rule_A", seq({ str("w"), str("x"), i_sym(1) }) },
|
||||
{ "rule_B", str("y") },
|
||||
{ "rule_C", str("z") },
|
||||
{
|
||||
"rule_A",
|
||||
seq({ str("w"), str("x"), i_sym(1) }),
|
||||
RuleEntryTypeNamed
|
||||
},
|
||||
{
|
||||
"rule_B",
|
||||
str("y"),
|
||||
RuleEntryTypeNamed
|
||||
},
|
||||
{
|
||||
"rule_C",
|
||||
str("z"),
|
||||
RuleEntryTypeNamed
|
||||
},
|
||||
}, {
|
||||
i_sym(2),
|
||||
}, {}});
|
||||
|
|
@ -277,10 +304,12 @@ describe("extract_tokens", []() {
|
|||
{
|
||||
"rule_A",
|
||||
seq({ str("x"), i_sym(1) }),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
{
|
||||
"rule_B",
|
||||
seq({ str("y"), str("z") })
|
||||
seq({ str("y"), str("z") }),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
}, { i_sym(1) }, {}});
|
||||
|
||||
|
|
@ -294,11 +323,13 @@ describe("extract_tokens", []() {
|
|||
auto result = extract_tokens(InternedGrammar{{
|
||||
{
|
||||
"rule_A",
|
||||
str("x")
|
||||
str("x"),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
{
|
||||
"rule_B",
|
||||
str("y")
|
||||
str("y"),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
}, { choice({ i_sym(1), blank() }) }, {}});
|
||||
|
||||
|
|
|
|||
|
|
@ -12,18 +12,30 @@ using prepare_grammar::intern_symbols;
|
|||
describe("intern_symbols", []() {
|
||||
it("replaces named symbols with numerically-indexed symbols", [&]() {
|
||||
Grammar grammar({
|
||||
{ "x", choice({ sym("y"), sym("z") }) },
|
||||
{ "y", sym("z") },
|
||||
{ "z", str("stuff") }
|
||||
{ "x", choice({ sym("y"), sym("_z") }) },
|
||||
{ "y", sym("_z") },
|
||||
{ "_z", str("stuff") }
|
||||
});
|
||||
|
||||
auto result = intern_symbols(grammar);
|
||||
|
||||
AssertThat(result.second, Equals((GrammarError *)nullptr));
|
||||
AssertThat(result.first.rules, Equals(rule_list({
|
||||
{ "x", choice({ i_sym(1), i_sym(2) }) },
|
||||
{ "y", i_sym(2) },
|
||||
{ "z", str("stuff") },
|
||||
AssertThat(result.first.rules, Equals(eq_vector<RuleEntry>({
|
||||
{
|
||||
"x",
|
||||
choice({ i_sym(1), i_sym(2) }),
|
||||
RuleEntryTypeNamed
|
||||
},
|
||||
{
|
||||
"y",
|
||||
i_sym(2),
|
||||
RuleEntryTypeNamed,
|
||||
},
|
||||
{
|
||||
"_z",
|
||||
str("stuff"),
|
||||
RuleEntryTypeHidden
|
||||
},
|
||||
})));
|
||||
});
|
||||
|
||||
|
|
|
|||
274
spec/fixtures/parsers/arithmetic.c
vendored
274
spec/fixtures/parsers/arithmetic.c
vendored
|
|
@ -12,13 +12,13 @@ enum {
|
|||
sym_quotient,
|
||||
sym_exponent,
|
||||
sym_group,
|
||||
aux_sym_PLUS,
|
||||
aux_sym_DASH,
|
||||
aux_sym_STAR,
|
||||
aux_sym_SLASH,
|
||||
aux_sym_CARET,
|
||||
aux_sym_LPAREN,
|
||||
aux_sym_RPAREN,
|
||||
anon_sym_PLUS,
|
||||
anon_sym_DASH,
|
||||
anon_sym_STAR,
|
||||
anon_sym_SLASH,
|
||||
anon_sym_CARET,
|
||||
anon_sym_LPAREN,
|
||||
anon_sym_RPAREN,
|
||||
sym_number,
|
||||
sym_variable,
|
||||
sym_comment,
|
||||
|
|
@ -35,13 +35,13 @@ static const char *ts_symbol_names[] = {
|
|||
[sym_group] = "group",
|
||||
[ts_builtin_sym_error] = "ERROR",
|
||||
[ts_builtin_sym_end] = "END",
|
||||
[aux_sym_PLUS] = "+",
|
||||
[aux_sym_DASH] = "-",
|
||||
[aux_sym_STAR] = "*",
|
||||
[aux_sym_SLASH] = "/",
|
||||
[aux_sym_CARET] = "^",
|
||||
[aux_sym_LPAREN] = "(",
|
||||
[aux_sym_RPAREN] = ")",
|
||||
[anon_sym_PLUS] = "+",
|
||||
[anon_sym_DASH] = "-",
|
||||
[anon_sym_STAR] = "*",
|
||||
[anon_sym_SLASH] = "/",
|
||||
[anon_sym_CARET] = "^",
|
||||
[anon_sym_LPAREN] = "(",
|
||||
[anon_sym_RPAREN] = ")",
|
||||
[sym_number] = "number",
|
||||
[sym_variable] = "variable",
|
||||
[sym_comment] = "comment",
|
||||
|
|
@ -58,13 +58,13 @@ static const TSNodeType ts_node_types[SYMBOL_COUNT] = {
|
|||
[sym_group] = TSNodeTypeNormal,
|
||||
[ts_builtin_sym_error] = TSNodeTypeNormal,
|
||||
[ts_builtin_sym_end] = TSNodeTypeHidden,
|
||||
[aux_sym_PLUS] = TSNodeTypeConcrete,
|
||||
[aux_sym_DASH] = TSNodeTypeConcrete,
|
||||
[aux_sym_STAR] = TSNodeTypeConcrete,
|
||||
[aux_sym_SLASH] = TSNodeTypeConcrete,
|
||||
[aux_sym_CARET] = TSNodeTypeConcrete,
|
||||
[aux_sym_LPAREN] = TSNodeTypeConcrete,
|
||||
[aux_sym_RPAREN] = TSNodeTypeConcrete,
|
||||
[anon_sym_PLUS] = TSNodeTypeConcrete,
|
||||
[anon_sym_DASH] = TSNodeTypeConcrete,
|
||||
[anon_sym_STAR] = TSNodeTypeConcrete,
|
||||
[anon_sym_SLASH] = TSNodeTypeConcrete,
|
||||
[anon_sym_CARET] = TSNodeTypeConcrete,
|
||||
[anon_sym_LPAREN] = TSNodeTypeConcrete,
|
||||
[anon_sym_RPAREN] = TSNodeTypeConcrete,
|
||||
[sym_number] = TSNodeTypeNormal,
|
||||
[sym_variable] = TSNodeTypeNormal,
|
||||
[sym_comment] = TSNodeTypeNormal,
|
||||
|
|
@ -97,7 +97,7 @@ static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
|||
ADVANCE(2);
|
||||
ACCEPT_TOKEN(sym_comment);
|
||||
case 3:
|
||||
ACCEPT_TOKEN(aux_sym_LPAREN);
|
||||
ACCEPT_TOKEN(anon_sym_LPAREN);
|
||||
case 4:
|
||||
if ('0' <= lookahead && lookahead <= '9')
|
||||
ADVANCE(4);
|
||||
|
|
@ -151,15 +151,15 @@ static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
|||
ADVANCE(14);
|
||||
LEX_ERROR();
|
||||
case 10:
|
||||
ACCEPT_TOKEN(aux_sym_STAR);
|
||||
ACCEPT_TOKEN(anon_sym_STAR);
|
||||
case 11:
|
||||
ACCEPT_TOKEN(aux_sym_PLUS);
|
||||
ACCEPT_TOKEN(anon_sym_PLUS);
|
||||
case 12:
|
||||
ACCEPT_TOKEN(aux_sym_DASH);
|
||||
ACCEPT_TOKEN(anon_sym_DASH);
|
||||
case 13:
|
||||
ACCEPT_TOKEN(aux_sym_SLASH);
|
||||
ACCEPT_TOKEN(anon_sym_SLASH);
|
||||
case 14:
|
||||
ACCEPT_TOKEN(aux_sym_CARET);
|
||||
ACCEPT_TOKEN(anon_sym_CARET);
|
||||
case 15:
|
||||
START_TOKEN();
|
||||
if ((lookahead == '\t') ||
|
||||
|
|
@ -183,7 +183,7 @@ static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
|||
ADVANCE(14);
|
||||
LEX_ERROR();
|
||||
case 16:
|
||||
ACCEPT_TOKEN(aux_sym_RPAREN);
|
||||
ACCEPT_TOKEN(anon_sym_RPAREN);
|
||||
case 17:
|
||||
START_TOKEN();
|
||||
if ((lookahead == '\t') ||
|
||||
|
|
@ -314,7 +314,7 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_quotient] = ACTIONS(SHIFT(3)),
|
||||
[sym_exponent] = ACTIONS(SHIFT(3)),
|
||||
[sym_group] = ACTIONS(SHIFT(3)),
|
||||
[aux_sym_LPAREN] = ACTIONS(SHIFT(4)),
|
||||
[anon_sym_LPAREN] = ACTIONS(SHIFT(4)),
|
||||
[sym_number] = ACTIONS(SHIFT(3)),
|
||||
[sym_variable] = ACTIONS(SHIFT(3)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
|
|
@ -325,20 +325,20 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
},
|
||||
[2] = {
|
||||
[ts_builtin_sym_end] = ACTIONS(REDUCE(sym_program, 1)),
|
||||
[aux_sym_PLUS] = ACTIONS(SHIFT(23)),
|
||||
[aux_sym_DASH] = ACTIONS(SHIFT(24)),
|
||||
[aux_sym_STAR] = ACTIONS(SHIFT(25)),
|
||||
[aux_sym_SLASH] = ACTIONS(SHIFT(26)),
|
||||
[aux_sym_CARET] = ACTIONS(SHIFT(27)),
|
||||
[anon_sym_PLUS] = ACTIONS(SHIFT(23)),
|
||||
[anon_sym_DASH] = ACTIONS(SHIFT(24)),
|
||||
[anon_sym_STAR] = ACTIONS(SHIFT(25)),
|
||||
[anon_sym_SLASH] = ACTIONS(SHIFT(26)),
|
||||
[anon_sym_CARET] = ACTIONS(SHIFT(27)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[3] = {
|
||||
[ts_builtin_sym_end] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[aux_sym_PLUS] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[aux_sym_DASH] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[aux_sym_STAR] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[aux_sym_SLASH] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[aux_sym_CARET] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[anon_sym_PLUS] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[anon_sym_DASH] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[anon_sym_STAR] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[anon_sym_SLASH] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[anon_sym_CARET] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[4] = {
|
||||
|
|
@ -350,31 +350,31 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_exponent] = ACTIONS(SHIFT(6)),
|
||||
[sym_group] = ACTIONS(SHIFT(6)),
|
||||
[ts_builtin_sym_error] = ACTIONS(SHIFT(7)),
|
||||
[aux_sym_LPAREN] = ACTIONS(SHIFT(8)),
|
||||
[anon_sym_LPAREN] = ACTIONS(SHIFT(8)),
|
||||
[sym_number] = ACTIONS(SHIFT(6)),
|
||||
[sym_variable] = ACTIONS(SHIFT(6)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[5] = {
|
||||
[aux_sym_PLUS] = ACTIONS(SHIFT(12)),
|
||||
[aux_sym_DASH] = ACTIONS(SHIFT(13)),
|
||||
[aux_sym_STAR] = ACTIONS(SHIFT(14)),
|
||||
[aux_sym_SLASH] = ACTIONS(SHIFT(15)),
|
||||
[aux_sym_CARET] = ACTIONS(SHIFT(16)),
|
||||
[aux_sym_RPAREN] = ACTIONS(SHIFT(22)),
|
||||
[anon_sym_PLUS] = ACTIONS(SHIFT(12)),
|
||||
[anon_sym_DASH] = ACTIONS(SHIFT(13)),
|
||||
[anon_sym_STAR] = ACTIONS(SHIFT(14)),
|
||||
[anon_sym_SLASH] = ACTIONS(SHIFT(15)),
|
||||
[anon_sym_CARET] = ACTIONS(SHIFT(16)),
|
||||
[anon_sym_RPAREN] = ACTIONS(SHIFT(22)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[6] = {
|
||||
[aux_sym_PLUS] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[aux_sym_DASH] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[aux_sym_STAR] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[aux_sym_SLASH] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[aux_sym_CARET] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[aux_sym_RPAREN] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[anon_sym_PLUS] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[anon_sym_DASH] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[anon_sym_STAR] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[anon_sym_SLASH] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[anon_sym_CARET] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[anon_sym_RPAREN] = ACTIONS(REDUCE(sym__expression, 1)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[7] = {
|
||||
[aux_sym_RPAREN] = ACTIONS(SHIFT(22)),
|
||||
[anon_sym_RPAREN] = ACTIONS(SHIFT(22)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[8] = {
|
||||
|
|
@ -386,31 +386,31 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_exponent] = ACTIONS(SHIFT(6)),
|
||||
[sym_group] = ACTIONS(SHIFT(6)),
|
||||
[ts_builtin_sym_error] = ACTIONS(SHIFT(10)),
|
||||
[aux_sym_LPAREN] = ACTIONS(SHIFT(8)),
|
||||
[anon_sym_LPAREN] = ACTIONS(SHIFT(8)),
|
||||
[sym_number] = ACTIONS(SHIFT(6)),
|
||||
[sym_variable] = ACTIONS(SHIFT(6)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[9] = {
|
||||
[aux_sym_PLUS] = ACTIONS(SHIFT(12)),
|
||||
[aux_sym_DASH] = ACTIONS(SHIFT(13)),
|
||||
[aux_sym_STAR] = ACTIONS(SHIFT(14)),
|
||||
[aux_sym_SLASH] = ACTIONS(SHIFT(15)),
|
||||
[aux_sym_CARET] = ACTIONS(SHIFT(16)),
|
||||
[aux_sym_RPAREN] = ACTIONS(SHIFT(11)),
|
||||
[anon_sym_PLUS] = ACTIONS(SHIFT(12)),
|
||||
[anon_sym_DASH] = ACTIONS(SHIFT(13)),
|
||||
[anon_sym_STAR] = ACTIONS(SHIFT(14)),
|
||||
[anon_sym_SLASH] = ACTIONS(SHIFT(15)),
|
||||
[anon_sym_CARET] = ACTIONS(SHIFT(16)),
|
||||
[anon_sym_RPAREN] = ACTIONS(SHIFT(11)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[10] = {
|
||||
[aux_sym_RPAREN] = ACTIONS(SHIFT(11)),
|
||||
[anon_sym_RPAREN] = ACTIONS(SHIFT(11)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[11] = {
|
||||
[aux_sym_PLUS] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[aux_sym_DASH] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[aux_sym_STAR] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[aux_sym_SLASH] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[aux_sym_CARET] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[aux_sym_RPAREN] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[anon_sym_PLUS] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[anon_sym_DASH] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[anon_sym_STAR] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[anon_sym_SLASH] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[anon_sym_CARET] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[anon_sym_RPAREN] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[12] = {
|
||||
|
|
@ -421,7 +421,7 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_quotient] = ACTIONS(SHIFT(6)),
|
||||
[sym_exponent] = ACTIONS(SHIFT(6)),
|
||||
[sym_group] = ACTIONS(SHIFT(6)),
|
||||
[aux_sym_LPAREN] = ACTIONS(SHIFT(8)),
|
||||
[anon_sym_LPAREN] = ACTIONS(SHIFT(8)),
|
||||
[sym_number] = ACTIONS(SHIFT(6)),
|
||||
[sym_variable] = ACTIONS(SHIFT(6)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
|
|
@ -434,7 +434,7 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_quotient] = ACTIONS(SHIFT(6)),
|
||||
[sym_exponent] = ACTIONS(SHIFT(6)),
|
||||
[sym_group] = ACTIONS(SHIFT(6)),
|
||||
[aux_sym_LPAREN] = ACTIONS(SHIFT(8)),
|
||||
[anon_sym_LPAREN] = ACTIONS(SHIFT(8)),
|
||||
[sym_number] = ACTIONS(SHIFT(6)),
|
||||
[sym_variable] = ACTIONS(SHIFT(6)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
|
|
@ -447,7 +447,7 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_quotient] = ACTIONS(SHIFT(6)),
|
||||
[sym_exponent] = ACTIONS(SHIFT(6)),
|
||||
[sym_group] = ACTIONS(SHIFT(6)),
|
||||
[aux_sym_LPAREN] = ACTIONS(SHIFT(8)),
|
||||
[anon_sym_LPAREN] = ACTIONS(SHIFT(8)),
|
||||
[sym_number] = ACTIONS(SHIFT(6)),
|
||||
[sym_variable] = ACTIONS(SHIFT(6)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
|
|
@ -460,7 +460,7 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_quotient] = ACTIONS(SHIFT(6)),
|
||||
[sym_exponent] = ACTIONS(SHIFT(6)),
|
||||
[sym_group] = ACTIONS(SHIFT(6)),
|
||||
[aux_sym_LPAREN] = ACTIONS(SHIFT(8)),
|
||||
[anon_sym_LPAREN] = ACTIONS(SHIFT(8)),
|
||||
[sym_number] = ACTIONS(SHIFT(6)),
|
||||
[sym_variable] = ACTIONS(SHIFT(6)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
|
|
@ -473,63 +473,63 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_quotient] = ACTIONS(SHIFT(6)),
|
||||
[sym_exponent] = ACTIONS(SHIFT(6)),
|
||||
[sym_group] = ACTIONS(SHIFT(6)),
|
||||
[aux_sym_LPAREN] = ACTIONS(SHIFT(8)),
|
||||
[anon_sym_LPAREN] = ACTIONS(SHIFT(8)),
|
||||
[sym_number] = ACTIONS(SHIFT(6)),
|
||||
[sym_variable] = ACTIONS(SHIFT(6)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[17] = {
|
||||
[aux_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[aux_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[aux_sym_STAR] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[aux_sym_SLASH] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[aux_sym_CARET] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[aux_sym_RPAREN] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[anon_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[anon_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[anon_sym_STAR] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[anon_sym_SLASH] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[anon_sym_CARET] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[anon_sym_RPAREN] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[18] = {
|
||||
[aux_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[aux_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[aux_sym_STAR] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[aux_sym_SLASH] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[aux_sym_CARET] = ACTIONS(SHIFT(16)),
|
||||
[aux_sym_RPAREN] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[anon_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[anon_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[anon_sym_STAR] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[anon_sym_SLASH] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[anon_sym_CARET] = ACTIONS(SHIFT(16)),
|
||||
[anon_sym_RPAREN] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[19] = {
|
||||
[aux_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[aux_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[aux_sym_STAR] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[aux_sym_SLASH] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[aux_sym_CARET] = ACTIONS(SHIFT(16)),
|
||||
[aux_sym_RPAREN] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[anon_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[anon_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[anon_sym_STAR] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[anon_sym_SLASH] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[anon_sym_CARET] = ACTIONS(SHIFT(16)),
|
||||
[anon_sym_RPAREN] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[20] = {
|
||||
[aux_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_difference, 3)),
|
||||
[aux_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_difference, 3)),
|
||||
[aux_sym_STAR] = ACTIONS(SHIFT(14)),
|
||||
[aux_sym_SLASH] = ACTIONS(SHIFT(15)),
|
||||
[aux_sym_CARET] = ACTIONS(SHIFT(16)),
|
||||
[aux_sym_RPAREN] = ACTIONS(REDUCE_FRAGILE(sym_difference, 3)),
|
||||
[anon_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_difference, 3)),
|
||||
[anon_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_difference, 3)),
|
||||
[anon_sym_STAR] = ACTIONS(SHIFT(14)),
|
||||
[anon_sym_SLASH] = ACTIONS(SHIFT(15)),
|
||||
[anon_sym_CARET] = ACTIONS(SHIFT(16)),
|
||||
[anon_sym_RPAREN] = ACTIONS(REDUCE_FRAGILE(sym_difference, 3)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[21] = {
|
||||
[aux_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_sum, 3)),
|
||||
[aux_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_sum, 3)),
|
||||
[aux_sym_STAR] = ACTIONS(SHIFT(14)),
|
||||
[aux_sym_SLASH] = ACTIONS(SHIFT(15)),
|
||||
[aux_sym_CARET] = ACTIONS(SHIFT(16)),
|
||||
[aux_sym_RPAREN] = ACTIONS(REDUCE_FRAGILE(sym_sum, 3)),
|
||||
[anon_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_sum, 3)),
|
||||
[anon_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_sum, 3)),
|
||||
[anon_sym_STAR] = ACTIONS(SHIFT(14)),
|
||||
[anon_sym_SLASH] = ACTIONS(SHIFT(15)),
|
||||
[anon_sym_CARET] = ACTIONS(SHIFT(16)),
|
||||
[anon_sym_RPAREN] = ACTIONS(REDUCE_FRAGILE(sym_sum, 3)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[22] = {
|
||||
[ts_builtin_sym_end] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[aux_sym_PLUS] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[aux_sym_DASH] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[aux_sym_STAR] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[aux_sym_SLASH] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[aux_sym_CARET] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[anon_sym_PLUS] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[anon_sym_DASH] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[anon_sym_STAR] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[anon_sym_SLASH] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[anon_sym_CARET] = ACTIONS(REDUCE(sym_group, 3)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[23] = {
|
||||
|
|
@ -540,7 +540,7 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_quotient] = ACTIONS(SHIFT(3)),
|
||||
[sym_exponent] = ACTIONS(SHIFT(3)),
|
||||
[sym_group] = ACTIONS(SHIFT(3)),
|
||||
[aux_sym_LPAREN] = ACTIONS(SHIFT(4)),
|
||||
[anon_sym_LPAREN] = ACTIONS(SHIFT(4)),
|
||||
[sym_number] = ACTIONS(SHIFT(3)),
|
||||
[sym_variable] = ACTIONS(SHIFT(3)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
|
|
@ -553,7 +553,7 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_quotient] = ACTIONS(SHIFT(3)),
|
||||
[sym_exponent] = ACTIONS(SHIFT(3)),
|
||||
[sym_group] = ACTIONS(SHIFT(3)),
|
||||
[aux_sym_LPAREN] = ACTIONS(SHIFT(4)),
|
||||
[anon_sym_LPAREN] = ACTIONS(SHIFT(4)),
|
||||
[sym_number] = ACTIONS(SHIFT(3)),
|
||||
[sym_variable] = ACTIONS(SHIFT(3)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
|
|
@ -566,7 +566,7 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_quotient] = ACTIONS(SHIFT(3)),
|
||||
[sym_exponent] = ACTIONS(SHIFT(3)),
|
||||
[sym_group] = ACTIONS(SHIFT(3)),
|
||||
[aux_sym_LPAREN] = ACTIONS(SHIFT(4)),
|
||||
[anon_sym_LPAREN] = ACTIONS(SHIFT(4)),
|
||||
[sym_number] = ACTIONS(SHIFT(3)),
|
||||
[sym_variable] = ACTIONS(SHIFT(3)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
|
|
@ -579,7 +579,7 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_quotient] = ACTIONS(SHIFT(3)),
|
||||
[sym_exponent] = ACTIONS(SHIFT(3)),
|
||||
[sym_group] = ACTIONS(SHIFT(3)),
|
||||
[aux_sym_LPAREN] = ACTIONS(SHIFT(4)),
|
||||
[anon_sym_LPAREN] = ACTIONS(SHIFT(4)),
|
||||
[sym_number] = ACTIONS(SHIFT(3)),
|
||||
[sym_variable] = ACTIONS(SHIFT(3)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
|
|
@ -592,54 +592,54 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_quotient] = ACTIONS(SHIFT(3)),
|
||||
[sym_exponent] = ACTIONS(SHIFT(3)),
|
||||
[sym_group] = ACTIONS(SHIFT(3)),
|
||||
[aux_sym_LPAREN] = ACTIONS(SHIFT(4)),
|
||||
[anon_sym_LPAREN] = ACTIONS(SHIFT(4)),
|
||||
[sym_number] = ACTIONS(SHIFT(3)),
|
||||
[sym_variable] = ACTIONS(SHIFT(3)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[28] = {
|
||||
[ts_builtin_sym_end] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[aux_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[aux_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[aux_sym_STAR] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[aux_sym_SLASH] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[aux_sym_CARET] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[anon_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[anon_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[anon_sym_STAR] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[anon_sym_SLASH] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[anon_sym_CARET] = ACTIONS(REDUCE_FRAGILE(sym_exponent, 3)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[29] = {
|
||||
[ts_builtin_sym_end] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[aux_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[aux_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[aux_sym_STAR] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[aux_sym_SLASH] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[aux_sym_CARET] = ACTIONS(SHIFT(27)),
|
||||
[anon_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[anon_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[anon_sym_STAR] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[anon_sym_SLASH] = ACTIONS(REDUCE_FRAGILE(sym_quotient, 3)),
|
||||
[anon_sym_CARET] = ACTIONS(SHIFT(27)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[30] = {
|
||||
[ts_builtin_sym_end] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[aux_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[aux_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[aux_sym_STAR] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[aux_sym_SLASH] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[aux_sym_CARET] = ACTIONS(SHIFT(27)),
|
||||
[anon_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[anon_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[anon_sym_STAR] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[anon_sym_SLASH] = ACTIONS(REDUCE_FRAGILE(sym_product, 3)),
|
||||
[anon_sym_CARET] = ACTIONS(SHIFT(27)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[31] = {
|
||||
[ts_builtin_sym_end] = ACTIONS(REDUCE_FRAGILE(sym_difference, 3)),
|
||||
[aux_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_difference, 3)),
|
||||
[aux_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_difference, 3)),
|
||||
[aux_sym_STAR] = ACTIONS(SHIFT(25)),
|
||||
[aux_sym_SLASH] = ACTIONS(SHIFT(26)),
|
||||
[aux_sym_CARET] = ACTIONS(SHIFT(27)),
|
||||
[anon_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_difference, 3)),
|
||||
[anon_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_difference, 3)),
|
||||
[anon_sym_STAR] = ACTIONS(SHIFT(25)),
|
||||
[anon_sym_SLASH] = ACTIONS(SHIFT(26)),
|
||||
[anon_sym_CARET] = ACTIONS(SHIFT(27)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
[32] = {
|
||||
[ts_builtin_sym_end] = ACTIONS(REDUCE_FRAGILE(sym_sum, 3)),
|
||||
[aux_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_sum, 3)),
|
||||
[aux_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_sum, 3)),
|
||||
[aux_sym_STAR] = ACTIONS(SHIFT(25)),
|
||||
[aux_sym_SLASH] = ACTIONS(SHIFT(26)),
|
||||
[aux_sym_CARET] = ACTIONS(SHIFT(27)),
|
||||
[anon_sym_PLUS] = ACTIONS(REDUCE_FRAGILE(sym_sum, 3)),
|
||||
[anon_sym_DASH] = ACTIONS(REDUCE_FRAGILE(sym_sum, 3)),
|
||||
[anon_sym_STAR] = ACTIONS(SHIFT(25)),
|
||||
[anon_sym_SLASH] = ACTIONS(SHIFT(26)),
|
||||
[anon_sym_CARET] = ACTIONS(SHIFT(27)),
|
||||
[sym_comment] = ACTIONS(SHIFT_EXTRA()),
|
||||
},
|
||||
};
|
||||
|
|
|
|||
2314
spec/fixtures/parsers/c.c
vendored
2314
spec/fixtures/parsers/c.c
vendored
File diff suppressed because it is too large
Load diff
3996
spec/fixtures/parsers/golang.c
vendored
3996
spec/fixtures/parsers/golang.c
vendored
File diff suppressed because it is too large
Load diff
38872
spec/fixtures/parsers/javascript.c
vendored
38872
spec/fixtures/parsers/javascript.c
vendored
File diff suppressed because it is too large
Load diff
248
spec/fixtures/parsers/json.c
vendored
248
spec/fixtures/parsers/json.c
vendored
|
|
@ -9,12 +9,12 @@ enum {
|
|||
sym_array,
|
||||
aux_sym_object_repeat1,
|
||||
aux_sym_array_repeat1,
|
||||
aux_sym_LBRACE,
|
||||
aux_sym_COLON,
|
||||
aux_sym_COMMA,
|
||||
aux_sym_RBRACE,
|
||||
aux_sym_LBRACK,
|
||||
aux_sym_RBRACK,
|
||||
anon_sym_LBRACE,
|
||||
anon_sym_COLON,
|
||||
anon_sym_COMMA,
|
||||
anon_sym_RBRACE,
|
||||
anon_sym_LBRACK,
|
||||
anon_sym_RBRACK,
|
||||
sym_string,
|
||||
sym_number,
|
||||
sym_null,
|
||||
|
|
@ -30,12 +30,12 @@ static const char *ts_symbol_names[] = {
|
|||
[aux_sym_array_repeat1] = "array_repeat1",
|
||||
[ts_builtin_sym_error] = "ERROR",
|
||||
[ts_builtin_sym_end] = "END",
|
||||
[aux_sym_LBRACE] = "{",
|
||||
[aux_sym_COLON] = ":",
|
||||
[aux_sym_COMMA] = ",",
|
||||
[aux_sym_RBRACE] = "}",
|
||||
[aux_sym_LBRACK] = "[",
|
||||
[aux_sym_RBRACK] = "]",
|
||||
[anon_sym_LBRACE] = "{",
|
||||
[anon_sym_COLON] = ":",
|
||||
[anon_sym_COMMA] = ",",
|
||||
[anon_sym_RBRACE] = "}",
|
||||
[anon_sym_LBRACK] = "[",
|
||||
[anon_sym_RBRACK] = "]",
|
||||
[sym_string] = "string",
|
||||
[sym_number] = "number",
|
||||
[sym_null] = "null",
|
||||
|
|
@ -51,12 +51,12 @@ static const TSNodeType ts_node_types[SYMBOL_COUNT] = {
|
|||
[aux_sym_array_repeat1] = TSNodeTypeHidden,
|
||||
[ts_builtin_sym_error] = TSNodeTypeNormal,
|
||||
[ts_builtin_sym_end] = TSNodeTypeHidden,
|
||||
[aux_sym_LBRACE] = TSNodeTypeConcrete,
|
||||
[aux_sym_COLON] = TSNodeTypeConcrete,
|
||||
[aux_sym_COMMA] = TSNodeTypeConcrete,
|
||||
[aux_sym_RBRACE] = TSNodeTypeConcrete,
|
||||
[aux_sym_LBRACK] = TSNodeTypeConcrete,
|
||||
[aux_sym_RBRACK] = TSNodeTypeConcrete,
|
||||
[anon_sym_LBRACE] = TSNodeTypeConcrete,
|
||||
[anon_sym_COLON] = TSNodeTypeConcrete,
|
||||
[anon_sym_COMMA] = TSNodeTypeConcrete,
|
||||
[anon_sym_RBRACE] = TSNodeTypeConcrete,
|
||||
[anon_sym_LBRACK] = TSNodeTypeConcrete,
|
||||
[anon_sym_RBRACK] = TSNodeTypeConcrete,
|
||||
[sym_string] = TSNodeTypeNormal,
|
||||
[sym_number] = TSNodeTypeNormal,
|
||||
[sym_null] = TSNodeTypeNormal,
|
||||
|
|
@ -136,7 +136,7 @@ static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
|||
ADVANCE(8);
|
||||
ACCEPT_TOKEN(sym_number);
|
||||
case 9:
|
||||
ACCEPT_TOKEN(aux_sym_LBRACK);
|
||||
ACCEPT_TOKEN(anon_sym_LBRACK);
|
||||
case 10:
|
||||
if (lookahead == 'a')
|
||||
ADVANCE(11);
|
||||
|
|
@ -184,7 +184,7 @@ static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
|||
case 22:
|
||||
ACCEPT_TOKEN(sym_true);
|
||||
case 23:
|
||||
ACCEPT_TOKEN(aux_sym_LBRACE);
|
||||
ACCEPT_TOKEN(anon_sym_LBRACE);
|
||||
case 24:
|
||||
START_TOKEN();
|
||||
if (lookahead == 0)
|
||||
|
|
@ -210,7 +210,7 @@ static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
|||
ADVANCE(27);
|
||||
LEX_ERROR();
|
||||
case 27:
|
||||
ACCEPT_TOKEN(aux_sym_RBRACE);
|
||||
ACCEPT_TOKEN(anon_sym_RBRACE);
|
||||
case 28:
|
||||
START_TOKEN();
|
||||
if ((lookahead == '\t') ||
|
||||
|
|
@ -236,7 +236,7 @@ static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
|||
ADVANCE(23);
|
||||
LEX_ERROR();
|
||||
case 29:
|
||||
ACCEPT_TOKEN(aux_sym_RBRACK);
|
||||
ACCEPT_TOKEN(anon_sym_RBRACK);
|
||||
case 30:
|
||||
START_TOKEN();
|
||||
if ((lookahead == '\t') ||
|
||||
|
|
@ -250,7 +250,7 @@ static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
|||
ADVANCE(29);
|
||||
LEX_ERROR();
|
||||
case 31:
|
||||
ACCEPT_TOKEN(aux_sym_COMMA);
|
||||
ACCEPT_TOKEN(anon_sym_COMMA);
|
||||
case 32:
|
||||
START_TOKEN();
|
||||
if ((lookahead == '\t') ||
|
||||
|
|
@ -284,7 +284,7 @@ static TSTree *ts_lex(TSLexer *lexer, TSStateId lex_state) {
|
|||
ADVANCE(35);
|
||||
LEX_ERROR();
|
||||
case 35:
|
||||
ACCEPT_TOKEN(aux_sym_COLON);
|
||||
ACCEPT_TOKEN(anon_sym_COLON);
|
||||
case 36:
|
||||
START_TOKEN();
|
||||
if ((lookahead == '\t') ||
|
||||
|
|
@ -454,8 +454,8 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym__value] = ACTIONS(SHIFT(1)),
|
||||
[sym_object] = ACTIONS(SHIFT(2)),
|
||||
[sym_array] = ACTIONS(SHIFT(2)),
|
||||
[aux_sym_LBRACE] = ACTIONS(SHIFT(3)),
|
||||
[aux_sym_LBRACK] = ACTIONS(SHIFT(4)),
|
||||
[anon_sym_LBRACE] = ACTIONS(SHIFT(3)),
|
||||
[anon_sym_LBRACK] = ACTIONS(SHIFT(4)),
|
||||
[sym_string] = ACTIONS(SHIFT(2)),
|
||||
[sym_number] = ACTIONS(SHIFT(2)),
|
||||
[sym_null] = ACTIONS(SHIFT(2)),
|
||||
|
|
@ -470,7 +470,7 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
},
|
||||
[3] = {
|
||||
[ts_builtin_sym_error] = ACTIONS(SHIFT(58)),
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(59)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(59)),
|
||||
[sym_string] = ACTIONS(SHIFT(60)),
|
||||
},
|
||||
[4] = {
|
||||
|
|
@ -478,9 +478,9 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_object] = ACTIONS(SHIFT(6)),
|
||||
[sym_array] = ACTIONS(SHIFT(6)),
|
||||
[ts_builtin_sym_error] = ACTIONS(SHIFT(5)),
|
||||
[aux_sym_LBRACE] = ACTIONS(SHIFT(7)),
|
||||
[aux_sym_LBRACK] = ACTIONS(SHIFT(8)),
|
||||
[aux_sym_RBRACK] = ACTIONS(SHIFT(9)),
|
||||
[anon_sym_LBRACE] = ACTIONS(SHIFT(7)),
|
||||
[anon_sym_LBRACK] = ACTIONS(SHIFT(8)),
|
||||
[anon_sym_RBRACK] = ACTIONS(SHIFT(9)),
|
||||
[sym_string] = ACTIONS(SHIFT(6)),
|
||||
[sym_number] = ACTIONS(SHIFT(6)),
|
||||
[sym_null] = ACTIONS(SHIFT(6)),
|
||||
|
|
@ -489,17 +489,17 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
},
|
||||
[5] = {
|
||||
[aux_sym_array_repeat1] = ACTIONS(SHIFT(55)),
|
||||
[aux_sym_COMMA] = ACTIONS(SHIFT(13)),
|
||||
[aux_sym_RBRACK] = ACTIONS(SHIFT(56)),
|
||||
[anon_sym_COMMA] = ACTIONS(SHIFT(13)),
|
||||
[anon_sym_RBRACK] = ACTIONS(SHIFT(56)),
|
||||
},
|
||||
[6] = {
|
||||
[aux_sym_array_repeat1] = ACTIONS(REDUCE(sym__value, 1)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym__value, 1)),
|
||||
[aux_sym_RBRACK] = ACTIONS(REDUCE(sym__value, 1)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym__value, 1)),
|
||||
[anon_sym_RBRACK] = ACTIONS(REDUCE(sym__value, 1)),
|
||||
},
|
||||
[7] = {
|
||||
[ts_builtin_sym_error] = ACTIONS(SHIFT(18)),
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(19)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(19)),
|
||||
[sym_string] = ACTIONS(SHIFT(20)),
|
||||
},
|
||||
[8] = {
|
||||
|
|
@ -507,9 +507,9 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_object] = ACTIONS(SHIFT(6)),
|
||||
[sym_array] = ACTIONS(SHIFT(6)),
|
||||
[ts_builtin_sym_error] = ACTIONS(SHIFT(10)),
|
||||
[aux_sym_LBRACE] = ACTIONS(SHIFT(7)),
|
||||
[aux_sym_LBRACK] = ACTIONS(SHIFT(8)),
|
||||
[aux_sym_RBRACK] = ACTIONS(SHIFT(11)),
|
||||
[anon_sym_LBRACE] = ACTIONS(SHIFT(7)),
|
||||
[anon_sym_LBRACK] = ACTIONS(SHIFT(8)),
|
||||
[anon_sym_RBRACK] = ACTIONS(SHIFT(11)),
|
||||
[sym_string] = ACTIONS(SHIFT(6)),
|
||||
[sym_number] = ACTIONS(SHIFT(6)),
|
||||
[sym_null] = ACTIONS(SHIFT(6)),
|
||||
|
|
@ -521,24 +521,24 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
},
|
||||
[10] = {
|
||||
[aux_sym_array_repeat1] = ACTIONS(SHIFT(12)),
|
||||
[aux_sym_COMMA] = ACTIONS(SHIFT(13)),
|
||||
[aux_sym_RBRACK] = ACTIONS(SHIFT(14)),
|
||||
[anon_sym_COMMA] = ACTIONS(SHIFT(13)),
|
||||
[anon_sym_RBRACK] = ACTIONS(SHIFT(14)),
|
||||
},
|
||||
[11] = {
|
||||
[aux_sym_array_repeat1] = ACTIONS(REDUCE(sym_array, 2)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_array, 2)),
|
||||
[aux_sym_RBRACK] = ACTIONS(REDUCE(sym_array, 2)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_array, 2)),
|
||||
[anon_sym_RBRACK] = ACTIONS(REDUCE(sym_array, 2)),
|
||||
},
|
||||
[12] = {
|
||||
[aux_sym_RBRACK] = ACTIONS(SHIFT(17)),
|
||||
[anon_sym_RBRACK] = ACTIONS(SHIFT(17)),
|
||||
},
|
||||
[13] = {
|
||||
[sym__value] = ACTIONS(SHIFT(15)),
|
||||
[sym_object] = ACTIONS(SHIFT(6)),
|
||||
[sym_array] = ACTIONS(SHIFT(6)),
|
||||
[ts_builtin_sym_error] = ACTIONS(SHIFT(15)),
|
||||
[aux_sym_LBRACE] = ACTIONS(SHIFT(7)),
|
||||
[aux_sym_LBRACK] = ACTIONS(SHIFT(8)),
|
||||
[anon_sym_LBRACE] = ACTIONS(SHIFT(7)),
|
||||
[anon_sym_LBRACK] = ACTIONS(SHIFT(8)),
|
||||
[sym_string] = ACTIONS(SHIFT(6)),
|
||||
[sym_number] = ACTIONS(SHIFT(6)),
|
||||
[sym_null] = ACTIONS(SHIFT(6)),
|
||||
|
|
@ -547,41 +547,41 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
},
|
||||
[14] = {
|
||||
[aux_sym_array_repeat1] = ACTIONS(REDUCE(sym_array, 3)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_array, 3)),
|
||||
[aux_sym_RBRACK] = ACTIONS(REDUCE(sym_array, 3)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_array, 3)),
|
||||
[anon_sym_RBRACK] = ACTIONS(REDUCE(sym_array, 3)),
|
||||
},
|
||||
[15] = {
|
||||
[aux_sym_array_repeat1] = ACTIONS(SHIFT(16)),
|
||||
[aux_sym_COMMA] = ACTIONS(SHIFT(13)),
|
||||
[aux_sym_RBRACK] = ACTIONS(REDUCE(aux_sym_array_repeat1, 2)),
|
||||
[anon_sym_COMMA] = ACTIONS(SHIFT(13)),
|
||||
[anon_sym_RBRACK] = ACTIONS(REDUCE(aux_sym_array_repeat1, 2)),
|
||||
},
|
||||
[16] = {
|
||||
[aux_sym_RBRACK] = ACTIONS(REDUCE(aux_sym_array_repeat1, 3)),
|
||||
[anon_sym_RBRACK] = ACTIONS(REDUCE(aux_sym_array_repeat1, 3)),
|
||||
},
|
||||
[17] = {
|
||||
[aux_sym_array_repeat1] = ACTIONS(REDUCE(sym_array, 4)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_array, 4)),
|
||||
[aux_sym_RBRACK] = ACTIONS(REDUCE(sym_array, 4)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_array, 4)),
|
||||
[anon_sym_RBRACK] = ACTIONS(REDUCE(sym_array, 4)),
|
||||
},
|
||||
[18] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(SHIFT(52)),
|
||||
[aux_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(53)),
|
||||
[anon_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(53)),
|
||||
},
|
||||
[19] = {
|
||||
[aux_sym_array_repeat1] = ACTIONS(REDUCE(sym_object, 2)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_object, 2)),
|
||||
[aux_sym_RBRACK] = ACTIONS(REDUCE(sym_object, 2)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_object, 2)),
|
||||
[anon_sym_RBRACK] = ACTIONS(REDUCE(sym_object, 2)),
|
||||
},
|
||||
[20] = {
|
||||
[aux_sym_COLON] = ACTIONS(SHIFT(21)),
|
||||
[anon_sym_COLON] = ACTIONS(SHIFT(21)),
|
||||
},
|
||||
[21] = {
|
||||
[sym__value] = ACTIONS(SHIFT(22)),
|
||||
[sym_object] = ACTIONS(SHIFT(23)),
|
||||
[sym_array] = ACTIONS(SHIFT(23)),
|
||||
[aux_sym_LBRACE] = ACTIONS(SHIFT(24)),
|
||||
[aux_sym_LBRACK] = ACTIONS(SHIFT(25)),
|
||||
[anon_sym_LBRACE] = ACTIONS(SHIFT(24)),
|
||||
[anon_sym_LBRACK] = ACTIONS(SHIFT(25)),
|
||||
[sym_string] = ACTIONS(SHIFT(23)),
|
||||
[sym_number] = ACTIONS(SHIFT(23)),
|
||||
[sym_null] = ACTIONS(SHIFT(23)),
|
||||
|
|
@ -590,17 +590,17 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
},
|
||||
[22] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(SHIFT(49)),
|
||||
[aux_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(50)),
|
||||
[anon_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(50)),
|
||||
},
|
||||
[23] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(REDUCE(sym__value, 1)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym__value, 1)),
|
||||
[aux_sym_RBRACE] = ACTIONS(REDUCE(sym__value, 1)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym__value, 1)),
|
||||
[anon_sym_RBRACE] = ACTIONS(REDUCE(sym__value, 1)),
|
||||
},
|
||||
[24] = {
|
||||
[ts_builtin_sym_error] = ACTIONS(SHIFT(31)),
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(32)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(32)),
|
||||
[sym_string] = ACTIONS(SHIFT(33)),
|
||||
},
|
||||
[25] = {
|
||||
|
|
@ -608,9 +608,9 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[sym_object] = ACTIONS(SHIFT(6)),
|
||||
[sym_array] = ACTIONS(SHIFT(6)),
|
||||
[ts_builtin_sym_error] = ACTIONS(SHIFT(26)),
|
||||
[aux_sym_LBRACE] = ACTIONS(SHIFT(7)),
|
||||
[aux_sym_LBRACK] = ACTIONS(SHIFT(8)),
|
||||
[aux_sym_RBRACK] = ACTIONS(SHIFT(27)),
|
||||
[anon_sym_LBRACE] = ACTIONS(SHIFT(7)),
|
||||
[anon_sym_LBRACK] = ACTIONS(SHIFT(8)),
|
||||
[anon_sym_RBRACK] = ACTIONS(SHIFT(27)),
|
||||
[sym_string] = ACTIONS(SHIFT(6)),
|
||||
[sym_number] = ACTIONS(SHIFT(6)),
|
||||
[sym_null] = ACTIONS(SHIFT(6)),
|
||||
|
|
@ -619,46 +619,46 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
},
|
||||
[26] = {
|
||||
[aux_sym_array_repeat1] = ACTIONS(SHIFT(28)),
|
||||
[aux_sym_COMMA] = ACTIONS(SHIFT(13)),
|
||||
[aux_sym_RBRACK] = ACTIONS(SHIFT(29)),
|
||||
[anon_sym_COMMA] = ACTIONS(SHIFT(13)),
|
||||
[anon_sym_RBRACK] = ACTIONS(SHIFT(29)),
|
||||
},
|
||||
[27] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(REDUCE(sym_array, 2)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_array, 2)),
|
||||
[aux_sym_RBRACE] = ACTIONS(REDUCE(sym_array, 2)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_array, 2)),
|
||||
[anon_sym_RBRACE] = ACTIONS(REDUCE(sym_array, 2)),
|
||||
},
|
||||
[28] = {
|
||||
[aux_sym_RBRACK] = ACTIONS(SHIFT(30)),
|
||||
[anon_sym_RBRACK] = ACTIONS(SHIFT(30)),
|
||||
},
|
||||
[29] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(REDUCE(sym_array, 3)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_array, 3)),
|
||||
[aux_sym_RBRACE] = ACTIONS(REDUCE(sym_array, 3)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_array, 3)),
|
||||
[anon_sym_RBRACE] = ACTIONS(REDUCE(sym_array, 3)),
|
||||
},
|
||||
[30] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(REDUCE(sym_array, 4)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_array, 4)),
|
||||
[aux_sym_RBRACE] = ACTIONS(REDUCE(sym_array, 4)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_array, 4)),
|
||||
[anon_sym_RBRACE] = ACTIONS(REDUCE(sym_array, 4)),
|
||||
},
|
||||
[31] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(SHIFT(46)),
|
||||
[aux_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(47)),
|
||||
[anon_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(47)),
|
||||
},
|
||||
[32] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(REDUCE(sym_object, 2)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_object, 2)),
|
||||
[aux_sym_RBRACE] = ACTIONS(REDUCE(sym_object, 2)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_object, 2)),
|
||||
[anon_sym_RBRACE] = ACTIONS(REDUCE(sym_object, 2)),
|
||||
},
|
||||
[33] = {
|
||||
[aux_sym_COLON] = ACTIONS(SHIFT(34)),
|
||||
[anon_sym_COLON] = ACTIONS(SHIFT(34)),
|
||||
},
|
||||
[34] = {
|
||||
[sym__value] = ACTIONS(SHIFT(35)),
|
||||
[sym_object] = ACTIONS(SHIFT(23)),
|
||||
[sym_array] = ACTIONS(SHIFT(23)),
|
||||
[aux_sym_LBRACE] = ACTIONS(SHIFT(24)),
|
||||
[aux_sym_LBRACK] = ACTIONS(SHIFT(25)),
|
||||
[anon_sym_LBRACE] = ACTIONS(SHIFT(24)),
|
||||
[anon_sym_LBRACK] = ACTIONS(SHIFT(25)),
|
||||
[sym_string] = ACTIONS(SHIFT(23)),
|
||||
[sym_number] = ACTIONS(SHIFT(23)),
|
||||
[sym_null] = ACTIONS(SHIFT(23)),
|
||||
|
|
@ -667,11 +667,11 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
},
|
||||
[35] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(SHIFT(36)),
|
||||
[aux_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(38)),
|
||||
[anon_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(38)),
|
||||
},
|
||||
[36] = {
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(45)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(45)),
|
||||
},
|
||||
[37] = {
|
||||
[ts_builtin_sym_error] = ACTIONS(SHIFT(39)),
|
||||
|
|
@ -679,23 +679,23 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
},
|
||||
[38] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(REDUCE(sym_object, 5)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_object, 5)),
|
||||
[aux_sym_RBRACE] = ACTIONS(REDUCE(sym_object, 5)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_object, 5)),
|
||||
[anon_sym_RBRACE] = ACTIONS(REDUCE(sym_object, 5)),
|
||||
},
|
||||
[39] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(SHIFT(44)),
|
||||
[aux_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[aux_sym_RBRACE] = ACTIONS(REDUCE(aux_sym_object_repeat1, 2)),
|
||||
[anon_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[anon_sym_RBRACE] = ACTIONS(REDUCE(aux_sym_object_repeat1, 2)),
|
||||
},
|
||||
[40] = {
|
||||
[aux_sym_COLON] = ACTIONS(SHIFT(41)),
|
||||
[anon_sym_COLON] = ACTIONS(SHIFT(41)),
|
||||
},
|
||||
[41] = {
|
||||
[sym__value] = ACTIONS(SHIFT(42)),
|
||||
[sym_object] = ACTIONS(SHIFT(23)),
|
||||
[sym_array] = ACTIONS(SHIFT(23)),
|
||||
[aux_sym_LBRACE] = ACTIONS(SHIFT(24)),
|
||||
[aux_sym_LBRACK] = ACTIONS(SHIFT(25)),
|
||||
[anon_sym_LBRACE] = ACTIONS(SHIFT(24)),
|
||||
[anon_sym_LBRACK] = ACTIONS(SHIFT(25)),
|
||||
[sym_string] = ACTIONS(SHIFT(23)),
|
||||
[sym_number] = ACTIONS(SHIFT(23)),
|
||||
[sym_null] = ACTIONS(SHIFT(23)),
|
||||
|
|
@ -704,61 +704,61 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
},
|
||||
[42] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(SHIFT(43)),
|
||||
[aux_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[aux_sym_RBRACE] = ACTIONS(REDUCE(aux_sym_object_repeat1, 4)),
|
||||
[anon_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[anon_sym_RBRACE] = ACTIONS(REDUCE(aux_sym_object_repeat1, 4)),
|
||||
},
|
||||
[43] = {
|
||||
[aux_sym_RBRACE] = ACTIONS(REDUCE(aux_sym_object_repeat1, 5)),
|
||||
[anon_sym_RBRACE] = ACTIONS(REDUCE(aux_sym_object_repeat1, 5)),
|
||||
},
|
||||
[44] = {
|
||||
[aux_sym_RBRACE] = ACTIONS(REDUCE(aux_sym_object_repeat1, 3)),
|
||||
[anon_sym_RBRACE] = ACTIONS(REDUCE(aux_sym_object_repeat1, 3)),
|
||||
},
|
||||
[45] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(REDUCE(sym_object, 6)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_object, 6)),
|
||||
[aux_sym_RBRACE] = ACTIONS(REDUCE(sym_object, 6)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_object, 6)),
|
||||
[anon_sym_RBRACE] = ACTIONS(REDUCE(sym_object, 6)),
|
||||
},
|
||||
[46] = {
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(48)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(48)),
|
||||
},
|
||||
[47] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(REDUCE(sym_object, 3)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_object, 3)),
|
||||
[aux_sym_RBRACE] = ACTIONS(REDUCE(sym_object, 3)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_object, 3)),
|
||||
[anon_sym_RBRACE] = ACTIONS(REDUCE(sym_object, 3)),
|
||||
},
|
||||
[48] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(REDUCE(sym_object, 4)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_object, 4)),
|
||||
[aux_sym_RBRACE] = ACTIONS(REDUCE(sym_object, 4)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_object, 4)),
|
||||
[anon_sym_RBRACE] = ACTIONS(REDUCE(sym_object, 4)),
|
||||
},
|
||||
[49] = {
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(51)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(51)),
|
||||
},
|
||||
[50] = {
|
||||
[aux_sym_array_repeat1] = ACTIONS(REDUCE(sym_object, 5)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_object, 5)),
|
||||
[aux_sym_RBRACK] = ACTIONS(REDUCE(sym_object, 5)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_object, 5)),
|
||||
[anon_sym_RBRACK] = ACTIONS(REDUCE(sym_object, 5)),
|
||||
},
|
||||
[51] = {
|
||||
[aux_sym_array_repeat1] = ACTIONS(REDUCE(sym_object, 6)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_object, 6)),
|
||||
[aux_sym_RBRACK] = ACTIONS(REDUCE(sym_object, 6)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_object, 6)),
|
||||
[anon_sym_RBRACK] = ACTIONS(REDUCE(sym_object, 6)),
|
||||
},
|
||||
[52] = {
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(54)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(54)),
|
||||
},
|
||||
[53] = {
|
||||
[aux_sym_array_repeat1] = ACTIONS(REDUCE(sym_object, 3)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_object, 3)),
|
||||
[aux_sym_RBRACK] = ACTIONS(REDUCE(sym_object, 3)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_object, 3)),
|
||||
[anon_sym_RBRACK] = ACTIONS(REDUCE(sym_object, 3)),
|
||||
},
|
||||
[54] = {
|
||||
[aux_sym_array_repeat1] = ACTIONS(REDUCE(sym_object, 4)),
|
||||
[aux_sym_COMMA] = ACTIONS(REDUCE(sym_object, 4)),
|
||||
[aux_sym_RBRACK] = ACTIONS(REDUCE(sym_object, 4)),
|
||||
[anon_sym_COMMA] = ACTIONS(REDUCE(sym_object, 4)),
|
||||
[anon_sym_RBRACK] = ACTIONS(REDUCE(sym_object, 4)),
|
||||
},
|
||||
[55] = {
|
||||
[aux_sym_RBRACK] = ACTIONS(SHIFT(57)),
|
||||
[anon_sym_RBRACK] = ACTIONS(SHIFT(57)),
|
||||
},
|
||||
[56] = {
|
||||
[ts_builtin_sym_end] = ACTIONS(REDUCE(sym_array, 3)),
|
||||
|
|
@ -768,21 +768,21 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
},
|
||||
[58] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(SHIFT(66)),
|
||||
[aux_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(67)),
|
||||
[anon_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(67)),
|
||||
},
|
||||
[59] = {
|
||||
[ts_builtin_sym_end] = ACTIONS(REDUCE(sym_object, 2)),
|
||||
},
|
||||
[60] = {
|
||||
[aux_sym_COLON] = ACTIONS(SHIFT(61)),
|
||||
[anon_sym_COLON] = ACTIONS(SHIFT(61)),
|
||||
},
|
||||
[61] = {
|
||||
[sym__value] = ACTIONS(SHIFT(62)),
|
||||
[sym_object] = ACTIONS(SHIFT(23)),
|
||||
[sym_array] = ACTIONS(SHIFT(23)),
|
||||
[aux_sym_LBRACE] = ACTIONS(SHIFT(24)),
|
||||
[aux_sym_LBRACK] = ACTIONS(SHIFT(25)),
|
||||
[anon_sym_LBRACE] = ACTIONS(SHIFT(24)),
|
||||
[anon_sym_LBRACK] = ACTIONS(SHIFT(25)),
|
||||
[sym_string] = ACTIONS(SHIFT(23)),
|
||||
[sym_number] = ACTIONS(SHIFT(23)),
|
||||
[sym_null] = ACTIONS(SHIFT(23)),
|
||||
|
|
@ -791,11 +791,11 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
},
|
||||
[62] = {
|
||||
[aux_sym_object_repeat1] = ACTIONS(SHIFT(63)),
|
||||
[aux_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(64)),
|
||||
[anon_sym_COMMA] = ACTIONS(SHIFT(37)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(64)),
|
||||
},
|
||||
[63] = {
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(65)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(65)),
|
||||
},
|
||||
[64] = {
|
||||
[ts_builtin_sym_end] = ACTIONS(REDUCE(sym_object, 5)),
|
||||
|
|
@ -804,7 +804,7 @@ static const TSParseAction *ts_parse_actions[STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[ts_builtin_sym_end] = ACTIONS(REDUCE(sym_object, 6)),
|
||||
},
|
||||
[66] = {
|
||||
[aux_sym_RBRACE] = ACTIONS(SHIFT(68)),
|
||||
[anon_sym_RBRACE] = ACTIONS(SHIFT(68)),
|
||||
},
|
||||
[67] = {
|
||||
[ts_builtin_sym_end] = ACTIONS(REDUCE(sym_object, 3)),
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@
|
|||
|
||||
namespace tree_sitter {
|
||||
namespace generate_code {
|
||||
|
||||
using std::function;
|
||||
using std::map;
|
||||
using std::set;
|
||||
|
|
@ -22,6 +21,14 @@ using std::to_string;
|
|||
using std::vector;
|
||||
using util::escape_char;
|
||||
|
||||
static RuleEntry ERROR_ENTRY{
|
||||
"error", rule_ptr(), RuleEntryTypeNamed,
|
||||
};
|
||||
|
||||
static RuleEntry EOF_ENTRY{
|
||||
"end", rule_ptr(), RuleEntryTypeAuxiliary,
|
||||
};
|
||||
|
||||
static const map<char, string> REPLACEMENTS({
|
||||
{ '~', "TILDE" },
|
||||
{ '`', "BQUOTE" },
|
||||
|
|
@ -142,21 +149,7 @@ class CCodeGenerator {
|
|||
for (const auto &symbol : parse_table.symbols) {
|
||||
line("[" + symbol_id(symbol) + "] = ");
|
||||
|
||||
if (symbol == rules::ERROR()) {
|
||||
add("TSNodeTypeNormal,");
|
||||
continue;
|
||||
} else if (symbol == rules::END_OF_INPUT()) {
|
||||
add("TSNodeTypeHidden,");
|
||||
continue;
|
||||
}
|
||||
|
||||
RuleEntry entry = entry_for_symbol(symbol);
|
||||
if (entry.name[0] == '_') {
|
||||
add("TSNodeTypeHidden,");
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (entry.type) {
|
||||
switch (entry_for_symbol(symbol).type) {
|
||||
case RuleEntryTypeNamed:
|
||||
add("TSNodeTypeNormal,");
|
||||
break;
|
||||
|
|
@ -164,6 +157,7 @@ class CCodeGenerator {
|
|||
add("TSNodeTypeConcrete,");
|
||||
break;
|
||||
case RuleEntryTypeHidden:
|
||||
case RuleEntryTypeAuxiliary:
|
||||
add("TSNodeTypeHidden,");
|
||||
break;
|
||||
}
|
||||
|
|
@ -344,36 +338,34 @@ class CCodeGenerator {
|
|||
}
|
||||
|
||||
string symbol_id(const rules::Symbol &symbol) {
|
||||
if (symbol.is_built_in()) {
|
||||
if (symbol == rules::ERROR())
|
||||
return "ts_builtin_sym_error";
|
||||
else if (symbol == rules::END_OF_INPUT())
|
||||
return "ts_builtin_sym_end";
|
||||
else
|
||||
return "";
|
||||
} else {
|
||||
string name = sanitize_name(rule_name(symbol));
|
||||
if (entry_for_symbol(symbol).type == RuleEntryTypeNamed)
|
||||
return "sym_" + name;
|
||||
else
|
||||
RuleEntry entry = entry_for_symbol(symbol);
|
||||
string name = sanitize_name(entry.name);
|
||||
if (symbol.is_built_in())
|
||||
return "ts_builtin_sym_" + name;
|
||||
|
||||
switch (entry.type) {
|
||||
case RuleEntryTypeAuxiliary:
|
||||
return "aux_sym_" + name;
|
||||
case RuleEntryTypeAnonymous:
|
||||
return "anon_sym_" + name;
|
||||
default:
|
||||
return "sym_" + name;
|
||||
}
|
||||
}
|
||||
|
||||
string symbol_name(const rules::Symbol &symbol) {
|
||||
if (symbol.is_built_in()) {
|
||||
if (symbol == rules::ERROR())
|
||||
return "ERROR";
|
||||
else if (symbol == rules::END_OF_INPUT())
|
||||
return "END";
|
||||
else
|
||||
return "";
|
||||
} else {
|
||||
return rule_name(symbol);
|
||||
}
|
||||
if (symbol == rules::ERROR())
|
||||
return "ERROR";
|
||||
if (symbol == rules::END_OF_INPUT())
|
||||
return "END";
|
||||
return entry_for_symbol(symbol).name;
|
||||
}
|
||||
|
||||
const RuleEntry &entry_for_symbol(const rules::Symbol &symbol) {
|
||||
if (symbol == rules::ERROR())
|
||||
return ERROR_ENTRY;
|
||||
if (symbol == rules::END_OF_INPUT())
|
||||
return EOF_ENTRY;
|
||||
if (symbol.is_token)
|
||||
return lexical_grammar.rules[symbol.index];
|
||||
else
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class ExpandRepeats : public rules::IdentityRuleFn {
|
|||
helper_rule_name,
|
||||
Seq::build({ inner_rule, Choice::build({ repeat_symbol.copy(),
|
||||
make_shared<Blank>() }) }),
|
||||
RuleEntryTypeHidden,
|
||||
RuleEntryTypeAuxiliary,
|
||||
});
|
||||
return repeat_symbol.copy();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,12 +76,12 @@ class TokenExtractor : public rules::IdentityRuleFn {
|
|||
}
|
||||
|
||||
rule_ptr apply_to(const rules::Pattern *rule) {
|
||||
return apply_to_token(rule, RuleEntryTypeHidden);
|
||||
return apply_to_token(rule, RuleEntryTypeAuxiliary);
|
||||
}
|
||||
|
||||
rule_ptr apply_to(const rules::Metadata *rule) {
|
||||
if (rule->value_for(rules::IS_TOKEN) > 0)
|
||||
return apply_to_token(rule->rule.get(), RuleEntryTypeHidden);
|
||||
return apply_to_token(rule->rule.get(), RuleEntryTypeAuxiliary);
|
||||
else
|
||||
return rules::IdentityRuleFn::apply_to(rule);
|
||||
}
|
||||
|
|
@ -107,9 +107,9 @@ tuple<SyntaxGrammar, LexicalGrammar, const GrammarError *> extract_tokens(
|
|||
* First, extract all of the grammar's tokens into the lexical grammar.
|
||||
*/
|
||||
vector<RuleEntry> processed_rules;
|
||||
for (const auto &pair : grammar.rules)
|
||||
for (const RuleEntry &entry : grammar.rules)
|
||||
processed_rules.push_back({
|
||||
pair.first, extractor.apply(pair.second), RuleEntryTypeNamed,
|
||||
entry.name, extractor.apply(entry.rule), entry.type,
|
||||
});
|
||||
lexical_grammar.rules = extractor.tokens;
|
||||
|
||||
|
|
|
|||
|
|
@ -55,7 +55,11 @@ pair<InternedGrammar, const GrammarError *> intern_symbols(const Grammar &gramma
|
|||
auto new_rule = interner.apply(pair.second);
|
||||
if (!interner.missing_rule_name.empty())
|
||||
return { result, missing_rule_error(interner.missing_rule_name) };
|
||||
result.rules.push_back({ pair.first, new_rule });
|
||||
|
||||
result.rules.push_back({
|
||||
pair.first, new_rule,
|
||||
pair.first[0] == '_' ? RuleEntryTypeHidden : RuleEntryTypeNamed,
|
||||
});
|
||||
}
|
||||
|
||||
for (auto &rule : grammar.ubiquitous_tokens()) {
|
||||
|
|
|
|||
|
|
@ -7,12 +7,13 @@
|
|||
#include <vector>
|
||||
#include "tree_sitter/compiler.h"
|
||||
#include "compiler/rules/symbol.h"
|
||||
#include "compiler/prepared_grammar.h"
|
||||
|
||||
namespace tree_sitter {
|
||||
namespace prepare_grammar {
|
||||
|
||||
struct InternedGrammar {
|
||||
std::vector<std::pair<std::string, rule_ptr>> rules;
|
||||
std::vector<RuleEntry> rules;
|
||||
std::set<rule_ptr> ubiquitous_tokens;
|
||||
std::set<std::set<rules::Symbol>> expected_conflicts;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ enum RuleEntryType {
|
|||
RuleEntryTypeNamed,
|
||||
RuleEntryTypeAnonymous,
|
||||
RuleEntryTypeHidden,
|
||||
RuleEntryTypeAuxiliary,
|
||||
};
|
||||
|
||||
struct RuleEntry {
|
||||
|
|
|
|||
|
|
@ -16,10 +16,11 @@ TSTree *ts_tree_make_leaf(TSSymbol sym, TSLength size, TSLength padding,
|
|||
.child_count = 0,
|
||||
.children = NULL,
|
||||
.padding = padding,
|
||||
.options = (TSTreeOptions){
|
||||
.hidden = (node_type == TSNodeTypeHidden),
|
||||
.concrete = (node_type == TSNodeTypeConcrete),
|
||||
},
|
||||
.options =
|
||||
(TSTreeOptions){
|
||||
.hidden = (node_type == TSNodeTypeHidden),
|
||||
.concrete = (node_type == TSNodeTypeConcrete),
|
||||
},
|
||||
};
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue