Небольшой подпроект более крупной задачи, который может оказаться кому-то полезен.
Суть - класс, на вход которого подается формула и значения переменных. Класс возвращает результат вычисления.
Где может быть полезен: там, где пользователь должен иметь возможность настраивать логику расчета каких-либо показаетелей.
Пример использования (одновременно являющийся unit-тестом):
PHP код:
static void UnitTest(Args _args)
{
expParser parser = new expParser('a*8+b*5-d');
;
parser.addVariable('a', 3);
parser.addVariable('b', 2);
parser.addVariable('d', 5);
if (parser.calculate()!=29) print 'false'; else print 'true';
parser = new expParser('a+3*b-2*a');
parser.addVariable('a', 2);
parser.addVariable('b', 5);
if (parser.calculate()!=13) print 'false'; else print 'true';
parser = new expParser('a1+b1-2');
parser.addVariable('a1', 2);
parser.addVariable('b1', 5);
if (parser.calculate()!=5) print 'false'; else print 'true';
parser = new expParser('alfa*3*boo');
parser.addVariable('alfa', 2);
parser.addVariable('boo', 5);
if (parser.calculate()!=30) print 'false'; else print 'true';
parser = new expParser('a+b+4');
parser.addVariable('a', 2);
if (parser.calculate()!=6) print 'false'; else print 'true';
pause;
}
p.s. Подозреваю, что что-то подобное уже есть в Axapta, например в Product Builder, но поиск занял бы у меня больше времени, чем написание кода
Хотя, если кто-то ткнет меня носом - буду благодарен.
Комментарии и замечания, естественно приветствуются.