예제 #1
0
파일: EXParser.cpp 프로젝트: sukovanej/qum
void EXParser::evaluateParenthesis(std::string & _expression, const int index)
{
	std::string tempExpression = isolateParenthesisExpression(_expression, index);
	size_t expressionLen = tempExpression.length();
	priorityOperatorLoop(tempExpression);
	_expression.replace(index, expressionLen+2, tempExpression);
}
예제 #2
0
파일: EXParser.cpp 프로젝트: sukovanej/qum
void EXParser::priorityLoop(std::string &_expression)
{
	if(!isParenthesisBalanced(_expression)){
		throw EXError("parenthesis_logic_error", ErrorIndex::PARENTHESIS_LOGIC_ERROR);
	}
	priorityFormulaLoop(_expression);
	priorityFunctionLoop(_expression);
	priorityOperatorLoop(_expression);
}
예제 #3
0
bool EXParser::evaluateParenthesis(std::string & _expression, const int index)

{

	std::string tempExpression = isolateParenthesisExpression(_expression, index);

	size_t expressionLen = tempExpression.length();

	if(!priorityOperatorLoop(tempExpression))
	  return false;

	_expression.replace(index, expressionLen+2, tempExpression);

	return true;
}
예제 #4
0
bool EXParser::priorityLoop(std::string &_expression) {
    if(!isParenthesisBalanced(_expression)){
      mErrorStr = "parenthesis logic error";
      return false;
    }
    
    if(!priorityFormulaLoop(_expression))
      return false;
    
    if(!priorityFunctionLoop(_expression))
      return false;
    
    if(!priorityOperatorLoop(_expression))
      return false;
    
    return true;
}