1pub mod prelude {
6 pub use super::*;
7}
8
9pub type ProgramCounter = u32;
10pub type StackPointer = i32;
11pub type BlockId = u32;
12pub type StringId = u32;
13
14pub mod instruction {
15 pub const CLONE: u8 = 0;
16 pub const POP: u8 = 1;
17 pub const COLLAPSE: u8 = 2;
18 pub const JUMP: u8 = 3;
19 pub const IF: u8 = 4;
20 pub const PUSH_UNIT: u8 = 5;
21 pub const PUSH_TRUE: u8 = 6;
22 pub const PUSH_FALSE: u8 = 7;
23 pub const PUSH_I64: u8 = 8;
24 pub const PUSH_STRING: u8 = 9;
25 pub const PUSH_FUNCTION: u8 = 10;
26 pub const PUSH_ENUM: u8 = 11;
27 pub const ADD: u8 = 12;
28 pub const SUB: u8 = 13;
29 pub const MUL: u8 = 14;
30 pub const DIV: u8 = 15;
31 pub const PIPE: u8 = 16;
32 pub const BITWISE_AND: u8 = 17;
33 pub const BITWISE_OR: u8 = 18;
34 pub const BITWISE_XOR: u8 = 19;
35 pub const EQUAL_TO: u8 = 20;
36 pub const NOT_EQUAL_TO: u8 = 21;
37 pub const GREATER: u8 = 22;
38 pub const GREATER_EQUAL: u8 = 23;
39 pub const LESSER: u8 = 24;
40 pub const LESSER_EQUAL: u8 = 25;
41 pub const LOGICAL_AND: u8 = 26;
42 pub const LOGICAL_OR: u8 = 27;
43 pub const CALL: u8 = 28;
44 pub const JOIN: u8 = 29;
45 pub const INDEX: u8 = 30;
46 pub const NAME: u8 = 31;
47 pub const LIST: u8 = 32;
48 pub const NEGATIVE: u8 = 33;
49 pub const DEREF: u8 = 34;
50 pub const SET: u8 = 35;
51 pub const MATCHES: u8 = 36;
52 pub const BIND: u8 = 37;
53 pub const YIELD: u8 = 38;
54 pub const TRY_INDEX: u8 = 39;
55}
56
57pub mod builtins {
58 use crate::StackPointer;
59
60 pub const ANY: StackPointer = -1;
61 pub const UNIT: StackPointer = -2;
62 pub const I64: StackPointer = -3;
63 pub const STRING: StackPointer = -4;
64 pub const OPTION: StackPointer = -5;
65 pub const MUT: StackPointer = -6;
66
67 #[must_use]
68 pub fn from_str(s: &str) -> Option<StackPointer> {
69 match s {
70 "Any" => Some(ANY),
71 "Unit" => Some(UNIT),
72 "I64" => Some(I64),
73 "String" => Some(STRING),
74 "Option" => Some(OPTION),
75 "mut" => Some(MUT),
76 _ => None,
77 }
78 }
79}
80
81pub mod debug {
82 pub const SPAN: u8 = 0;
83 pub const DITTO: u8 = 1;
84}