AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.11.2004, 11:19   #1  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Парсер арифметических выражений
Небольшой подпроект более крупной задачи, который может оказаться кому-то полезен.

Суть - класс, на вход которого подается формула и значения переменных. Класс возвращает результат вычисления.

Где может быть полезен: там, где пользователь должен иметь возможность настраивать логику расчета каких-либо показаетелей.

Пример использования (одновременно являющийся 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, но поиск занял бы у меня больше времени, чем написание кода
Хотя, если кто-то ткнет меня носом - буду благодарен.

Комментарии и замечания, естественно приветствуются.
Вложения
Тип файла: zip expparser.zip (1.7 Кб, 153 просмотров)
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
парсер XPO Антон DAX: Программирование 0 09.09.2003 13:09

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:33.