diff --git a/src/classes/PFunction.cpp b/src/classes/PFunction.cpp index 712988a4..eb821302 100644 --- a/src/classes/PFunction.cpp +++ b/src/classes/PFunction.cpp @@ -594,10 +594,9 @@ void PFunction::EvalTreeForString(tree_parse_info<> info) * * \param i iterator of the AST tree */ -void PFunction::EvalTreeForStringExpression(iter_t const& i) +void PFunction::EvalTreeForStringExpression(iter_t const& i, bool funcFlag) { static Int_t termOp = 0; - static bool funcFlag = false; if (i->value.id() == PFunctionGrammar::realID) { assert(i->children.size() == 0); @@ -629,21 +628,19 @@ void PFunction::EvalTreeForStringExpression(iter_t const& i) fFuncString += boost::algorithm::trim_copy(std::string(i->value.begin(), i->value.end())).c_str(); } else if (i->value.id() == PFunctionGrammar::functionID) { assert(i->children.size() == 3); - funcFlag = true; fFuncString += std::string(i->value.begin(), i->value.end()).c_str(); // keep function name fFuncString += "("; // '(', expression, ')' - EvalTreeForStringExpression(i->children.begin()+1); // the real stuff + EvalTreeForStringExpression(i->children.begin()+1, true); // the real stuff fFuncString += ")"; } else if (i->value.id() == PFunctionGrammar::powerID) { assert(i->children.size() == 5); - funcFlag = true; fFuncString += std::string(i->value.begin(), i->value.end()).c_str(); // keep function name fFuncString += "("; // '(', expression, ',' expression, ')' - EvalTreeForStringExpression(i->children.begin()+1); // base expression + EvalTreeForStringExpression(i->children.begin()+1, true); // base expression fFuncString += ","; - EvalTreeForStringExpression(i->children.begin()+3); // exponent expression + EvalTreeForStringExpression(i->children.begin()+3, true); // exponent expression fFuncString += ")"; } else if (i->value.id() == PFunctionGrammar::factorID) { EvalTreeForStringExpression(i->children.begin()); @@ -689,7 +686,6 @@ void PFunction::EvalTreeForStringExpression(iter_t const& i) } if ((termOp > 0) && !funcFlag) fFuncString += ")"; - funcFlag = false; } else if (i->value.id() == PFunctionGrammar::assignmentID) { assert(i->children.size() == 3); EvalTreeForStringExpression(i->children.begin()); diff --git a/src/include/PFunction.h b/src/include/PFunction.h index 3f95ef45..b1ed3626 100644 --- a/src/include/PFunction.h +++ b/src/include/PFunction.h @@ -123,7 +123,7 @@ class PFunction { Int_t fFuncNo; ///< function number, i.e. FUNx with x the function number virtual void EvalTreeForString(tree_parse_info<> info); - virtual void EvalTreeForStringExpression(iter_t const& i); + virtual void EvalTreeForStringExpression(iter_t const& i, bool funcFlag=false); TString fFuncString; ///< text representation of the function PMetaData fMetaData; ///< keeps meta data from data files (field, energy, temperature, ...)