public static bool IsOpenParenthesis(Token token) { return (token.Type == TokenType.Operator && token.LinearToken.Equals(AllOperators.Find("(").SymbolText)); }
private static Token EvaluateArithmetic(Token token1, Token token2, Token operatorToken) { //check if both tokens are numeric constants double number1 = double.NaN; double number2 = double.NaN; bool validNumber1 = (token1.Type == TokenType.Constant) && double.TryParse(token1.LinearToken, out number1); bool validNumber2 = (token2.Type == TokenType.Constant) && double.TryParse(token2.LinearToken, out number2); if (validNumber1 && validNumber2) { Operator op = AllOperators.Find(operatorToken.LinearToken); double returnValue = double.NaN; returnValue = op.Execute(number1, number2); returnValue = Math.Round(returnValue, 4); Constant returnValueConstant = new Constant() { Value = returnValue.ToString() }; return (new Token(TokenType.Constant, returnValueConstant)); } else { return (CalcUtilities.CreateNumberConstantToken("1")); } }
public static bool IsArithmeticOperator(Token token) { return (token.Type == TokenType.Operator && !IsOpenParenthesis(token) && !IsCloseParenthesis(token)); }