#1985 Curve Calculator : Simplify interface to expression parser

This commit is contained in:
Magne Sjaastad
2017-10-12 10:52:25 +02:00
parent 650e29d6d5
commit 445048c24b
5 changed files with 17 additions and 45 deletions

View File

@@ -26,14 +26,6 @@ ExpressionParserImpl::ExpressionParserImpl()
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void ExpressionParserImpl::setExpression(const QString& expression)
{
m_expression = expression;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -64,13 +56,14 @@ void ExpressionParserImpl::assignVector(const QString& variableName, std::vector
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool ExpressionParserImpl::evaluate()
bool ExpressionParserImpl::evaluate(const QString& expressionText, QString* errorText)
{
expression_t expression;
expression.register_symbol_table(m_symbol_table);
if (!parser.compile(m_expression.toStdString(), expression))
parser_t parser;
if (!parser.compile(expressionText.toStdString(), expression))
{
return false;
}
@@ -78,13 +71,18 @@ bool ExpressionParserImpl::evaluate()
// Trigger evaluation
expression.value();
if (errorText)
{
*errorText = parserErrorText(parser);
}
return (parser.error_count() == 0);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString ExpressionParserImpl::errorText() const
QString ExpressionParserImpl::parserErrorText(parser_t& parser)
{
QString txt;