Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > JEDI VCL & математический парсер


Автор: Doga 12.1.2009, 14:28
Всем привет!

Хотел бы поставить себе современную замену RxLib - JEDI VCL. Однако, из-за не достаточно подробного хэлпа не понятно, есть ли в составе Jedi какой либо парсер математитечских выражений? И если есть - как зовётся?

Или искать какой то другой компонент? Что порекомендуете?

Автор: CodeMonkey 12.1.2009, 14:41
Если ставите JVCL, то у вас будет и JCL. Сделайте поиск файлов со словом "parser". Много интересного найдёте. В частности JclExprEval.pas.
Да и в хэлпе прям тема такая есть: "Expression Evaluation". И даже демки. Например: jcl\examples\common\expreval\ExprEvalExample.dpr.

Автор: Doga 12.1.2009, 15:27
А я, дубина, "parcer" искал...  smile  

CodeMonkey, спасибо! smile  

Автор: Bose 12.1.2009, 17:37
Цитата(CodeMonkey @  12.1.2009,  14:41 Найти цитируемый пост)
Если ставите JVCL, то у вас будет и JCL. Сделайте поиск файлов со словом "parser". Много интересного найдёте. В частности JclExprEval.pas.
Да и в хэлпе прям тема такая есть: "Expression Evaluation".

+1

Там есть несколько вариаций классов умеющих считать мат. выражения. От простого парсера вычисляющего одно выражение, до класса компилирующего выражение в исполняемый код и работающего со списком таких выражений. В справке JCL они достаточно неплохо описаны. 
В выражениях могут использоваться следующие операции(по приоритету):
1) (highest) not bnot(bitwise) +(unary) -(unary)                      (level 3)
2)           * / div mod and band(bitwise) shl shr                    (level 2)
3)           +(binary) -(binary) or xor bor(bitwise) bxor(bitwise)    (level 1)
4) (lowest)  < <= > >= cmp = <>                                       (level 0)

Плюс есть возможность регистрировать произвольные функции.

Хочу упомянуть одну досадную недоработку с которой я дважды сталкивался при попытке использования этого парсера. JCL не умеетобрабатывать возведение в произвольную степень.

Ссылка по теме:
http://vingrad.ru/blogs/bose/obschee-opisanie-biblioteki-jedi-code-library-jcl-335/.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)