public static DmlfConditionBase ParseFilterExpression(FilterParserType type, DmlfExpression columnValue, string expression, ParserOptions options) { var opts = new FilterParseOptions(); switch (type) { case FilterParserType.String: opts.ParseString = true; break; case FilterParserType.Number: opts.ParseNumber = true; break; case FilterParserType.DateTime: opts.ParseTime = true; break; case FilterParserType.Logical: opts.ParseLogical = true; break; default: throw new Exception("DBSH-00000 Unexpected filter parser type:" + type); } var parser = new DmlfFilterParser(expression, columnValue, opts); parser.Run(); return(parser.Result); }
public ObjectFilterParser(string expression) : base(expression) { _options = new FilterParseOptions { ParseObject = true, }; }
public DmlfFilterParser(string expression, DmlfExpression columnValue, FilterParseOptions options) : base(expression) { _columnValue = columnValue; _options = options; _keywords.Add("NOT"); _keywords.Add("NULL"); if (_options.ParseString) { _keywords.Add("EMPTY"); } if (_options.ParseTime) { _keywords.Add("THIS"); _keywords.Add("NEXT"); _keywords.Add("LAST"); _keywords.Add("WEEK"); _keywords.Add("YEAR"); _keywords.Add("MONTH"); _keywords.Add("YESTERDAY"); _keywords.Add("TODAY"); _keywords.Add("TOMORROW"); _keywords.Add("HOUR"); new List <string> { "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" }.ForEach(x => _keywords.Add(x)); new List <string> { "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN" }.ForEach(x => _keywords.Add(x)); } if (_options.ParseLogical) { _keywords.Add("TRUE"); _keywords.Add("FALSE"); } }
public FilterTokenizer(string text, HashSet <string> keywords, FilterParseOptions options) { _text = text; _keywords = keywords; _options = options; }