diff options
author | Zhongheng Liu <z.liu@outlook.com.gr> | 2025-01-16 00:04:15 +0200 |
---|---|---|
committer | Zhongheng Liu <z.liu@outlook.com.gr> | 2025-01-16 00:04:15 +0200 |
commit | 717f3c96f5ed041d574346c8ec50dbf5d89dcdbb (patch) | |
tree | dd57e801c3418eb70b5684d70b31b99ad36e28c2 | |
parent | b66833f6dc447906c31a1eca03bdcdfe26069a8f (diff) | |
download | rpn-parse-rs-717f3c96f5ed041d574346c8ec50dbf5d89dcdbb.tar.gz rpn-parse-rs-717f3c96f5ed041d574346c8ec50dbf5d89dcdbb.tar.bz2 rpn-parse-rs-717f3c96f5ed041d574346c8ec50dbf5d89dcdbb.zip |
fix: change pop order to fit y13 cs order
chore(debug): add debug stack prints
-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(()); } |