public override void ExitSinglemodel([NotNull] SinglemodelContext context)
        {
            var fullpath = path.GetPath();

            path.Pop();
            logger.Trace("Exit singlemodel {0}", fullpath);

            var obj = ObjProps.Get(context.obj());

            var model = new Models.SingleModel(context.ID().GetText(), obj);

            var orderby = ObjOrderByProps.Get(context.obj());

            model.Path = fullpath;
            model.OrderBy.AddRange(orderby);

            //model.Section = CurrentSection;
            if (context.inherits() != null)
            {
                model.Inherits     = true;
                model.InheritsFrom = context.inherits().ID().GetText();
            }
            string obs = "";

            logger.Trace("Single model = {0}{1}{2}",
                         model.Name,
                         context.inherits() != null ? " : " + model.InheritsFrom : "",
                         orderby.Any() ? " / " + orderby.Aggregate(obs, (f, run) => obs += run + ", ") : "");

            GraphElements.Add(model.Path, new GraphElement(model.Path, model));
            SingleModels.Put(context, model);
            base.ExitSinglemodel(context);
        }
        public override void ExitValueObject([NotNull] ValueObjectContext context)
        {
            base.ExitValueObject(context);
            var newObj = new Models.ModelCompositeObject
            {
                Value = ObjProps.Get(context.obj())
            };
            var orderby = ObjOrderByProps.Get(context.obj());

            newObj.OrderBy.AddRange(orderby);

            ValueProps.Put(context, newObj);
        }
        public override void ExitObjEmpty([NotNull] ObjEmptyContext context)
        {
            var obj     = new List <Models.IModelObject>();
            var orderby = new List <string>();

            if (context.orderstatement() != null)
            {
                foreach (var item in context.orderstatement()._orderby)
                {
                    orderby.Add(item.Text);
                }
            }
            ObjOrderByProps.Put(context, orderby);
            ObjProps.Put(context, obj);
            base.ExitObjEmpty(context);
        }
        public override void ExitObjFull([NotNull] ObjFullContext context)
        {
            var obj     = new List <Models.IModelObject>();
            var orderby = new List <string>();

            if (context.orderstatement() != null)
            {
                foreach (var item in context.orderstatement()._orderby)
                {
                    orderby.Add(item.Text);
                }
            }
            foreach (var item in context._pairs)
            {
                var p = PairProps.Get(item);
                obj.Add(p);
            }
            ObjProps.Put(context, obj);
            ObjOrderByProps.Put(context, orderby);
            base.ExitObjFull(context);
        }