diff --git a/src/App/Expression.cpp b/src/App/Expression.cpp index ba25b88026..010a4a9840 100644 --- a/src/App/Expression.cpp +++ b/src/App/Expression.cpp @@ -3391,23 +3391,29 @@ UnitExpression * ExpressionParser::parseUnit(const App::DocumentObject *owner, c } } +namespace { +std::tuple getTokenAndStatus(const std::string & str) +{ + ExpressionParser::YY_BUFFER_STATE buf = ExpressionParser::ExpressionParser_scan_string(str.c_str()); + int token = ExpressionParser::ExpressionParserlex(); + int status = ExpressionParser::ExpressionParserlex(); + ExpressionParser::ExpressionParser_delete_buffer(buf); + + return std::make_tuple(token, status); +} +} + bool ExpressionParser::isTokenAnIndentifier(const std::string & str) { - ExpressionParser::YY_BUFFER_STATE buf = ExpressionParser_scan_string(str.c_str()); - int token = ExpressionParserlex(); - int status = ExpressionParserlex(); - ExpressionParser_delete_buffer(buf); - - return (status == 0 && (token == IDENTIFIER || token == CELLADDRESS )); + int token{}, status{}; + std::tie(token, status) = getTokenAndStatus(str); + return (status == 0 && (token == IDENTIFIER || token == CELLADDRESS)); } bool ExpressionParser::isTokenAUnit(const std::string & str) { - ExpressionParser::YY_BUFFER_STATE buf = ExpressionParser_scan_string(str.c_str()); - int token = ExpressionParserlex(); - int status = ExpressionParserlex(); - ExpressionParser_delete_buffer(buf); - + int token{}, status{}; + std::tie(token, status) = getTokenAndStatus(str); return (status == 0 && token == UNIT); }