This is a dBASE language parser with support of functions, variables, evaluation and
processing of mistakes. The parser was was written by me and is contained in the CALXParser
class.
The process of calculation is broken on two stages:
- syntactic analysis and filling of structures necessary for calculation,
- execution of the prepared script.
It has allowed a reduction in execution time when using the parser in the big cycles.
These methods are necessary to get the results of analysis of expression.
void Parse(LPCSTR lpszExpression);
VARIANT* Execute();
These methods are intended for definition of variables or change of values.
BOOL AddVariable(LPCSTR szName, VARIANT& varValue);
BOOL DelVariable(LPCSTR szName);
void DelUnusedVariables(LPCSTR szName);
BOOL SetVariableValue(LPCSTR szName, VARIANT& varValue);
BOOL SetVariableValue(VARIANT& varValue);
BOOL GetVariableValue(LPCSTR szName, VARIANT& varValue);
BOOL GetVariableValue(VARIANT& varValue);
LPCSTR GetFirstVariableName();
LPCSTR GetNextVariableName();
Example of use.
VARIANT* pvarResult = NULL;
try
{
m_Parser.Parse(strExpression);
pvarResult = m_Parser.Execute();
}
catch(CALXParserException* e)
{
for(int i = 0; i < e->GetErrorCount(); i++)
{
e->GetErrorInfo(i);
e->ReportError();
}
e->Delete();
return;
}