diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 4 | ||||
-rw-r--r-- | src/rpn.rs | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs index f7fe16c..5d93b69 100644 --- a/src/main.rs +++ b/src/main.rs @@ -69,7 +69,7 @@ fn main() { return; } let (k_s, v_s) = vals.unwrap(); - println!("'{}': '{}'", k_s, v_s); + println!("Stored: '{}': '{}'", k_s, v_s); if k_s.chars().count() != 1 { println!("Identifier must only be one character!"); return; @@ -80,7 +80,7 @@ fn main() { } vars.insert(k.unwrap(), v_s.parse::<f32>().unwrap()); } - println!("Great! Now put your RPN expression below"); + println!("Great! Now put your RPN expression below: "); let mut rpn_str = String::new(); let _ = term.read_line(&mut rpn_str); let result = rpn::eval(rpn_str.trim().to_string(), vars); @@ -26,7 +26,7 @@ fn rpn_match_op(c: char) -> Option<RpnOperation> { pub fn eval(rpn_str: String, var_map: HashMap<char, f32>) -> Result<f32, ()> { let mut stack: Vec<f32> = vec![]; for (_i, ch) in rpn_str.chars().enumerate() { - println!("Parsing: {}", ch); + println!("Parsing: {}, Stack: {:?}", ch, stack); let res = rpn_match_op(ch); if res.is_none() { let num = var_map.get(&ch); @@ -36,8 +36,8 @@ pub fn eval(rpn_str: String, var_map: HashMap<char, f32>) -> Result<f32, ()> { stack.push(*num.unwrap()); continue; } - let v1 = stack.pop(); let v2 = stack.pop(); + let v1 = stack.pop(); if v1.is_none() || v2.is_none() { return Err(()); } |