custom_builtin/
custom_builtin.rs

1use stackr_rs::*;
2
3fn main() {
4    let state: u32 = 0;
5    let mut interpreter = Interpreter::new(state);
6
7    interpreter.register_builtin(
8        "increment-state",
9        "--",
10        "Increments the state.",
11        "increment-state",
12        |interpreter| {
13            interpreter.state += 1;
14            Ok(())
15        },
16    );
17
18    interpreter.register_builtin(
19        "get-state",
20        "-- n",
21        "Gets the state.",
22        "get-state",
23        |interpreter| {
24            interpreter.push_number(interpreter.state as f32);
25            Ok(())
26        },
27    );
28
29    let code = r#"
30    print-stack
31    increment-state
32    get-state
33    "The state has been modified!"
34    print-stack
35    "#;
36
37    println!("State before execution: {:?}", interpreter.state);
38    interpreter.evaluate(code, None).unwrap();
39    println!("State after execution: {:?}", interpreter.state);
40}