- Notifications
You must be signed in to change notification settings - Fork1
A powerful mathematical expression parser and evaluator for PHP featuring variable substitution, user-defined constants, functions, deterministic functions, macros, operators, and compiler optimizations.
License
Muqsit/arithmexp
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
arithmexp
is a powerful mathematical expression parser and evaluator library for PHP with support forvariable substitution,constant declaration,deterministic and non-deterministic function registration, and more.
Tip
Try out arithmexp parser on thedemo site!
composer require muqsit/arithmexp
To evaluate a mathematical expression, create aParser
and invokeParser::parse()
with an expression string to obtain a reusableExpression
object.Expression::evaluate()
returns the value of the expression.
$parser = Parser::createDefault();$expression =$parser->parse("2 + 3");var_dump($expression->evaluate());// int(5)$expression =$parser->parse("mt_rand()");var_dump($expression->evaluate());// int(1370501507)var_dump($expression->evaluate());// int(1522981420)
Variables may be substituted at evaluation-time by passing anarray<string, int|float|bool>
value toExpression::evaluate()
.
$expression =$parser->parse("x + y");var_dump($expression->evaluate(["x" =>2,"y" =>3]));// int(5)var_dump($expression->evaluate(["x" =>1.5,"y" =>1.5]));// float(3)$expression =$parser->parse("a > b or c");var_dump($expression->evaluate(["a" =>1,"b" =>2,"c" =>true]));// bool(true)
The return value type of the evaluation is consistent with that of PHP's—int + int
returns anint
value, whilefloat + int|float
returns afloat
value.bool + bool
returns anint
value, whileint || int
returns abool
value.
Note
Check out thewiki for documentation notes and further implementation details.
About
A powerful mathematical expression parser and evaluator for PHP featuring variable substitution, user-defined constants, functions, deterministic functions, macros, operators, and compiler optimizations.