/// <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); }