MBUtilities.Calc.Token.Resolve C# (CSharp) Method

Resolve() public static method

public static Resolve ( string text ) : Token
text string
return Token
        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));
        }

Usage Example

Exemplo n.º 1
0
        public static Expression Split(string expressionString)
        {
            List <Token> tokens = new List <Token>();

            //read the input-expression letter-by-letter and build tokens
            string alphaNumericString = string.Empty;

            Token lastOp = CalcUtilities.CreateOperatorToken('X');

            for (int index = 0; index < expressionString.Length; index++)
            {
                char currentChar = expressionString[index];

                if (AllOperators.Find("" + currentChar) != null) //if operator
                {
                    if (alphaNumericString.Length > 0)
                    {
                        tokens.Add(Token.Resolve(alphaNumericString));
                        alphaNumericString = string.Empty;
                    }

                    if (lastOp != null && (((Operator)lastOp.TokenObject).PrecedenceLevel < 1 || ((Operator)lastOp.TokenObject).SymbolText != ")"))
                    {
                        if (currentChar == '-')
                        {
                            currentChar = '_';
                        }
                    }

                    Token op = CalcUtilities.CreateOperatorToken(currentChar);
                    lastOp = op;
                    tokens.Add(op);
                }
                else if (Char.IsLetterOrDigit(currentChar) || currentChar == '.') //if alphabet or digit or dot
                {
                    alphaNumericString += currentChar;
                    lastOp              = null;
                }
            }

            //check if any token at last
            if (alphaNumericString.Length > 0)
            {
                tokens.Add(Token.Resolve(alphaNumericString));
            }

            return(new Expression()
            {
                Tokens = tokens
            });
        }