コード例 #1
0
        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);
        }
コード例 #2
0
 public ObjectFilterParser(string expression)
     : base(expression)
 {
     _options = new FilterParseOptions
     {
         ParseObject = true,
     };
 }
コード例 #3
0
        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");
            }
        }
コード例 #4
0
 public FilterTokenizer(string text, HashSet <string> keywords, FilterParseOptions options)
 {
     _text     = text;
     _keywords = keywords;
     _options  = options;
 }