/// <summary> /// Zwraca zsumowana lub odjeta wartosc podrzednych wezlow typu Timespan i Timespan /// </summary> /// <param name="context"></param> /// <returns></returns> public override Time VisitTimespanOpTimespan([NotNull] DateCalculatorParser.TimespanOpTimespanContext context) { Time time1 = Visit(context.GetChild(0)); Time time2 = Visit(context.GetChild(2)); Time wynik = new Time(); switch (context.op.Type) { case DateCalculatorParser.Add: wynik.timespan = time1.timespan.Add(time2.timespan); break; case DateCalculatorParser.Subtract: wynik.timespan = time1.timespan.Subtract(time2.timespan); break; default: throw new ArgumentOutOfRangeException(); } wynik.isTimeSpan = true; return(wynik); }
/// <summary> /// Exit a parse tree produced by the <c>timespanOpTimespan</c> /// labeled alternative in <see cref="DateCalculatorParser.operation"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitTimespanOpTimespan([NotNull] DateCalculatorParser.TimespanOpTimespanContext context) { }
/// <summary> /// Visit a parse tree produced by the <c>timespanOpTimespan</c> /// labeled alternative in <see cref="DateCalculatorParser.operation"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitTimespanOpTimespan([NotNull] DateCalculatorParser.TimespanOpTimespanContext context) { return(VisitChildren(context)); }