/// <summary> /// Calculates the given infix string. Throws if input is invalid /// </summary> /// <exception cref="ArgumentException"></exception> /// <param name="input"></param> /// <returns>The calculated value of the input</returns> public int CalculateExpression(string input) { var infix = input.Replace(" ", string.Empty); if (_tokenizer.IsValid(infix)) { infix = _tokenizer.Tokenize(infix); var postfix = _infixToPostfixConverter.InFixToPostFix(infix); var expression = _expressionBuilder.Build(postfix.ToArray()); return(expression.Interpret()); } throw new ArgumentException("Not a valid input"); }