상속: ITokenObject
예제 #1
0
        public static Token Resolve(string text)
        {
            //check if a number-constant
            double numberValue;
            if (double.TryParse(text, out numberValue))
            {
                Constant constant = new Constant() { Value = text };
                return (new Token(TokenType.Constant, constant));
            }

            //check if operator
            Operator op = AllOperators.Find(text);
            if (op != null)
            {
                return (new Token(TokenType.Operator, op));
            }

            //this token must be a variable
            Variable variable = new Variable() { Name = text };
            return (new Token(TokenType.Variable, variable));
        }
예제 #2
0
        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"));
            }
        }
예제 #3
0
 public static Token CreateNumberConstantToken(string numberString)
 {
     Constant constant = new Constant() { Value = numberString };
     return (new Token(TokenType.Constant, constant));
 }