🎨
This commit is contained in:
parent
686dc0997c
commit
abf8a4f2c2
28 changed files with 313 additions and 356 deletions
|
|
@ -41,10 +41,17 @@ class ExpandRepeats : public rules::IdentityRuleFn {
|
|||
string helper_rule_name = rule_name + "_repeat" + to_string(++repeat_count);
|
||||
Symbol repeat_symbol(offset + index, Symbol::NonTerminal);
|
||||
existing_repeats.push_back({ rule->copy(), repeat_symbol });
|
||||
aux_rules.push_back(
|
||||
Variable(helper_rule_name, VariableTypeAuxiliary,
|
||||
Choice::build({ Seq::build({ repeat_symbol.copy(), inner_rule }),
|
||||
inner_rule })));
|
||||
aux_rules.push_back(Variable{
|
||||
helper_rule_name,
|
||||
VariableTypeAuxiliary,
|
||||
Choice::build({
|
||||
Seq::build({
|
||||
repeat_symbol.copy(),
|
||||
inner_rule,
|
||||
}),
|
||||
inner_rule,
|
||||
})
|
||||
});
|
||||
return repeat_symbol.copy();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -107,8 +107,11 @@ tuple<InitialSyntaxGrammar, LexicalGrammar, CompileError> extract_tokens(
|
|||
*/
|
||||
vector<Variable> processed_variables;
|
||||
for (const Variable &variable : grammar.variables)
|
||||
processed_variables.push_back(
|
||||
Variable(variable.name, variable.type, extractor.apply(variable.rule)));
|
||||
processed_variables.push_back(Variable{
|
||||
variable.name,
|
||||
variable.type,
|
||||
extractor.apply(variable.rule)
|
||||
});
|
||||
lexical_grammar.variables = extractor.tokens;
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -25,8 +25,11 @@ class FlattenRule : public rules::RuleFn<void> {
|
|||
Production production;
|
||||
|
||||
void apply_to(const rules::Symbol *sym) {
|
||||
production.push_back(ProductionStep(*sym, precedence_stack.back(),
|
||||
associativity_stack.back()));
|
||||
production.push_back(ProductionStep{
|
||||
*sym,
|
||||
precedence_stack.back(),
|
||||
associativity_stack.back()
|
||||
});
|
||||
}
|
||||
|
||||
void apply_to(const rules::Metadata *metadata) {
|
||||
|
|
@ -85,7 +88,7 @@ SyntaxVariable flatten_rule(const Variable &variable) {
|
|||
}
|
||||
}
|
||||
|
||||
return SyntaxVariable(variable.name, variable.type, productions);
|
||||
return SyntaxVariable{variable.name, variable.type, productions};
|
||||
}
|
||||
|
||||
pair<SyntaxGrammar, CompileError> flatten_grammar(const InitialSyntaxGrammar &grammar) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue