custom_builtin/
custom_builtin.rs1use 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}