Exemple #1
0
        internal static int GetNextToken(string source, int position, out Token token, Token prevToken = null)
        {
            char symbol = source[position];
            token = null;
            if (DoubleToken.IsStartSymbol(symbol))
            {
                token = new DoubleToken().FromString(source, ref position);
                return position;
            }

            if (BracketToken.IsStartSymbol(symbol))
            {
                token = BracketToken.GetBracket(symbol, prevToken);
                return position + 1;
            }

            if (OperationToken.TryGetOperation(symbol, prevToken, out token))
            {
                return position + 1;
            }

            if (FunctionToken.IsStartSymbol(symbol))
            {
                token = new FunctionToken().FromString(source, ref position);
                return position;
            }

            throw new ArgumentOutOfRangeException("symbol", symbol, "Unexpected symbol");
        }
        public void TestMethod_NewFunctionToken()
        {
            string function = "exp";
            int position = 0;
            var token = new FunctionToken().FromString(function, ref position) as FunctionToken;

            Assert.AreEqual(1, token.Arity, "Arity for 'exp' function should be '1'");
        }