Enum OpCode

Source
pub enum OpCode {
Show 26 variants Constant, Add, Subtract, Multiply, Divide, Negate, Return, Print, GetVariable, SetVariable, Pop, DefineFunction, Call, JumpIfFalse, Jump, BoolNot, BoolAnd, BoolOr, Greater, Less, GreaterEqual, LessEqual, Equal, NotEqual, BeginScope, EndScope,
}
Expand description

Operation codes for the bytecode interpreter

Variants§

§

Constant

Push a constant onto the stack

§

Add

Add the top two stack values

§

Subtract

Subtract the top stack value from the second stack value

§

Multiply

Multiply the top two stack values

§

Divide

Divide the second stack value by the top stack value

§

Negate

Negate the top stack value

§

Return

Return from the current function

§

Print

Print the top stack value

§

GetVariable

Push the value of a variable onto the stack

§

SetVariable

Set a variable to the top stack value

§

Pop

Remove the top stack value

§

DefineFunction

Define a function

§

Call

Call a function

§

JumpIfFalse

Jump if the top stack value is false

§

Jump

Jump unconditionally

§

BoolNot

Negate a boolean value (logical NOT)

§

BoolAnd

Boolean AND operation

§

BoolOr

Boolean OR operation

§

Greater

Greater than comparison

§

Less

Less than comparison

§

GreaterEqual

Greater than or equal comparison

§

LessEqual

Less than or equal comparison

§

Equal

Equal comparison

§

NotEqual

Not equal comparison

§

BeginScope

Begin a new scope (save variable state)

§

EndScope

End the current scope (restore variable state)

Implementations§

Source§

impl OpCode

Source

pub fn from_int<T: Into<usize>>(value: T) -> Option<Self>

Trait Implementations§

Source§

impl Debug for OpCode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for OpCode

Source§

fn eq(&self, other: &OpCode) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for OpCode

Auto Trait Implementations§

§

impl Freeze for OpCode

§

impl RefUnwindSafe for OpCode

§

impl Send for OpCode

§

impl Sync for OpCode

§

impl Unpin for OpCode

§

impl UnwindSafe for OpCode

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.