1个不稳定版本
0.3.13 | 2022年4月9日 |
---|
#2877 in 解析器实现
20KB
500 行
Bool Expr Parser库
布尔表达式解析和评估函数用于特性标志 - flipper
它解析表达式并使用给定的输入哈希表评估并返回true/false
你可以解析和评估的复杂表达式的示例
(countryCode=NL or countryCode=DE)
AND uid in (121321,2312312,231231)
and role in (Admin, "Super admin")
and (
uid not in ( ca3ed35c-114f-488d-82b7-7c4d1bd5cbcd, b83f48af-ecb6-4b50-9d5e-b690db2a332b )
or uid <= 0
)
and !(street_name='Random street 1' and countryCode=NL)
给定一个输入哈希表
let map = HashMap::from([
("countryCode", "DE"),
("uid", "2312312"),
("role", "Super admin"),
("street_name", "Random street 2"),
]);
结果将是 true
assert_eq!(
eval(
BoolExprParser::parse(Rule::main, &expression)
.expect("Parse error"),
&map
),
true
);
请参阅src/test.rs中的测试 test_in_readme_documentation()
依赖项
~2.2–3MB
~59K SLoC