Fix segfault when grammar consists of a single token

This commit is contained in:
Max Brunsfeld 2014-07-23 18:26:10 -07:00
parent df3613d511
commit 6a8addb84f
2 changed files with 26 additions and 1 deletions

View file

@ -135,7 +135,10 @@ class ParseTableBuilder {
conflict_manager(ParseConflictManager(grammar, lex_grammar)) {}
pair<ParseTable, vector<Conflict> > build() {
ParseItem start_item(rules::START(), make_shared<Symbol>(0), 0);
auto start_symbol = grammar.rules.empty() ?
make_shared<Symbol>(0, rules::SymbolOptionToken) :
make_shared<Symbol>(0);
ParseItem start_item(rules::START(), start_symbol, 0);
add_parse_state(
item_set_closure(start_item, { rules::END_OF_INPUT() }, grammar));