1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
//! Reverse Polish Notation parsing library
//!
//! Example code:
//! ```
//! use rpn::eval;
//! use std::collections::HashMap;
//! let mut m: HashMap<char, f32> = HashMap::new();
//! m.insert('a', 1.0);
//! m.insert('b', 2.0);
//! m.insert('c', 3.0);
//! println!("{}", match eval("ab-c+c*".to_string(), m) {
//! Ok(n) => n.to_string(),
//! Err(s) => s,
//! })
//! ```
//!
//! TODOs
//! - Binary tree converting from infix to postfix operation
mod rpn;
mod rpntree;
use std::collections::HashMap;
pub use rpn::{eval, RpnOperation};
pub use rpntree::eval_rpn;
pub fn test() {
let mut m: HashMap<char, f32> = HashMap::new();
m.insert('a', 1.0);
m.insert('b', 2.0);
m.insert('c', 3.0);
println!("{}", match eval("ab-c+c*".to_string(), m) {
Ok(n) => n.to_string(),
Err(s) => s,
})
}
|