¿Cuál es la forma más eficiente de recalcular los atributos de un análisis Boost Spirit con una tabla de símbolos diferente?

Estoy usando Boost Spirit para implementar la funcionalidad en algún software que permite al usuario ingresar una ecuación matemática que se aplicará repetidamente a una secuencia de entrada. Los valores de flujo de entrada se representan como símbolos usandoboost::spirit::qi::symbols que el usuario puede hacer referencia en su ecuación. (p.ej.out1 = 3 * in1 + in2)

Analizar y compilar la ecuación del usuario no es sensible al rendimiento, pero calcular su valor de salida es como parte de una tubería de tiempo crítico.

La forma estándar en que se usa Spirit dentro de la documentación es calcular la salida (atributo) de una entrada a medida que se analiza. Sin embargo, entre cada cálculo solo los valores de atributo de los símbolos (out1, in1, etc.) habrá cambiado, se siente, como si hubiera una forma más eficiente de lograr esto, tal vez almacenando en caché el árbol de sintaxis abstracta de la expresión y reiterando a través de él.

¿Cuál es la forma más eficiente de recalcular el valor de esta ecuación (fija) dado un nuevo conjunto de valores de símbolos?

Respuestas a la pregunta(2)

Su respuesta a la pregunta