private AST Group2() { var ast = Group1(); if (CurrentToken.TokenType == TokenType.Function) { if (ast != null) { ThrowUnexpectedTokenTypeException(); } switch (CurrentToken.Value) { case "ToString": ast = new ToStringFunction(CurrentToken); break; case "DateTime.Now": ast = new DateTimeFunction(CurrentToken); break; case "string.Concat": ast = new StringConcatFunction(CurrentToken); break; case "AddMonths": ast = new AddMonths(CurrentToken); break; default: ThrowUnexpectedTokenTypeException(); break; } CurrentToken = _lexer.GetNextToken(); if (CurrentToken.TokenType != TokenType.OpenParenthesis) { ThrowUnexpectedTokenTypeException(); } CurrentToken = _lexer.GetNextToken(); while (CurrentToken.TokenType != TokenType.CloseParenthesis) { ast.ChildNodes.Add(Group10()); if (CurrentToken.TokenType == TokenType.Separator) { CurrentToken = _lexer.GetNextToken(); } } CurrentToken = _lexer.GetNextToken(); } return(ast); }
public override object Convert(object value) { if (value == null) { return(value); } string input = value.ToString(); Tracer.TraceInformation("adddays {0}", AddDays); DateTime dateValue; if (DateTime.TryParse(input, out dateValue)) { if (!AddSeconds.Equals(0)) { dateValue = dateValue.AddSeconds(this.AddSeconds); Tracer.TraceInformation("date-after-addseconds {0}", dateValue); } if (!AddMinutes.Equals(0)) { dateValue = dateValue.AddMinutes(this.AddMinutes); Tracer.TraceInformation("date-after-addminutes {0}", dateValue); } if (!AddHours.Equals(0)) { dateValue = dateValue.AddHours(this.AddHours); Tracer.TraceInformation("date-after-addhours {0}", dateValue); } if (!AddDays.Equals(0)) { dateValue = dateValue.AddDays(this.AddDays); Tracer.TraceInformation("date-after-adddays {0}", dateValue); } if (!AddMonths.Equals(0)) { dateValue = dateValue.AddMonths(this.AddMonths); Tracer.TraceInformation("date-after-addmonths {0}", dateValue); } if (!AddYears.Equals(0)) { dateValue = dateValue.AddYears(this.AddYears); Tracer.TraceInformation("date-after-addyears {0}", dateValue); } return(dateValue); } else { Tracer.TraceWarning("could-not-parse-to-date {0}", 1, input); } return(value); }