5 个版本
| 0.1.4 | 2024年7月24日 |
|---|---|
| 0.1.3 | 2022年6月7日 |
| 0.1.2 | 2022年5月30日 |
| 0.1.1 | 2022年5月30日 |
| 0.1.0 | 2022年5月30日 |
#414 in 解析器实现
每月下载量157次
455KB
13K SLoC
evaluator_rs
Rust 评估引擎库。
用法
请参阅文档以获取更多详细信息。
添加到您的 Cargo.toml
[dependencies]
evaluator_rs = "0.1"
示例
extern crate evaluator_rs;
use std::collections::HashMap;
use evaluator_rs::{evaluate, parse_expr_from_str, parse_expr_from_json, Value};
fn main() {
// from str expression
let expr = parse_expr_from_str("{a} + 2 + 3").unwrap();
let parameters = HashMap::from([("a", Value::from(1))]);
let rs = evaluate(&expr, ¶meters).unwrap();
assert_eq!(rs, Value::from(6));
let expr = parse_expr_from_str("{a} in [1, 2 , 3]").unwrap();
let parameters = HashMap::from([("a", Value::from(1))]);
let rs = evaluate(&expr, ¶meters).unwrap();
assert_eq!(rs, Value::from(true));
// from json expression
let json_expr = r#"{
"lhs": "{a}",
"op": "in",
"rhs": [4, 5, 6]
}"#;
let expr = parse_expr_from_json(json_expr).unwrap();
let parameters = HashMap::from([("a", Value::from(4))]);
let rs = evaluate(&expr, ¶meters).unwrap();
assert_eq!(rs, Value::from(true));
}
数据类型
| 类型 | 示例 |
|---|---|
| 数字 | 1 |
| 字符串 | 'hello world' |
| 布尔值 | true |
| 数组 | [1, 2, 3] |
支持的操作符
| 操作符 | 优先级 | 描述 |
|---|---|---|
| && | 1 | 与 |
| || | 1 | 或 |
| == | 2 | 等于 |
| > | 2 | 大于 |
| >= | 2 | 大于等于 |
| < | 2 | 小于 |
| <= | 2 | 小于等于 |
| 在 | 2 | 数组包含 |
| * | 3 | 乘法 |
| / | 3 | 除法 |
| + | 4 | 加法 |
| - | 4 | 减法 |
标识符
标识符用花括号括起来。当表达式被评估时,必须提供标识符的值。
示例
let expr = parse_expr("{a} in [1, 2 , 3]").unwrap();
let parameters = HashMap::from([("a", Value::from(1))]);
let rs = evaluate(&expr, ¶meters).unwrap();
assert_eq!(rs, Value::from(true));
许可证
- MIT 许可证 (LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
依赖项
~3.5–7MB
~115K SLoC