1 个不稳定版本
0.1.0 | 2023年2月23日 |
---|
#2155 在 解析器实现 中
21 每月下载量
用于 bool2cnf
48KB
818 行
源自 rustlogic
lib.rs
:
大家好,RustLogic是一个用于解析和处理简单逻辑表达式的crate。
此crate包含处理字符串化逻辑公式的基本基础。如果您想提交问题或pull request,请访问GitHub页面。
感谢您的时间和享用这个crate!
示例
4-1 乘法器
let multiplexer_4_to_1 =
rustlogic::parse(
"([a]&~[x]&~[y])|([b]&~[x]&[y])|([c]&[x]&~[y])|([d]&[x]&[y])"
)
.expect("Failed to parse 4-1 multiplexer");
let mut variable_map = HashMap::new();
// Input: 1001
variable_map.insert("a", true);
variable_map.insert("b", false);
variable_map.insert("c", false);
variable_map.insert("d", true);
// Selector: 11
variable_map.insert("x", true);
variable_map.insert("y", true);
// Should select fourth item from bus so true
let value = multiplexer_4_to_1.get_value_from_variables(&variable_map).unwrap();
println!("{}", value); // Will print true!
评估带有变量和自定义逻辑运算符的逻辑字符串
use rustlogic::operators;
use std::collections::HashMap;
// Define the set
let operator_set = operators::common_sets::worded();
let parsed = rustlogic::custom_parse("(NOT $[A] AND TRUE) OR $[B]", &operator_set);
// We assign the variables to their values
let mut hm = HashMap::new();
hm.insert("A", false);
hm.insert("B", false);
// Now contains the value of the logical expression
let value = parsed.unwrap().get_value_from_variables(&hm).unwrap();