Tweak format for example grammars

This commit is contained in:
Max Brunsfeld 2014-03-28 13:51:32 -07:00
parent 324f55f1ce
commit 13c4e6e648
23 changed files with 1616 additions and 1537 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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) + "'";
}

View file

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

View file

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

View file

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

View file

@ -46,7 +46,7 @@ namespace tree_sitter {
}
rule_ptr err(const rule_ptr &rule) {
return choice({ rule, ERROR.copy() });
return choice({ rule, ERROR().copy() });
}
}
}

View file

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