3 个版本
使用旧的 Rust 2015
0.1.2 | 2017年1月11日 |
---|---|
0.1.1 | 2017年1月7日 |
0.1.0 | 2017年1月5日 |
#2079 在 Rust 模式
22 每月下载量
48KB
1K SLoC
Ripin-rs
一个用于处理逆波兰表达式(Reverse Polish Notated, RPN)的库。
Ripin 还可以评估变量表达式,并且不仅限于字符串令牌,它可以处理任何迭代器类型,唯一限制是你的想象力。有 examples
可以帮助你了解如何从自定义类型实现自己的表达式。
安装
Ripin 可在 crates.io 上找到,并可以像这样添加到你的 Cargo 项目中
[dependencies]
ripin = "0.1"
然后在你的代码中这样引入它
extern crate ripin;
示例
Ripin 可以评估逆波兰表达式。
use ripin::expression::FloatExpr;
let expr_str = "3 4 + 2 *"; // (3 + 4) * 2
let tokens = expr_str.split_whitespace();
let expr = FloatExpr::<f32>::from_iter(tokens).unwrap();
println!("Expression {:?} gives {:?}", expr_str, expr.evaluate())
你还可以在表达式中使用变量,使它们更加“可变”。
use std::collections::HashMap;
use ripin::evaluate::VariableFloatExpr;
use ripin::variable::IndexVar;
let mut variables = HashMap::new(); // using a Vec is the same
variables.insert(0, 3.0);
variables.insert(1, 500.0);
let expr_str = "3 $1 + 2 * $0 -"; // (3 + $1) * 2 - $0
let tokens = expr_str.split_whitespace();
let expr = VariableFloatExpr::<f32, IndexVar>::from_iter(tokens).unwrap();
let result = expr.evaluate_with_variables(&variables);
println!("Expression {:?} gives {:?}", expr_str, result); // Ok(1003)
依赖项
~245KB