Skip to main content

MathPy

A small parser for arithmetic expressions

The goal is to parse expressions like (1+2)*3 and evaluate them.

It also parses an identifiers like x+2. The resulting object then needs values for those to evaluate itself.

CLI

The package can be executed as script. It will evaluate an expression and accepts any number of key-value-pairs to use for variables.

~$ python3 -m expr_parser x^2+y x=2 y=1
5

Basic Usage

The main API provides 3 functions (each takes an expression):

  • parse as the name says, parses the expression an returns a syntax tree
  • evaluate creates and immidiently evaluates the resulting syntax tree. No unknown can be used!
  • function takes an expression containing the unknown x and returns a function
>>> from expr_parser import *
>>> evaluate("(1+2)*3")
9
>>> f = function("x^2")
>>> f(4)
16

Advanced Usage

The Parser object

The basic API is just a shortcut for instancing a Parser object and calling its methods.

A Parser object contains the information required for parsing an expression:

  • What brackets are used
  • Which operators are used

These can be controled with:

  • Parser.add_brackets(opening, closing)
  • Parser.add_operator(operator)

The static method default() instances an object and populates it with the default brackets and operators. This method is used to provide the basic API's parser.

Custom Operators

An operator object requires the following parameters:

  • symbol: sthe operator's string representation
  • priority: integer for determening the operation's execution order
  • binary: method for using the operator between two values x and y
  • unary: method for using the operator in front of a single value x

The Operator class provides the @Operator.handle_callables decorator to extend the binary method to work with functions as well as numbers.

from expr_parser.operators.base import Operator

Mod = Operator(
  symbol="%",
  priority=20
  binary=Operator.handle_callables(lambda x, y: x % y)
)

The basic math operators +, -, *, /, ^ are implemented in expr_parser.operators.default.

In expr_parser.operators.dice is another example for a custom operator. It's the dice operator known from tabletop-roleplays, where 2d6 means roll a 6-sided die 2-times.

Release files for gammelmath 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gammelmath 0.0.1
File Size Uploaded
gammelmath-0.0.1.tar.gz 7.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gammelmath 0.0.1
File Interpreter ABI Platform
gammelmath-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 23.1 kB

Release files / gammelmath-0.0.1.tar.gz

Download URL gammelmath-0.0.1.tar.gz
Size 7.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8ba7ceb9619c453f6edc47f00ef0d6516a31933a1ad986afd6032585e4bc3b34
BLAKE2b-256 checksum
How to use checksums
aa013c6535fffe64ae58fc169c62e74467fbd3d37cbee1b3a009f4089cb9d374
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.6

Release files / gammelmath-0.0.1-py3-none-any.whl

Download URL gammelmath-0.0.1-py3-none-any.whl
Size 15.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f08451ba044b88092377e307994f9c65fb94e316034f4fe8dfd13ebd24d959cb
BLAKE2b-256 checksum
How to use checksums
754cdc37fd91934839bc6b6c1ceab50b48d96f3be834dea0b04f01446d1b6150
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.6

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page