Привет всему хабрасообществу.
Подскажите пожалуйста, есть ли какой-то универсальный математический парсер на PHP?
Суть задачи:
Есть простая строка, в которой присутвуют числа, функции, операнды. К примеру:
0.85 + 1.15
(2^3 - 200) * 2
abs(-100) + sin(0.75) - 2
2*3*(0.55 + 0.15) / 100
И необходимо вернуть результат исполнения этой строки как математического выражения.
Все эти строки будут сохраняться в БД, в результате и возникла мысль найти (написать) математический парсер.
Есть также некоторые пожелания:
1. Внедрение переменных.
$mathParser = new MathParser(':a * :b');
$mathParser
->setVariable('a', 0.25)
->setVariable('b', 0.35);
$result = $mathParser->getResult();
2. Внедрение собственных функций.
$mathParser = new MathParser('my_func(:a)');
$mathParser
->setVariable('a', $myVariable)
->addFunction('my_func', function($a) { return abs($a); } );
$result = $mathParser->getResult();
3. Хороший контроль синтаксических ошибок (Для проверки перед исполнением/сохранением).
UPDATE:
Поркомендовали посмотреть:
1.
github.com/SymDevStudio/MathExecutor