6 个版本
0.2.4 | 2021 年 11 月 6 日 |
---|---|
0.2.3 | 2021 年 11 月 4 日 |
0.1.0 | 2021 年 11 月 2 日 |
#1996 在 解析器实现
每月 28 次下载
19KB
237 代码行
positron - 解析和执行布尔表达式
托管版本(网站) 在此 代码: DevHyperCoder/positron-web
托管版本(API) 在此 代码: DevHyperCoder/positron-api
安装
Cargo.toml
[dependencies]
positron={version = "x.x.x", features= ["json"]}
json
功能推导Serialize
和Deserialize
在 crates.io 查找
positron
的最新版本
许可证
positron
根据 GNU 通用公共许可证 3 许可。我们的 GPL-3 可以在 此处 找到
lib.rs
:
positron - 解析和执行布尔表达式
示例
基本的或门
use std::collections::HashMap;
use positron::{circuit::Circuit,gate::Gate};
// a + b
let gate = Gate::Or(vec![Gate::Value("a".to_string()),Gate::Value("b".to_string())]);
let mut data = HashMap::new();
data.insert("a".to_string(),true);
data.insert("b".to_string(),true);
let circuit = Circuit {
gate,
data
};
assert_eq!(circuit.execute().unwrap(),true)
解析示例
use std::{collections::HashMap,str::FromStr};
use positron::{circuit::Circuit,parser::Parsed};
let input = "(a+b).(a.b)";
let parsed = Parsed::from_str(input).unwrap();
assert!(parsed.variables.contains("a"));
assert!(parsed.variables.contains("b"));
let mut data = HashMap::new();
data.insert("a".to_string(),true);
data.insert("b".to_string(),true);
let circuit = Circuit {
gate:parsed.root_gate,
data
};
assert_eq!(circuit.execute().unwrap(),true)
依赖项
~3.5MB
~69K SLoC