Example #1
0
 //Проверка корректности выражений генерации
 public void Check(ITablStruct tabl)
 {
     foreach (var part in _voidParts)
     {
         part.Check(tabl);
     }
 }
Example #2
0
 //Проверка корректности выражений генерации
 public void Check(ITablStruct tabl)
 {
     if (tabl.Fields.ContainsKey(_var.Name))
     {
         AddError("Имя переменной не должно совпадать с именем поля таблицы");
     }
     _var.DataType = _var.DataType.Add(_nodeMean.Check(tabl));
 }
Example #3
0
 //Получение типа данных
 public DataType Check(ITablStruct tabl)
 {
     if (_var == null)
     {
         return(DataType.Error);
     }
     return(_var.DataType);
 }
Example #4
0
 //Проверка корректности выражений генерации
 public void Check(ITablStruct tabl)
 {
     if (_condition.Check(tabl) != DataType.Boolean)
     {
         AddError("Недопустимый тип данных условия");
     }
     _prog.Check(tabl);
 }
Example #5
0
 //Получение типа данных
 public DataType Check(ITablStruct tabl)
 {
     if (_condition.Check(tabl) != DataType.Boolean)
     {
         AddError("Недопустимый тип данных условия");
         return(DataType.Error);
     }
     return(_prog.Check(tabl).Add(_elseProg.Check(tabl)));
 }
Example #6
0
 //Проверка корректности выражений генерации
 public void Check(ITablStruct tabl)
 {
     if (_conditions.Any(c => c.Check(tabl) != DataType.Boolean))
     {
         AddError("Недопустимый тип данных условия");
     }
     foreach (var expr in _variants)
     {
         expr.Check(tabl);
     }
 }
Example #7
0
        private DataType CheckField(GenKeeper keeper, ITablStruct tstruct, string formula)
        {
            keeper.Errors.Clear();
            var parsing = new FieldsParsing(keeper, "поле", formula);

            if (parsing.ResultTree == null)
            {
                return(DataType.Error);
            }
            return(((IExprNode)parsing.ResultTree).Check(tstruct));
        }
Example #8
0
        private ITablStruct CheckSubRule(GenKeeper keeper, TablsList tabls, ITablStruct tstruct, string formula)
        {
            keeper.Errors.Clear();
            var parsing = new SubRuleParsing(keeper, "поле", formula);

            if (parsing.ResultTree == null)
            {
                return(null);
            }
            return(((INodeRTabl)parsing.ResultTree).Check(tabls, tstruct));
        }
Example #9
0
 //Проверка выражения
 public ITablStruct Check(TablsList dataTabls, ITablStruct parentStruct)
 {
     if (parentStruct.Child == null)
     {
         AddError("Подтаблица отстутствует");
         return(null);
     }
     if (Condition != null && Condition.Check(parentStruct.Child) != DataType.Boolean)
     {
         AddError("Недопустимый тип данных условия");
     }
     return(ChildNode == null ? parentStruct.Child : ChildNode.Check(dataTabls, parentStruct.Child));
 }
Example #10
0
        //Выбрать ряды по условию генерации подтаблицы
        private SubRows[] SelectSubRowsS(GenKeeper keeper, TablsList tabls, ITablStruct tstruct, SubRows rows, string formula)
        {
            keeper.Errors.Clear();
            var parsing = new SubRuleParsing(keeper, "поле", formula);

            if (parsing.ResultTree == null)
            {
                return(null);
            }
            var node = (SubNodeR)parsing.ResultTree;

            node.Check(tabls, tstruct);
            return(node.SelectRows(tabls, rows).ToArray());
        }
Example #11
0
 //Получение типа данных
 public DataType Check(ITablStruct tabl)
 {
     if (tabl == null)
     {
         AddError("Попытка получения значения поля при не заданной таблице");
         return(DataType.Error);
     }
     if (!tabl.Fields.ContainsKey(_field))
     {
         AddError("Поле не найдено в исходной таблице");
         return(DataType.Error);
     }
     return(tabl.Fields[_field]);
 }
Example #12
0
 //Проверка корректности выражений генерации
 public void Check(ITablStruct tabl)
 {
     if (tabl is RowGroupStruct)
     {
         AddError("Переход к надтаблице недопустим для сгруппированных строк");
     }
     else if (tabl.Parent == null)
     {
         AddError("Недопустимый переход к надтаблице");
     }
     else
     {
         _prog.Check(tabl.Parent);
     }
 }
Example #13
0
 //Проверка корректности выражений генерации
 public void Check(ITablStruct tabl)
 {
     if (tabl.Child == null)
     {
         AddError("Недопустимый переход к подтаблице");
     }
     else if (_condition != null && _condition.Check(tabl.Child) != DataType.Boolean)
     {
         AddError("Недопустимый тип данных условия");
     }
     else
     {
         _prog.Check(tabl.Child);
     }
 }
Example #14
0
        //Проверка выражения
        public ITablStruct Check(TablsList dataTabls, ITablStruct parentStruct)
        {
            if (!dataTabls.Structs.ContainsKey(_tablName))
            {
                AddError("Не найдена таблица");
                return(null);
            }
            var tstruct = dataTabls.Structs[_tablName].Tabls[0];

            if (_condition != null && _condition.Check(tstruct) != DataType.Boolean)
            {
                AddError("Недопустимый тип данных условия");
            }
            return(ChildNode == null ? tstruct : ChildNode.Check(dataTabls, tstruct));
        }
Example #15
0
        //Получение типа данных
        public DataType Check(ITablStruct tabl)
        {
            if (_conditions.Any(c => c.Check(tabl) != DataType.Boolean))
            {
                AddError("Недопустимый тип данных условия");
                return(DataType.Error);
            }
            var dt = DataType.Value;

            foreach (var expr in _variants)
            {
                dt = dt.Add(expr.Check(tabl));
            }
            return(dt);
        }
Example #16
0
        public GenSubRow(ModuleGenerator generator, //Ссылка на генератор
                         TablsList dataTabls,       //Исходные таблицы для генерации
                         ITablStruct dataTabl,      //Таблица - шаблон генерации
                         GenTemplateTable table,    //Поля таблицы - шаблона генерации
                         DaoRec rec)                //Рекордсет таблицы результатов
            : base(generator, table, rec)
        {
            var subTabl = Rule == null ? dataTabl : ((INodeRTabl)Rule).Check(dataTabls, dataTabl);

            foreach (var key in Fields.Keys)
            {
                Keeper.SetFieldName(key);
                Fields[key].Check(subTabl);
            }
            rec.Put(table.ErrField, Keeper.ErrMess);
        }
Example #17
0
 //Получение типа данных
 public DataType Check(ITablStruct tabl)
 {
     if (tabl is RowGroupStruct)
     {
         AddError("Переход к надтаблице недопустим для сгруппированных строк");
     }
     else if (tabl.Parent == null)
     {
         AddError("Недопустимый переход к надтаблице");
     }
     else
     {
         return(_expr.Check(tabl.Parent));
     }
     return(DataType.Error);
 }
Example #18
0
        //Проверка выражения
        public ITablStruct Check(TablsList dataTabls, ITablStruct tablParent)
        {
            var gstruct = new RowGroupStruct((TablStruct)tablParent, _fields);

            foreach (var field in _fieldsNodes)
            {
                var s = ((ConstNode)field).Mean.String;
                if (!tablParent.Fields.ContainsKey(s))
                {
                    Keeper.AddError("Поле для группировки не найдено в таблице", field);
                }
                else
                {
                    gstruct.Fields.Add(s, tablParent.Fields[s]);
                }
            }
            return(gstruct);
        }
Example #19
0
        //Проверка формулы
        public DataType Check(ITablStruct tabl)
        {
            var dtype = DataType.Value;

            foreach (var child in Nodes)
            {
                if (child is IExprNode)
                {
                    var res = ((IExprNode)child).Check(tabl);
                    dtype = dtype == DataType.Value ? res : DataType.String;
                }
                else if (child is IVoidNode)
                {
                    ((IVoidNode)child).Check(tabl);
                }
            }
            return(dtype);
        }
Example #20
0
        //Получение типа данных
        public DataType Check(ITablStruct tabl)
        {
            var generator = Keeper.Generator;
            var funs      = generator.FunsChecker.Funs;

            if (!funs.ContainsKey(Token.Text))
            {
                AddError("Неизвестная функция");
            }
            else
            {
                var fs = funs[Token.Text].DefineOverload(_args.Select(a => a.Check(tabl)).ToArray());
                if (fs == null)
                {
                    AddError("Недопустимые типы данных параметров функции");
                    return(DataType.Error);
                }
                _fun = (IGenFun)generator.Functions.Funs[fs.Overload.Code];
                return(_resultType = fs.DataType);
            }
            return(DataType.Error);
        }
Example #21
0
        //Проверка корректности выражений генерации
        public DataType Check(ITablStruct tabl)
        {
            var child = tabl.Child;

            if (child == null)
            {
                AddError("Недопустимый переход к подтаблице");
                return(DataType.Error);
            }
            if (_pars.Length > 1 && _pars[0].Check(child) == DataType.Boolean)
            {
                _condition = _pars[0];
                _expr      = _pars[1];
                if (_pars.Length == 3)
                {
                    _separator = _pars[2];
                }
            }
            else
            {
                _expr = _pars[0];
                if (_pars.Length == 2)
                {
                    _separator = _pars[1];
                }
                if (_pars.Length == 3)
                {
                    AddError("Недопустимый тип данных условия");
                }
            }

            _expr.Check(child);
            if (_separator != null)
            {
                _separator.Check(child);
            }
            return(DataType.String);
        }
Example #22
0
        private IEnumerable <SubRows> SelectRowsStruct(GenKeeper keeper, TablsList tabls, string formula, out ITablStruct tstruct)
        {
            tstruct = null;
            keeper.Errors.Clear();
            var parsing = new RuleParsing(keeper, "поле", formula);

            if (parsing.ResultTree == null)
            {
                return(null);
            }
            var node = (NodeRTabl)parsing.ResultTree;

            tstruct = node.Check(tabls, null);
            return(node.SelectRows(tabls, null));
        }
Example #23
0
 //Проверка корректности выражений генерации, определение типа данных выражения
 public DataType Check(ITablStruct tabl)
 {
     _voidProg.Check(tabl);
     return(_expr.Check(tabl));
 }
Example #24
0
 //Получение типа данных
 public DataType Check(ITablStruct tabl)
 {
     return(DataType);
 }
Example #25
0
 private TablRow[] SelectSubRows(GenKeeper keeper, TablsList tabls, ITablStruct tstruct, SubRows rows, string formula)
 {
     return(SelectSubRowsS(keeper, tabls, tstruct, rows, formula).Cast <TablRow>().ToArray());
 }