clang-format
This commit is contained in:
parent
27bce56ef2
commit
08d50c25ae
9 changed files with 90 additions and 85 deletions
|
|
@ -55,7 +55,8 @@ class LexTableBuilder {
|
|||
parse_state.lex_state_id = add_lex_state(item_set);
|
||||
}
|
||||
|
||||
LexItemSet error_item_set = build_lex_item_set(parse_table->all_symbols(), true);
|
||||
LexItemSet error_item_set =
|
||||
build_lex_item_set(parse_table->all_symbols(), true);
|
||||
populate_lex_state(error_item_set, LexTable::ERROR_STATE_ID);
|
||||
|
||||
return lex_table;
|
||||
|
|
@ -86,13 +87,15 @@ class LexTableBuilder {
|
|||
for (const rule_ptr &rule : rules)
|
||||
for (const rule_ptr &separator_rule : separator_rules)
|
||||
result.entries.insert(LexItem(
|
||||
symbol, rules::Metadata::build(
|
||||
symbol,
|
||||
rules::Metadata::build(
|
||||
rules::Seq::build({
|
||||
rules::Metadata::build(separator_rule, {{rules::START_TOKEN, 1}}),
|
||||
rules::Metadata::build(rule, {{rules::PRECEDENCE, 0}}),
|
||||
}), {
|
||||
{rules::PRECEDENCE, INT_MIN},
|
||||
{rules::IS_ACTIVE, true},
|
||||
rules::Metadata::build(separator_rule,
|
||||
{ { rules::START_TOKEN, 1 } }),
|
||||
rules::Metadata::build(rule, { { rules::PRECEDENCE, 0 } }),
|
||||
}),
|
||||
{
|
||||
{ rules::PRECEDENCE, INT_MIN }, { rules::IS_ACTIVE, true },
|
||||
})));
|
||||
}
|
||||
|
||||
|
|
@ -136,8 +139,9 @@ class LexTableBuilder {
|
|||
LexItem::CompletionStatus completion_status = item.completion_status();
|
||||
if (completion_status.is_done) {
|
||||
auto current_action = lex_table.state(state_id).default_action;
|
||||
auto action = LexAction::Accept(item.lhs, completion_status.precedence.max,
|
||||
completion_status.is_string);
|
||||
auto action =
|
||||
LexAction::Accept(item.lhs, completion_status.precedence.max,
|
||||
completion_status.is_string);
|
||||
if (conflict_manager.resolve(action, current_action))
|
||||
lex_table.state(state_id).default_action = action;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,7 +73,8 @@ class LexItemTransitions : public rules::RuleFn<void> {
|
|||
{ new_char_set, { new_item_set, new_precedence_range } });
|
||||
}
|
||||
|
||||
map<rules::MetadataKey, int> activate_precedence(map<rules::MetadataKey, int> metadata) {
|
||||
map<rules::MetadataKey, int> activate_precedence(
|
||||
map<rules::MetadataKey, int> metadata) {
|
||||
if (metadata.find(rules::PRECEDENCE) != metadata.end())
|
||||
metadata.insert({ rules::IS_ACTIVE, 1 });
|
||||
return metadata;
|
||||
|
|
@ -126,7 +127,8 @@ class LexItemTransitions : public rules::RuleFn<void> {
|
|||
void apply_to(const rules::Metadata *rule) {
|
||||
LexItemSet::TransitionMap content_transitions;
|
||||
auto precedence = rule->value_for(rules::PRECEDENCE);
|
||||
bool has_active_precedence = precedence.second && rule->value_for(rules::IS_ACTIVE).second;
|
||||
bool has_active_precedence =
|
||||
precedence.second && rule->value_for(rules::IS_ACTIVE).second;
|
||||
if (has_active_precedence)
|
||||
precedence_stack->push_back(precedence.first);
|
||||
|
||||
|
|
@ -135,7 +137,8 @@ class LexItemTransitions : public rules::RuleFn<void> {
|
|||
merge_transition(
|
||||
transitions, pair.first,
|
||||
transform_item_set(pair.second.first, [this, &rule](rule_ptr item_rule) {
|
||||
return rules::Metadata::build(item_rule, activate_precedence(rule->value));
|
||||
return rules::Metadata::build(item_rule,
|
||||
activate_precedence(rule->value));
|
||||
}), pair.second.second);
|
||||
|
||||
if (has_active_precedence)
|
||||
|
|
|
|||
|
|
@ -40,15 +40,16 @@ rule_ptr Metadata::copy() const {
|
|||
pair<int, bool> Metadata::value_for(MetadataKey key) const {
|
||||
auto entry = value.find(key);
|
||||
if (entry == value.end())
|
||||
return {0, false};
|
||||
return { 0, false };
|
||||
else
|
||||
return {entry->second, true};
|
||||
return { entry->second, true };
|
||||
}
|
||||
|
||||
std::string Metadata::to_string() const {
|
||||
auto precedence = value_for(rules::PRECEDENCE);
|
||||
if (precedence.second && value_for(rules::IS_ACTIVE).second)
|
||||
return "(metadata prec:" + std::to_string(precedence.first) + " " + rule->to_string() + ")";
|
||||
return "(metadata prec:" + std::to_string(precedence.first) + " " +
|
||||
rule->to_string() + ")";
|
||||
else
|
||||
return "(metadata " + rule->to_string() + ")";
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue