pub struct Interpreter {
pub id: u64,
pub state: Ref<ProgramState>,
pub stack: Vec<Frame>,
pub context: Option<CompileCtx>,
pub code: Vec<MechSourceCode>,
pub out: Value,
pub out_values: Ref<HashMap<u64, Value>>,
pub sub_interpreters: Ref<HashMap<u64, Box<Interpreter>>>,
/* private fields */
}Fields§
§id: u64§state: Ref<ProgramState>§stack: Vec<Frame>§context: Option<CompileCtx>§code: Vec<MechSourceCode>§out: Value§out_values: Ref<HashMap<u64, Value>>§sub_interpreters: Ref<HashMap<u64, Box<Interpreter>>>Implementations§
Source§impl Interpreter
impl Interpreter
pub fn new(id: u64) -> Self
pub fn set_environment(&mut self, env: SymbolTableRef)
pub fn clear_plan(&mut self)
pub fn pretty_print(&self) -> String
pub fn clear(&mut self)
pub fn pretty_print_symbols(&self) -> String
pub fn pretty_print_plan(&self) -> String
pub fn plan(&self) -> Plan
pub fn symbols(&self) -> SymbolTableRef
pub fn dictionary(&self) -> Ref<Dictionary>
pub fn functions(&self) -> FunctionsRef
pub fn set_functions(&mut self, functions: FunctionsRef)
pub fn step(&mut self, step_id: usize, step_count: u64) -> MResult<Value>
pub fn interpret(&mut self, tree: &Program) -> MResult<Value>
pub fn run_program(&mut self, program: &ParsedProgram) -> MResult<Value>
pub fn compile(&mut self) -> MResult<Vec<u8>>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Interpreter
impl !RefUnwindSafe for Interpreter
impl !Send for Interpreter
impl !Sync for Interpreter
impl Unpin for Interpreter
impl !UnwindSafe for Interpreter
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.