- 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.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors3
Uh oh!
There was an error while loading.Please reload this page.