#逻辑 #逻辑 #解析器 # #电路

rustlogic

Rust 逻辑公式基本解析和处理库

6个版本

0.2.1 2023年3月5日
0.2.0 2020年8月6日
0.1.3 2020年3月14日
0.1.1 2020年2月17日

#870解析器实现

MIT 协议

49KB
807

各位Rust爱好者!RustLogic是一个用于解析和处理简单逻辑表达式的crate。

描述

该crate提供了一种快速将逻辑字符串解析成树形对象的方法。此外,还可以将变量插入到该方程中,以实现单次解析多次输出。

示例

4-1 多路复用器

use std::collections::HashMap;
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();

问题

如果您想提交问题或拉取请求,请访问GitHub页面。

感谢您的宝贵时间,并享受这个crate!

无运行时依赖