pub struct TermEnv {
pub terms: Vec<Term>,
pub term_map: StableMap<Sym, TermId>,
pub rules: Vec<Rule>,
pub converters: StableMap<(TypeId, TypeId), TermId>,
pub expand_internal_extractors: bool,
}
Expand description
The term environment.
This is sort of a typed and reorganized AST that more directly reflects ISLE semantics than the input ISLE source code (where as the AST is the opposite).
Fields§
§terms: Vec<Term>
Arena of interned terms defined in this ISLE program.
This is indexed by TermId
.
term_map: StableMap<Sym, TermId>
A map from am interned Term
’s name to its TermId
.
rules: Vec<Rule>
Arena of interned rules defined in this ISLE program.
This is indexed by RuleId
.
converters: StableMap<(TypeId, TypeId), TermId>
Map from (inner_ty, outer_ty) pairs to term IDs, giving the defined implicit type-converter terms we can try to use to fit types together.
expand_internal_extractors: bool
Flag for whether to expand internal extractors in the translation from the AST to sema.
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl Freeze for TermEnv
impl RefUnwindSafe for TermEnv
impl Send for TermEnv
impl Sync for TermEnv
impl Unpin for TermEnv
impl UnwindSafe for TermEnv
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more