跳转到主要内容

+/- plusminus是一个基于pyparsing infixNotation辅助方法的模块,用于构建易于编写和使用的解析器,用于解析和评估中缀算术表达式。plusminus的ArithmeticParser类包括独立的解析和评估方法,处理运算符优先级,通过括号覆盖,空格的存在与否,内置函数,以及预定义和用户定义的变量、函数和运算符。

项目描述

plusminus

plusminus 包提供了一个基于 pyparsinginfix_notation 辅助方法的预编译算术解析器和评估器。

可以使用 ArithmeticParser 解析和评估包含6个函数的算术表达式。

from plusminus import BaseArithmeticParser

parser = BaseArithmeticParser()
print(parser.evaluate("2+3/10"))

解析器还可以返回 ArithNode 对象的抽象语法树。

parsed_elements = parser.parse("2+3/10")

算术表达式按照标准的运算符优先级规则进行评估,允许使用括号来覆盖。

()
|x|
∩ & ∪ | - ^ ∆ (set operations)
**
-
* / // × ÷ mod
+ -
< > <= >= == != ≠ ≤ ≥
in ∈ ∉ (element in/not in set)
not
and ∧
or ∨
? : (ternary)

可以调用函数

abs    ceil   max
round  floor  str
trunc  min    bool

BaseArithmeticParser 还支持变量的赋值

r = 5
area = π × r²

最后一个表达式可以使用 @= 公式赋值来赋值

area @= π × r²

随着 r 的更新,评估 area 将会使用新的值重新评估。

还定义了一个具有更多运算符的 ArithmeticParser 类,包括

!     - factorial  
°     - degree-radian conversion
√ ⁿ√  - square root and n'th root (2-9)
⁻¹  ⁰  ¹  ²  ³ - common exponents as superscripts

以及额外的预定义函数

sin    asin  rad    gcd
cos    acos  deg    lcm
tan    atan  ln     rnd
sgn    sinh  log    randint
gamma  cosh  log2
hypot  tanh  log10

此解析器类可用于使用代数或三角表达式应用程序。

可以使用简单的API定义自定义表达式。包括用于其他专用应用程序和领域的示例解析器

  • 掷骰子("3d6 + d20"
  • 时间差表达式("today() + 2d + 12h"
  • 零售和商业表达式("20% off of 19.99"
  • 组合表达式("6C2""5P3"

这些解析器可以集成到其他应用程序中,以支持对用户定义的特定领域表达式的安全评估。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

plusminus-0.8.1.tar.gz (36.3 kB 查看哈希值)

上传时间: 源代码

构建版本

plusminus-0.8.1-py3-none-any.whl (28.3 kB 查看哈希值)

上传时间: Python 3

支持者