3 个稳定版本
2.0.0 | 2023年9月23日 |
---|---|
1.0.1 | 2023年3月16日 |
1.0.0 | 2023年3月15日 |
#2567 在 解析器实现
41KB
847 代码行
表达式
一个灵活的表达式解析器和评估器crate。通过特质支持表达式的自定义类型。
assert_eq!(expressions::eval::<i32>("2 ^ (3) ^ 1 + 4 - 3 * -2"), Ok(18));
支持类型
默认情况下,所有整数和所有浮点数都实现了 Eval
特质。如果不希望使用这些默认实现,可以通过包装类型创建新的实现。也可以通过为该类型实现 Eval
来添加对自定义类型的支持。
默认实现使用懒评估布尔运算符。浮点数不支持位运算,在评估时将返回错误。整数在溢出或除以零时将返回错误。
运算符
目前支持以下运算符
比较运算符
==
等于!=
不等于>=
大于等于>
大于<=
小于等于<
小于
布尔运算符
&&
布尔 AND||
布尔 OR!
布尔 NOT(一元)
位运算符
&
位与|
位或~
位非(一元)
算术运算符
+
加法-
减法*
乘法/
除法%
取模^
指数+
正(一元)-
负(一元)
示例
- complex - 一个基本的复数计算器。展示如何评估自定义类型的表达式。
依赖
~2.1–2.8MB
~57K SLoC