From 9a54fe353dd064f26fcb3d429a8138b667de3e41 Mon Sep 17 00:00:00 2001 From: Raymon Zutekouw <40148684+Raymonzut@users.noreply.github.com> Date: Wed, 5 Jan 2022 12:26:17 +0100 Subject: [PATCH] Implement point --- src/main.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 063173e..ec06bc1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -99,7 +99,17 @@ fn instruct(statement: Pair, state: &mut State, out: &mut Builder) { Rule::point => { let variable_name = extract_operand(statement); println!("Pointing to variable '{}'", variable_name); - out.append("point\n"); + let address = state + .variables + .get(variable_name) + .unwrap_or_else(|| panic!("Variable '{}' did not exists", variable_name)) + .address; + if address < state.mem_pointer { + out.append("<".repeat((state.mem_pointer - address) as usize)) + } else if address > state.mem_pointer { + out.append(">".repeat((address - state.mem_pointer) as usize)) + } + state.mem_pointer = address; } Rule::pointm => { let variable_name = extract_operand(statement);