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