private ConditionMethodExpression ParsePredicate(string functionName) { var par = new List <ConditionExpression>(); while (!_tokenizer.IsEOF() && _tokenizer.TokenType != ConditionTokenType.RightParen) { par.Add(ParseExpression()); if (_tokenizer.TokenType != ConditionTokenType.Comma) { break; } _tokenizer.GetNextToken(); } _tokenizer.Expect(ConditionTokenType.RightParen); try { var methodInfo = _configurationItemFactory.ConditionMethods.CreateInstance(functionName); var methodDelegate = _configurationItemFactory.ConditionMethodDelegates.CreateInstance(functionName); return(new ConditionMethodExpression(functionName, methodInfo, methodDelegate, par)); } catch (Exception exception) { InternalLogger.Warn(exception, "Cannot resolve function '{0}'", functionName); if (exception.MustBeRethrownImmediately()) { throw; } throw new ConditionParseException($"Cannot resolve function '{functionName}'", exception); } }
private ConditionMethodExpression ParsePredicate(string functionName) { ConditionExpressionCollection par = new ConditionExpressionCollection(); while (!tokenizer.IsEOF() && tokenizer.TokenType != ConditionTokenType.RightParen) { par.Add(ParseExpression()); if (tokenizer.TokenType != ConditionTokenType.Comma) { break; } tokenizer.GetNextToken(); } tokenizer.Expect(ConditionTokenType.RightParen); return(new ConditionMethodExpression(functionName, par)); }