diff options
author | Zhongheng Liu <z.liu@outlook.com.gr> | 2025-01-16 22:02:56 +0200 |
---|---|---|
committer | Zhongheng Liu <z.liu@outlook.com.gr> | 2025-01-16 22:02:56 +0200 |
commit | a92b515ae36564be05bb5026444126a460dc1289 (patch) | |
tree | 86fccbf250af5b11edd7beff370306188a593e41 | |
parent | 9801421cfd908980125209c07751767f5858dd5e (diff) | |
download | rpn-parse-rs-a92b515ae36564be05bb5026444126a460dc1289.tar.gz rpn-parse-rs-a92b515ae36564be05bb5026444126a460dc1289.tar.bz2 rpn-parse-rs-a92b515ae36564be05bb5026444126a460dc1289.zip |
chore: misc fixups; removing debug print
-rw-r--r-- | src/rpn.rs | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -23,15 +23,15 @@ fn rpn_match_op(c: char) -> Option<RpnOperation> { _ => None, } } -pub fn eval(rpn_str: String, var_map: HashMap<char, f32>) -> Result<f32, ()> { +pub fn eval(rpn_str: String, var_map: HashMap<char, f32>) -> Result<f32, String> { let mut stack: Vec<f32> = vec![]; for (_i, ch) in rpn_str.chars().enumerate() { - println!("Parsing: {}, Stack: {:?}", ch, stack); + // println!("Parsing: {}, Stack: {:?}", ch, stack); let res = rpn_match_op(ch); if res.is_none() { let num = var_map.get(&ch); if num.is_none() { - return Err(()); + return Err(format!("Nonexistent variable: {}", ch)); } stack.push(*num.unwrap()); continue; @@ -39,14 +39,14 @@ pub fn eval(rpn_str: String, var_map: HashMap<char, f32>) -> Result<f32, ()> { let v2 = stack.pop(); let v1 = stack.pop(); if v1.is_none() || v2.is_none() { - return Err(()); + return Err("Stack has less elements than expected.".to_string()); } let num = apply_op(res.unwrap(), v1.unwrap(), v2.unwrap()); - println!("Result tmp: {}", num); + // println!("Result tmp: {}", num); stack.push(num) } if stack.len() != 1 { - return Err(()); + return Err("Unexpected stack length.".to_string()); } Ok(stack .pop() |