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'"); }