Function cranelift_isle::ir::lower_rule
source · pub fn lower_rule(
termenv: &TermEnv,
rule: RuleId
) -> (PatternSequence, ExprSequence)
Expand description
Build a sequence from a rule.
Examples found in repository?
src/trie.rs (line 292)
289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316
fn build(&mut self, termenv: &TermEnv) {
log!("termenv: {:?}", termenv);
for rule in termenv.rules.iter() {
let (pattern, expr) = lower_rule(termenv, rule.id);
log!(
"build:\n- rule {:?}\n- pattern {:?}\n- expr {:?}",
rule,
pattern,
expr
);
let symbols = pattern
.insts
.into_iter()
.map(|op| TrieSymbol::Match { op })
.chain(std::iter::once(TrieSymbol::EndOfMatch));
self.builders_by_term
.entry(rule.root_term)
.or_insert(TrieNode::Empty)
.insert(rule.prio, symbols, expr);
}
for builder in self.builders_by_term.values_mut() {
builder.sort();
}
}