Refactor logic for marking '_'-prefixed rules as hidden

This commit is contained in:
Max Brunsfeld 2015-09-06 16:46:29 -07:00
parent 9591c88f39
commit f9316933ad
16 changed files with 22975 additions and 22952 deletions

View file

@ -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:

View file

@ -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
},
})));
});

View file

@ -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() }) }, {}});

View file

@ -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
},
})));
});

View file

@ -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()),
},
};

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -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)),

View file

@ -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

View file

@ -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();
}

View file

@ -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;

View file

@ -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()) {

View file

@ -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;
};

View file

@ -13,6 +13,7 @@ enum RuleEntryType {
RuleEntryTypeNamed,
RuleEntryTypeAnonymous,
RuleEntryTypeHidden,
RuleEntryTypeAuxiliary,
};
struct RuleEntry {

View file

@ -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;
}