kalker/kalk
2020-06-12 14:11:42 +02:00
..
src Fixed code in documentation in parser.rs 2020-06-12 14:10:10 +02:00
Cargo.toml Created a workspace Cargo.toml to unify the library and binary. 2020-06-12 14:11:42 +02:00
README.md Added example image and expanded feature list. 2020-06-12 00:34:50 +02:00

kalk

Kalk is a math parser library that supports user-defined variables and functions. An example of what it can parse:

f(x, y) = sum(1, 3, (2sin4/x!)^y) + cos(n deg)
a = 3
f(a, 2)

>> 1.1899401098014355

Features

  • Operators: +, -, *, /, !
  • Groups: (), ⌈⌉, ⌋⌊
  • Pre-defined functions and constants
  • User-defined functions and variables. f(x, y) = xy, x = 5
  • Understands fairly ambiguous syntax. Eg. 2sin50 + 2xy
  • Syntax highlighting
  • Special-symbol completion on tab. Eg. write sqrt and press tab. It will be turned into .

Usage

use kalk::parser;

...
let parser_context = parser::Context::new();
assert_eq!(parser_context.eval("5*3").unwrap().unwrap(), 15);

Compiling

Make sure you have diffutils gcc make and m4 installed.