Синтаксический анализатор выражений бизнес-правил С++

Я ищу предложения для портативных легких библиотек, написанных на C++, которые поддерживают выражение и оценку математических и бизнес-правил. Я понимаю, что C++ не предоставляет такую ​​функциональность в STL.

Основное требование следующее:

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

Ожидается, что некоторые из выражений будут оцениваться много раз в секунду (1000-2000 раз), следовательно, существует потребность в высокопроизводительных оценках выражений.

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

Я искал googled, но большинство "библиотек", которые я мог найти, - довольно простые примеры алгоритма шунтирующего двора, большинство парсеров выражения, выполняют синтаксический анализ и оценку на одном и том же этапе, что делает их непригодными для непрерывных переоценок и большинство поддерживаемых номеров.

Что я ищу:

  • Библиотека, написанная на С++ (С++ 03 или С++ 11)
  • Стабильный/производство достойный
  • Быстрые оценки
  • Portable (win32/linux)
  • Любые предложения по созданию высокопроизводительных бизнес-правил.

Пример бизнес-правила:

'rule_result = (Остальные_имиты < min_items) и (элемент == "пляжный мяч" )'

Ответ 2

Считаете ли вы, что вы создаете собственный парсер с Bison + Flex? Он использует реализатор парсер LALR на основе FSM, который выполняется быстро и легко записывается, и поддерживает оценку выражений во время их разбора, а также генерацию AST для повторной оценки.