Какой самый эффективный способ пересчитать атрибуты анализа Boost Spirit с другой таблицей символов?

Я использую Boost Spirit для реализации функциональности в некотором программном обеспечении, которое позволяет пользователю вводить математическое уравнение, которое будет неоднократно применяться к входному потоку. Значения входного потока представлены в виде символов, используяboost::spirit::qi::symbols который пользователь может ссылаться в своем уравнении. (например.out1 = 3 * in1 + in2)

Синтаксический анализ и компиляция уравнения пользователя не чувствительны к производительности, но вычисление его выходного значения происходит, поскольку оно является частью критичного ко времени конвейера.

Стандартным способом, которым Spirit используется в документации, является вычисление вывода (атрибута) входных данных при их анализе. Однако, как между каждым вычислением только значения атрибутов символов (out1, in1и т. д.) изменится, создается впечатление, что может быть более эффективный способ добиться этого, возможно, путем кэширования абстрактного синтаксического дерева выражения и повторения через него.

Какой самый эффективный способ пересчитать значение этого (фиксированного) уравнения с учетом нового набора значений символов?

Ответы на вопрос(2)

Ваш ответ на вопрос