Math expression parser and evaluator library.
  • Rust 97.7%
  • Nix 1.5%
  • Makefile 0.8%
Find a file
2026-07-02 21:34:11 -04:00
.vscode Helper method for getting canonical unit name 2025-10-06 14:26:42 -04:00
mathengine chore: Bump dependent package versions 2026-07-02 21:34:11 -04:00
mathengine-cli fix(neg-temp): reverse skill issues (#1) 2026-05-09 22:53:34 +00:00
mathengine-evaluator fix(neg-temp): reverse skill issues (#1) 2026-05-09 22:53:34 +00:00
mathengine-lexer Extra metadata and READMEs for all the individual crates 2025-10-06 13:33:23 -04:00
mathengine-parser Add version numbers to prepare for release 2025-10-06 19:24:18 -04:00
mathengine-units Major refactoring of units crate to reduce boilerplate 2025-10-06 18:21:00 -04:00
.envrc fix(neg-temp): reverse skill issues (#1) 2026-05-09 22:53:34 +00:00
.gitignore fix(neg-temp): reverse skill issues (#1) 2026-05-09 22:53:34 +00:00
Cargo.lock chore: Bump version 2026-07-02 21:33:16 -04:00
Cargo.toml chore: Bump version 2026-07-02 21:33:16 -04:00
CLAUDE.md Proper errors instead of panicking everywhere 2025-10-05 14:34:03 -04:00
devenv.lock chore: Commit devenv.lock 2026-07-02 21:30:22 -04:00
devenv.nix chore: Commit devenv.lock 2026-07-02 21:30:22 -04:00
devenv.yaml fix(neg-temp): reverse skill issues (#1) 2026-05-09 22:53:34 +00:00
Makefile Update makefile 2025-10-06 19:48:06 -04:00
README.md Added README and changed project name 2025-10-05 14:02:01 -04:00
release.toml Update makefile 2025-10-06 19:48:06 -04:00
shell.nix Small QOL updates 2025-10-06 15:16:50 -04:00

MathEngine

A Rust mathematical expression evaluator with unit conversion support.

Features

  • Mathematical expressions: 2 + 3 * (100.50 - 4)
  • Unit conversions: 10m to feet, 23C to F
  • Mixed operations: 1m to cm + 10
  • Power operations: 2^10

Examples

use mathengine::{lexer::Lexer, Parser, evaluate};

let expression = "23C to F";
let lexer = Lexer::new(expression);
let tokens = lexer.tokenize();
let mut parser = Parser::new(tokens);
let ast = parser.parse().unwrap();
let result = evaluate(&ast);
println!("{}", result); // 73.4F

Supported Units

  • Length: meters, centimeters, feet, inches, yards, miles
  • Temperature: Celsius, Fahrenheit, Kelvin

Building

cargo build
cargo run