/// <summary>
        ///   expression
        /// | INTEROGATION expression_bool COLON expression
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override Expression VisitScript([NotNull] CalendariumParser.ScriptContext context)
        {
            Expression result;

            if (context.INTEROGATION() != null)
            {
                _stack.Push(_date);
                var call      = (MethodCallExpression)base.VisitScript(context);
                var e         = VisitExpression_bool(context.expression_bool());
                var condition = Expression.Condition(e, call, _date);
                result = Expression.Lambda <Func <DateTime, DateTime> >(condition, _date);
            }
            else
            {
                var call = (MethodCallExpression)base.VisitScript(context);
                result = Expression.Lambda <Func <int, DateTime[]> >(call, _year);
            }

            return(result);
        }