1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
pub type Instructions = Vec<Code>;

#[derive(Debug, Clone, PartialEq)]
pub enum Code {
    Constant(usize),
    True,
    False,
    Array(usize),

    Add,
    Subtract,
    Mulitply,
    Divide,
    Negate,
    GreaterThan,
    GreaterThanEquals,
    LessThan,
    LessThanEquals,
    Equals,
    NotEquals,

    Call(usize),
    Return(bool),

    Jump(usize),
    JumpIfNot(usize),

    GetGlobal(usize),
    SetGlobal(usize),

    GetProperty,
    SetProperty,

    GetLocal(usize),
    SetLocal(usize),
    
    Pop,
}