Tweak format for example grammars
This commit is contained in:
parent
324f55f1ce
commit
13c4e6e648
23 changed files with 1616 additions and 1537 deletions
|
|
@ -73,7 +73,7 @@ namespace tree_sitter {
|
|||
void add_reduce_actions(const ParseItemSet &item_set, ParseStateId state_id) {
|
||||
for (ParseItem item : item_set) {
|
||||
if (item.is_done()) {
|
||||
ParseAction action = (item.lhs == rules::START) ?
|
||||
ParseAction action = (item.lhs == rules::START()) ?
|
||||
ParseAction::Accept() :
|
||||
ParseAction::Reduce(item.lhs, item.consumed_symbol_count);
|
||||
parse_table.add_action(state_id, item.lookahead_sym, action);
|
||||
|
|
@ -153,7 +153,7 @@ namespace tree_sitter {
|
|||
|
||||
pair<ParseTable, LexTable> build() {
|
||||
auto start_symbol = make_shared<Symbol>(grammar.start_rule_name());
|
||||
ParseItem item(rules::START, start_symbol, {}, rules::END_OF_INPUT);
|
||||
ParseItem item(rules::START(), start_symbol, {}, rules::END_OF_INPUT());
|
||||
ParseItemSet item_set = item_set_closure(ParseItemSet({ item }), grammar);
|
||||
add_parse_state(item_set);
|
||||
add_error_lex_state();
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ namespace tree_sitter {
|
|||
void visit(const Symbol *rule) {
|
||||
if (visited_symbols.find(*rule) == visited_symbols.end()) {
|
||||
visited_symbols.insert(*rule);
|
||||
|
||||
|
||||
if (grammar.has_definition(*rule)) {
|
||||
value = apply(grammar.rule(*rule));
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
namespace tree_sitter {
|
||||
using std::set;
|
||||
|
||||
|
||||
namespace build_tables {
|
||||
class CanBeBlank : public rules::RuleFn<bool> {
|
||||
protected:
|
||||
|
|
@ -37,7 +37,7 @@ namespace tree_sitter {
|
|||
|
||||
class CanBeBlankRecursive : public CanBeBlank {
|
||||
const PreparedGrammar grammar;
|
||||
set<rules::Symbol> visited_symbols;
|
||||
set<rules::Symbol> visited_symbols;
|
||||
using CanBeBlank::visit;
|
||||
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ namespace tree_sitter {
|
|||
lex_table(lex_table),
|
||||
symbol_names(symbol_names)
|
||||
{}
|
||||
|
||||
|
||||
string code() {
|
||||
return join({
|
||||
includes(),
|
||||
|
|
@ -74,11 +74,11 @@ namespace tree_sitter {
|
|||
parser_export(),
|
||||
}, "\n\n") + "\n";
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
string symbol_id(rules::Symbol symbol) {
|
||||
if (symbol.is_built_in()) {
|
||||
return (symbol == rules::ERROR) ?
|
||||
return (symbol == rules::ERROR()) ?
|
||||
"ts_builtin_sym_error" :
|
||||
"ts_builtin_sym_end";
|
||||
} else if (symbol.is_auxiliary()) {
|
||||
|
|
@ -183,15 +183,15 @@ namespace tree_sitter {
|
|||
|
||||
string symbol_names_list() {
|
||||
set<rules::Symbol> symbols(parse_table.symbols);
|
||||
symbols.insert(rules::Symbol("end", rules::SymbolTypeBuiltIn));
|
||||
symbols.insert(rules::Symbol("error", rules::SymbolTypeBuiltIn));
|
||||
symbols.insert(rules::END_OF_INPUT());
|
||||
symbols.insert(rules::ERROR());
|
||||
|
||||
string result = "SYMBOL_NAMES = {\n";
|
||||
for (auto symbol : parse_table.symbols)
|
||||
result += indent("[" + symbol_id(symbol) + "] = \"" + symbol_names.find(symbol)->second) + "\",\n";
|
||||
return result + "};";
|
||||
}
|
||||
|
||||
|
||||
string hidden_symbols_list() {
|
||||
string result = "HIDDEN_SYMBOLS = {";
|
||||
for (auto &symbol : parse_table.symbols)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
namespace tree_sitter {
|
||||
using std::string;
|
||||
using std::vector;
|
||||
|
||||
|
||||
namespace generate_code {
|
||||
string join(vector<string> lines, string separator) {
|
||||
string result;
|
||||
|
|
@ -26,7 +26,7 @@ namespace tree_sitter {
|
|||
util::str_replace(&input, "\n", "\n" + tab);
|
||||
return tab + input;
|
||||
}
|
||||
|
||||
|
||||
string character_code(char character) {
|
||||
switch (character) {
|
||||
case '\0':
|
||||
|
|
|
|||
|
|
@ -11,13 +11,13 @@ namespace tree_sitter {
|
|||
using std::map;
|
||||
using std::set;
|
||||
using std::string;
|
||||
|
||||
|
||||
class TokenName : public rules::RuleFn<string> {
|
||||
protected:
|
||||
virtual void visit(const rules::Pattern *rule) {
|
||||
value = "/" + util::escape_string(rule->value) + "/";
|
||||
}
|
||||
|
||||
|
||||
virtual void visit(const rules::String *rule) {
|
||||
value = "'" + util::escape_string(rule->value) + "'";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
namespace tree_sitter {
|
||||
class PreparedGrammar;
|
||||
|
||||
|
||||
namespace name_symbols {
|
||||
std::map<rules::Symbol, std::string> name_symbols(const std::set<rules::Symbol> &symbols,
|
||||
const PreparedGrammar &lexical_grammar);
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
namespace tree_sitter {
|
||||
namespace rules {
|
||||
const Symbol ERROR("error", SymbolTypeBuiltIn);
|
||||
const Symbol START("start", SymbolTypeBuiltIn);
|
||||
const Symbol END_OF_INPUT("end", SymbolTypeBuiltIn);
|
||||
Symbol ERROR() { return Symbol("error", SymbolTypeBuiltIn); }
|
||||
Symbol START() { return Symbol("start", SymbolTypeBuiltIn); }
|
||||
Symbol END_OF_INPUT() { return Symbol("end", SymbolTypeBuiltIn); }
|
||||
}
|
||||
}
|
||||
|
|
@ -5,9 +5,9 @@
|
|||
|
||||
namespace tree_sitter {
|
||||
namespace rules {
|
||||
extern const Symbol ERROR;
|
||||
extern const Symbol START;
|
||||
extern const Symbol END_OF_INPUT;
|
||||
Symbol ERROR();
|
||||
Symbol START();
|
||||
Symbol END_OF_INPUT();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ namespace tree_sitter {
|
|||
}
|
||||
|
||||
rule_ptr err(const rule_ptr &rule) {
|
||||
return choice({ rule, ERROR.copy() });
|
||||
return choice({ rule, ERROR().copy() });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
namespace tree_sitter {
|
||||
using std::string;
|
||||
|
||||
|
||||
namespace util {
|
||||
void str_replace(string *input, const string &search, const string &replace) {
|
||||
size_t pos = 0;
|
||||
|
|
@ -14,7 +14,7 @@ namespace tree_sitter {
|
|||
pos += replace.length();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
string escape_string(string input) {
|
||||
str_replace(&input, "\"", "\\\"");
|
||||
str_replace(&input, "\n", "\\n");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue