Add function for finding token matches

This commit is contained in:
Madeline Busig 2025-05-07 00:07:17 -07:00
parent a53d3d6054
commit 4157c74ece

View File

@ -243,6 +243,8 @@ public:
size_t num_weighted_groups() const { return m_weighted_groups.size(); } size_t num_weighted_groups() const { return m_weighted_groups.size(); }
size_t num_branch_rules() const { return m_branch_rules.size(); } size_t num_branch_rules() const { return m_branch_rules.size(); }
template <typename CONTGROUP_T, typename CONTWGROUP_T>
void find_token_matches(token_id_t token, CONTGROUP_T& out_groups, CONTWGROUP_T& out_wgroups) const;
}; };
class generator_t { class generator_t {
@ -494,5 +496,18 @@ public:
}; };
#endif #endif
template <typename CONTGROUP_T, typename CONTWGROUP_T>
void ruleset_t::find_token_matches(token_id_t token, CONTGROUP_T& out_groups, CONTWGROUP_T& out_wgroups) const {
for (auto rule : m_branch_rules) {
if (rule.m_match == token) {
if (rule.m_weighted) {
out_wgroups.push_back(rule.m_group.weighted);
} else {
out_groups.push_back(rule.m_group.basic);
}
}
}
}
} // namespace fractal } // namespace fractal