private ConditionExpression ParseLiteralExpression() { if (_tokenizer.IsToken(ConditionTokenType.LeftParen)) { _tokenizer.GetNextToken(); ConditionExpression e = ParseExpression(); _tokenizer.Expect(ConditionTokenType.RightParen); return(e); } if (_tokenizer.IsToken(ConditionTokenType.Minus)) { _tokenizer.GetNextToken(); if (!_tokenizer.IsNumber()) { throw new ConditionParseException($"Number expected, got {_tokenizer.TokenType}"); } return(ParseNumber(true)); } if (_tokenizer.IsNumber()) { return(ParseNumber(false)); } if (_tokenizer.TokenType == ConditionTokenType.String) { ConditionExpression e = new ConditionLayoutExpression(Layout.FromString(_tokenizer.StringTokenValue, _configurationItemFactory)); _tokenizer.GetNextToken(); return(e); } if (_tokenizer.TokenType == ConditionTokenType.Keyword) { string keyword = _tokenizer.EatKeyword(); if (TryPlainKeywordToExpression(keyword, out var expression)) { return(expression); } if (_tokenizer.TokenType == ConditionTokenType.LeftParen) { _tokenizer.GetNextToken(); ConditionMethodExpression predicateExpression = ParsePredicate(keyword); return(predicateExpression); } } throw new ConditionParseException("Unexpected token: " + _tokenizer.TokenValue); }
private ConditionExpression ParseLiteralExpression() { if (this.tokenizer.IsToken(ConditionTokenType.LeftParen)) { this.tokenizer.GetNextToken(); ConditionExpression e = this.ParseExpression(); this.tokenizer.Expect(ConditionTokenType.RightParen); return e; } if (this.tokenizer.IsToken(ConditionTokenType.Minus)) { this.tokenizer.GetNextToken(); if (!this.tokenizer.IsNumber()) { throw new ConditionParseException("Number expected, got " + this.tokenizer.TokenType); } string numberString = this.tokenizer.TokenValue; this.tokenizer.GetNextToken(); if (numberString.IndexOf('.') >= 0) { return new ConditionLiteralExpression(-double.Parse(numberString, CultureInfo.InvariantCulture)); } return new ConditionLiteralExpression(-int.Parse(numberString, CultureInfo.InvariantCulture)); } if (this.tokenizer.IsNumber()) { string numberString = this.tokenizer.TokenValue; this.tokenizer.GetNextToken(); if (numberString.IndexOf('.') >= 0) { return new ConditionLiteralExpression(double.Parse(numberString, CultureInfo.InvariantCulture)); } return new ConditionLiteralExpression(int.Parse(numberString, CultureInfo.InvariantCulture)); } if (this.tokenizer.TokenType == ConditionTokenType.String) { ConditionExpression e = new ConditionLayoutExpression(Layout.FromString(this.tokenizer.StringTokenValue, this.configurationItemFactory)); this.tokenizer.GetNextToken(); return e; } if (this.tokenizer.TokenType == ConditionTokenType.Keyword) { string keyword = this.tokenizer.EatKeyword(); if (0 == string.Compare(keyword, "level", StringComparison.OrdinalIgnoreCase)) { return new ConditionLevelExpression(); } if (0 == string.Compare(keyword, "logger", StringComparison.OrdinalIgnoreCase)) { return new ConditionLoggerNameExpression(); } if (0 == string.Compare(keyword, "message", StringComparison.OrdinalIgnoreCase)) { return new ConditionMessageExpression(); } if (0 == string.Compare(keyword, "loglevel", StringComparison.OrdinalIgnoreCase)) { this.tokenizer.Expect(ConditionTokenType.Dot); return new ConditionLiteralExpression(LogLevel.FromString(this.tokenizer.EatKeyword())); } if (0 == string.Compare(keyword, "true", StringComparison.OrdinalIgnoreCase)) { return new ConditionLiteralExpression(true); } if (0 == string.Compare(keyword, "false", StringComparison.OrdinalIgnoreCase)) { return new ConditionLiteralExpression(false); } if (0 == string.Compare(keyword, "null", StringComparison.OrdinalIgnoreCase)) { return new ConditionLiteralExpression(null); } if (this.tokenizer.TokenType == ConditionTokenType.LeftParen) { this.tokenizer.GetNextToken(); ConditionMethodExpression predicateExpression = this.ParsePredicate(keyword); return predicateExpression; } } throw new ConditionParseException("Unexpected token: " + this.tokenizer.TokenValue); }
private ConditionExpression ParseLiteralExpression() { if (tokenizer.IsToken(ConditionTokenType.LeftParen)) { tokenizer.GetNextToken(); ConditionExpression e = ParseExpression(); tokenizer.Expect(ConditionTokenType.RightParen); return e; }; if (tokenizer.IsNumber()) { string numberString = (string)tokenizer.TokenValue; tokenizer.GetNextToken(); if (numberString.IndexOf('.') >= 0) { return new ConditionLiteralExpression(Double.Parse(numberString, CultureInfo.InvariantCulture)); } else { return new ConditionLiteralExpression(Int32.Parse(numberString, CultureInfo.InvariantCulture)); } } if (tokenizer.TokenType == ConditionTokenType.String) { ConditionExpression e = new ConditionLayoutExpression(tokenizer.StringTokenValue); tokenizer.GetNextToken(); return e; } if (tokenizer.TokenType == ConditionTokenType.Keyword) { string keyword = tokenizer.EatKeyword(); if (0 == String.Compare(keyword, "level", true)) return new ConditionLevelExpression(); if (0 == String.Compare(keyword, "logger", true)) return new ConditionLoggerNameExpression(); if (0 == String.Compare(keyword, "message", true)) return new ConditionMessageExpression(); if (0 == String.Compare(keyword, "loglevel", true)) { tokenizer.Expect(ConditionTokenType.Dot); return new ConditionLiteralExpression(LogLevel.FromString(tokenizer.EatKeyword())); } if (0 == String.Compare(keyword, "true", true)) return new ConditionLiteralExpression(true); if (0 == String.Compare(keyword, "false", true)) return new ConditionLiteralExpression(false); if (tokenizer.TokenType == ConditionTokenType.LeftParen) { tokenizer.GetNextToken(); ConditionMethodExpression predicateExpression = ParsePredicate(keyword); return predicateExpression; } } throw new ConditionParseException("Unexpected token: " + tokenizer.TokenValue); }
private ConditionExpression ParseLiteralExpression() { if (this.tokenizer.IsToken(ConditionTokenType.LeftParen)) { this.tokenizer.GetNextToken(); ConditionExpression e = this.ParseExpression(); this.tokenizer.Expect(ConditionTokenType.RightParen); return(e); } if (this.tokenizer.IsToken(ConditionTokenType.Minus)) { this.tokenizer.GetNextToken(); if (!this.tokenizer.IsNumber()) { throw new ConditionParseException("Number expected, got " + this.tokenizer.TokenType); } string numberString = this.tokenizer.TokenValue; this.tokenizer.GetNextToken(); if (numberString.IndexOf('.') >= 0) { return(new ConditionLiteralExpression(-Double.Parse(numberString, CultureInfo.InvariantCulture))); } return(new ConditionLiteralExpression(-Int32.Parse(numberString, CultureInfo.InvariantCulture))); } if (this.tokenizer.IsNumber()) { string numberString = this.tokenizer.TokenValue; this.tokenizer.GetNextToken(); if (numberString.IndexOf('.') >= 0) { return(new ConditionLiteralExpression(Double.Parse(numberString, CultureInfo.InvariantCulture))); } return(new ConditionLiteralExpression(Int32.Parse(numberString, CultureInfo.InvariantCulture))); } if (this.tokenizer.TokenType == ConditionTokenType.String) { ConditionExpression e = new ConditionLayoutExpression(Layout.FromString(this.tokenizer.StringTokenValue, this.configurationItemFactory)); this.tokenizer.GetNextToken(); return(e); } if (this.tokenizer.TokenType == ConditionTokenType.Keyword) { string keyword = this.tokenizer.EatKeyword(); if (0 == String.Compare(keyword, "level", StringComparison.OrdinalIgnoreCase)) { return(new ConditionLevelExpression()); } if (0 == String.Compare(keyword, "logger", StringComparison.OrdinalIgnoreCase)) { return(new ConditionLoggerNameExpression()); } if (0 == String.Compare(keyword, "message", StringComparison.OrdinalIgnoreCase)) { return(new ConditionMessageExpression()); } if (0 == String.Compare(keyword, "loglevel", StringComparison.OrdinalIgnoreCase)) { this.tokenizer.Expect(ConditionTokenType.Dot); return(new ConditionLiteralExpression(LogLevel.FromString(this.tokenizer.EatKeyword()))); } if (0 == String.Compare(keyword, "true", StringComparison.OrdinalIgnoreCase)) { return(new ConditionLiteralExpression(true)); } if (0 == String.Compare(keyword, "false", StringComparison.OrdinalIgnoreCase)) { return(new ConditionLiteralExpression(false)); } if (0 == String.Compare(keyword, "null", StringComparison.OrdinalIgnoreCase)) { return(new ConditionLiteralExpression(null)); } if (this.tokenizer.TokenType == ConditionTokenType.LeftParen) { this.tokenizer.GetNextToken(); ConditionMethodExpression predicateExpression = this.ParsePredicate(keyword); return(predicateExpression); } } throw new ConditionParseException("Unexpected token: " + this.tokenizer.TokenValue); }
private ConditionExpression ParseLiteralExpression() { if (tokenizer.IsToken(ConditionTokenType.LeftParen)) { tokenizer.GetNextToken(); ConditionExpression e = ParseExpression(); tokenizer.Expect(ConditionTokenType.RightParen); return(e); } ; if (tokenizer.IsNumber()) { string numberString = (string)tokenizer.TokenValue; tokenizer.GetNextToken(); if (numberString.IndexOf('.') >= 0) { return(new ConditionLiteralExpression(Double.Parse(numberString, CultureInfo.InvariantCulture))); } else { return(new ConditionLiteralExpression(Int32.Parse(numberString, CultureInfo.InvariantCulture))); } } if (tokenizer.TokenType == ConditionTokenType.String) { ConditionExpression e = new ConditionLayoutExpression(tokenizer.StringTokenValue); tokenizer.GetNextToken(); return(e); } if (tokenizer.TokenType == ConditionTokenType.Keyword) { string keyword = tokenizer.EatKeyword(); if (0 == String.Compare(keyword, "level", true)) { return(new ConditionLevelExpression()); } if (0 == String.Compare(keyword, "logger", true)) { return(new ConditionLoggerNameExpression()); } if (0 == String.Compare(keyword, "message", true)) { return(new ConditionMessageExpression()); } if (0 == String.Compare(keyword, "loglevel", true)) { tokenizer.Expect(ConditionTokenType.Dot); return(new ConditionLiteralExpression(LogLevel.FromString(tokenizer.EatKeyword()))); } if (0 == String.Compare(keyword, "true", true)) { return(new ConditionLiteralExpression(true)); } if (0 == String.Compare(keyword, "false", true)) { return(new ConditionLiteralExpression(false)); } if (tokenizer.TokenType == ConditionTokenType.LeftParen) { tokenizer.GetNextToken(); ConditionMethodExpression predicateExpression = ParsePredicate(keyword); return(predicateExpression); } } throw new ConditionParseException("Unexpected token: " + tokenizer.TokenValue); }