summaryrefslogtreecommitdiff
path: root/src/lib.rs
blob: 8e36c010e32c7235ff32ddb5e1eed43971b7ad6b (plain)
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,
    })
}