3 个稳定版本

2.0.0 2023年9月23日
1.0.1 2023年3月16日
1.0.0 2023年3月15日

#2567解析器实现

MIT 许可证

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