Start work on recording parse action conflicts
This commit is contained in:
parent
1da9f1fdfd
commit
3982b73ed6
12 changed files with 278 additions and 26 deletions
|
|
@ -6,16 +6,22 @@
|
|||
#include "compiler/name_symbols/name_symbols.h"
|
||||
|
||||
namespace tree_sitter {
|
||||
std::string compile(const Grammar &grammar, std::string name) {
|
||||
using std::pair;
|
||||
using std::string;
|
||||
using std::vector;
|
||||
|
||||
pair<string, vector<Conflict>> compile(const Grammar &grammar, std::string name) {
|
||||
auto grammars = prepare_grammar::prepare_grammar(grammar);
|
||||
PreparedGrammar &syntax_grammar = grammars.first;
|
||||
PreparedGrammar &lexical_grammar = grammars.second;
|
||||
|
||||
auto tables = build_tables::build_tables(syntax_grammar, lexical_grammar);
|
||||
auto table_build_result = build_tables::build_tables(syntax_grammar, lexical_grammar);
|
||||
auto tables = table_build_result.first;
|
||||
auto conflicts = table_build_result.second;
|
||||
ParseTable &parse_table = tables.first;
|
||||
LexTable &lex_table = tables.second;
|
||||
|
||||
auto symbol_names = name_symbols::name_symbols(parse_table.symbols, lexical_grammar);
|
||||
return generate_code::c_code(name, parse_table, lex_table, symbol_names);
|
||||
return { generate_code::c_code(name, parse_table, lex_table, symbol_names), conflicts };
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue