Expand description
A strongly-normalizing intermediate representation for ISLE rules. This representation is chosen to closely reflect the operations we can implement in Rust, to make code generation easy.
Structs§
- Binding
Id - A hash-consed identifier for a binding, stored in a RuleSet.
- Rule
- A term-rewriting rule. All BindingIds are only meaningful in the context of the RuleSet that contains this rule.
- RuleSet
- A collection of Rules, along with hash-consed Bindings for all of them.
- Tuple
Index - A field index in a tuple or an enum variant.
Enums§
- Binding
- Bindings are anything which can be bound to a variable name in Rust. This includes expressions, such as constants or function calls; but it also includes names bound in pattern matches.
- Constraint
- Pattern matches which can fail. Some binding sites are the result of successfully matching a constraint. A rule applies constraints to binding sites to determine whether the rule matches.
- Overlap
- Records whether a given pair of rules can both match on some input.