pub struct TermEnv {
pub terms: Vec<Term>,
pub term_map: StableMap<Sym, TermId>,
pub rules: Vec<Rule>,
pub rule_map: StableMap<Sym, RuleId>,
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.
rule_map: StableMap<Sym, RuleId>A map from an interned Rule’s name to its 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: boolFlag for whether to expand internal extractors in the translation from the AST to sema.
Implementations§
Source§impl TermEnv
impl TermEnv
Sourcepub fn from_ast(
tyenv: &mut TypeEnv,
defs: &[Def],
expand_internal_extractors: bool,
) -> Result<TermEnv, Vec<Error>>
pub fn from_ast( tyenv: &mut TypeEnv, defs: &[Def], expand_internal_extractors: bool, ) -> Result<TermEnv, Vec<Error>>
Construct the term environment from the AST and the type environment.
Sourcepub fn get_term_by_name(&self, tyenv: &TypeEnv, sym: &Ident) -> Option<TermId>
pub fn get_term_by_name(&self, tyenv: &TypeEnv, sym: &Ident) -> Option<TermId>
Lookup term by name.
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 UnsafeUnpin 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