Was ist die effizienteste Methode, um Attribute einer Boost Spirit-Analyse mit einer anderen Symboltabelle neu zu berechnen?

Ich verwende Boost Spirit, um Funktionen in einer Software zu implementieren, mit denen der Benutzer eine mathematische Gleichung eingeben kann, die wiederholt auf einen Eingabestream angewendet wird. Eingabestream-Werte werden mit als Symbole dargestelltboost::spirit::qi::symbols auf die sich der Benutzer in seiner Gleichung beziehen kann. (z.B.out1 = 3 * in1 + in2)

Das Parsen und Kompilieren der Benutzergleichung ist nicht leistungsabhängig, die Berechnung des Ausgabewerts ist jedoch Teil einer zeitkritischen Pipeline.

Die Standardmethode, mit der Spirit in der Dokumentation verwendet wird, besteht darin, die Ausgabe (Attribut) einer Eingabe beim Parsen zu berechnen. Bei jeder Berechnung werden jedoch nur die Attributwerte der Symbole (out1, in1Es scheint, als gäbe es einen effizienteren Weg, dies zu erreichen, indem man den abstrakten Syntaxbaum des Ausdrucks zwischenspeichert und ihn wiederholt.

Was ist der effizienteste Weg, um den Wert dieser (festen) Gleichung bei einer neuen Menge von Symbolwerten neu zu berechnen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage