brainfuck interpreter
brainfuck cli rust
5

Configure Feed

Select the types of activity you want to include in your feed.

main, evaluator: scaffolding for step debugger

- new argument (-d/--debug)
- data_oob short arg is now -p
- threaded debug arg into main and vm/vmbuilder in evaluator

digi.rip (Jun 17, 2026, 11:28 AM EDT) 26537653 6ded43bb

+18
+9
src/evaluator.rs
··· 127 127 pub struct VM { 128 128 filename: Arc<str>, 129 129 source: Arc<str>, 130 + debug: bool, 130 131 tape: Vec<u8>, 131 132 data_pointer: usize, 132 133 inst_pointer: usize, ··· 140 141 141 142 pub struct VMBuilder { 142 143 filename: Arc<str>, 144 + debug: bool, 143 145 source: Arc<str>, 144 146 tape: Vec<u8>, 145 147 data_oob: OOBBehavior, ··· 155 157 VMBuilder { 156 158 filename: Arc::from(""), 157 159 source: Arc::from(""), 160 + debug: false, 158 161 tape: vec![0; DEFAULT_TAPE_LENGTH], 159 162 data_oob: OOBBehavior::Error, 160 163 cell_oob: OOBBehavior::Wrap, ··· 171 174 self 172 175 } 173 176 177 + pub fn debug(mut self, debug: bool) -> Self { 178 + self.debug = debug; 179 + self 180 + } 181 + 174 182 pub fn tape(mut self, length: usize) -> Self { 175 183 self.tape = vec![0; length]; 176 184 self ··· 209 217 pub fn build(self) -> VM { 210 218 VM { 211 219 filename: self.filename, 220 + debug: self.debug, 212 221 source: self.source, 213 222 tape: self.tape, 214 223 data_pointer: 0,
+9
src/main.rs
··· 16 16 #[arg( 17 17 short = 'd', 18 18 long, 19 + help = "enable step debugger", 20 + default_value_t = false 21 + )] 22 + debug: bool, 23 + 24 + #[arg( 25 + short = 'p', 26 + long, 19 27 help = "set data pointer out-of-bounds behavior", 20 28 default_value = "error" 21 29 )] ··· 71 79 }; 72 80 73 81 let mut machine = VM::builder() 82 + .debug(args.debug) 74 83 .source(args.path, content) 75 84 .tape(args.length) 76 85 .data_oob(args.data_oob)