25 #ifndef MU_PARSER_BASE_H 26 #define MU_PARSER_BASE_H 99 static void EnableDebugDump(
bool bDumpCmd,
bool bDumpStack);
109 void Eval(
value_type *results,
int nBulkSize);
111 int GetNumResults()
const;
117 void SetThousandsSep(
char_type cThousandsSep = 0);
120 void EnableOptimizer(
bool a_bIsOn=
true);
121 void EnableBuiltInOprt(
bool a_bIsOn=
true);
123 bool HasBuiltInOprt()
const;
142 bool a_bAllowOpt =
false);
153 void ClearInfixOprt();
154 void ClearPostfixOprt();
172 const char_type* ValidInfixOprtChars()
const;
178 int a_iPos = (
int)mu::string_type::npos,
185 virtual void InitCharSets() = 0;
186 virtual void InitFun() = 0;
187 virtual void InitConst() = 0;
188 virtual void InitOprt() = 0;
190 virtual void OnDetectVar(
string_type *pExpr,
int &nStart,
int &nEnd);
198 template<
class TChar>
204 :
std::numpunct<TChar>()
206 ,m_cDecPoint(cDecSep)
207 ,m_cThousandsSep(cThousandsSep)
219 return m_cThousandsSep;
229 return std::string(1, (
char)(m_cThousandsSep > 0 ? m_nGroup : CHAR_MAX));
242 void InitTokenReader();
260 int iArgCount)
const;
263 const std::vector<token_type> &a_vArg)
const;
265 int GetOprtPrecedence(
const token_type &a_Tok)
const;
268 void CreateRPN()
const;
272 value_type ParseCmdCodeBulk(
int nOffset,
int nThreadID)
const;