diff --git a/src/compiler/build_tables/build_parse_table.cc b/src/compiler/build_tables/build_parse_table.cc index 872af8d0..81a1a7cc 100644 --- a/src/compiler/build_tables/build_parse_table.cc +++ b/src/compiler/build_tables/build_parse_table.cc @@ -73,7 +73,16 @@ class ParseTableBuilder { Symbol start_symbol = grammar.variables.empty() ? Symbol::terminal(0) : Symbol::non_terminal(0); - Production start_production{{{start_symbol, 0, rules::AssociativityNone, {"", false}}}, 0}; + Production start_production{ + vector(1, ProductionStep{ + start_symbol, + 0, + rules::AssociativityNone, + rules::Alias{} + }), + 0 + }; + add_parse_state({}, ParseItemSet{{ { ParseItem(rules::START(), start_production, 0), diff --git a/src/compiler/build_tables/parse_item_set_builder.cc b/src/compiler/build_tables/parse_item_set_builder.cc index 6994d200..2ccb22ef 100644 --- a/src/compiler/build_tables/parse_item_set_builder.cc +++ b/src/compiler/build_tables/parse_item_set_builder.cc @@ -208,7 +208,10 @@ const vector &ParseItemSetBuilder::inline_production(const ParseItem auto end = item.production->steps.end(); auto step = begin + item.step_index; - Production production{{begin, step}, item.production->dynamic_precedence}; + Production production{ + vector(begin, step), + item.production->dynamic_precedence + }; for (auto &step : *production_to_insert) { production.steps.push_back(step); if (!inlined_step.alias.value.empty()) {