/// <summary> /// Creates a constant string /// </summary> /// <param name="expr"></param> /// <returns></returns> public object ToConstantString(BindingCallExpr expr) { var text = expr.ParamList[0] as TokenData; var token = expr.ParamList[1] as TokenData; return(Exprs.Const(new LString(text.Token.Text), token)); }
/// <summary> /// Creates a constant number /// </summary> /// <param name="expr"></param> /// <returns></returns> public object ToConstantNumber(BindingCallExpr expr) { var num = Convert.ToDouble(expr.ParamList[0]); var token = expr.ParamList[1] as TokenData; return(Exprs.Const(new LNumber(num), token)); }
/// <summary> /// Creates a constant string /// </summary> /// <param name="expr"></param> /// <returns></returns> public object ToListCheck(BindingCallExpr expr) { var name = expr.ParamList[0] as TokenData; var token = expr.ParamList[1] as TokenData; return(Exprs.ListCheck(name, token)); }
/// <summary>Converts the parameters to a constant day expression </summary> /// <param name="expr">The function call expressions</param> public object ToDuration(BindingCallExpr expr) { var duration = (string)(expr.ParamList[0]); var type = (string)expr.ParamList[1]; var token = expr.ParamList[2] as TokenData; return(Exprs.Duration(duration, type, token)); }
/// <summary>Converts the parameters to a constant day expression </summary> /// <param name="expr">The function call expressions</param> public object ToRelativeDate(BindingCallExpr expr) { var relativeDay = (string)(expr.ParamList[0]); var dayOfWeek = Convert.ToInt32(expr.ParamList[1]); var month = Convert.ToInt32(expr.ParamList[2]); var token = expr.ParamList[3] as TokenData; return(Exprs.DateRelative(relativeDay, dayOfWeek, month, token)); }
/// <summary>Converts the parameters to a constant day expression </summary> /// <param name="expr">The function call expressions</param> public object ToRelativeDay(BindingCallExpr expr) { var day = Convert.ToInt32(expr.ParamList[0]); var time = (string)expr.ParamList[1]; var token = expr.ParamList[2] as TokenData; var dayName = _data.LookupDayName(day); return(Exprs.Day(dayName, time, token)); }
/// <summary>Converts the parameters to a constant date expression </summary> /// <param name="expr">The function call expressions</param> public object ToConstantDate(BindingCallExpr expr) { var month = Convert.ToInt32(expr.ParamList[0]); var day = Convert.ToInt32(expr.ParamList[1]); var year = Convert.ToInt32(expr.ParamList[2]); var time = (string)expr.ParamList[3]; var token = expr.ParamList[4] as TokenData; return(Exprs.Date(month, day, year, time, token)); }
public static Expr BindingCall(string bindingName, string functionName, TokenData token) { var bexpr = new BindingCallExpr(); bexpr.Name = functionName; bexpr.FullName = "sys." + bindingName + "." + functionName; bexpr.ParamListExpressions = new List <Expr>(); bexpr.ParamList = new List <object>(); return(bexpr); }
public object ToEnumerableLoop(BindingCallExpr expr) { var token = expr.ParamList[2] as TokenData; var varname = (string)expr.ParamList[0]; var enableWith = (bool)expr.ParamList[1]; var collectionName = varname + "s"; var varExpr = Exprs.Ident(collectionName, token); var loopexpr = Exprs.ForEach(varname, varExpr, token); ((BlockExpr)loopexpr).EnableAutoVariable = enableWith; return(loopexpr); }
/// <summary>Converts the parameters to a constant date time token </summary> /// <param name="expr">The function call expressions</param> public object ToConstantDateTimeToken(BindingCallExpr expr) { var date = expr.ParamList[0] as TokenData; var time = expr.ParamList[1] as TokenData; var d = (DateTime)date.Token.Value; var t = (TimeSpan)time.Token.Value; var datetime = new DateTime(d.Year, d.Month, d.Day, t.Hours, t.Minutes, t.Seconds); var text = date.Token.Text + " " + time.Token.Text; var token = date.Token.Clone(); token.SetTextAndValue(text, datetime); return(token); }
public object ToTable(BindingCallExpr expr) { var fields = expr.ParamList[0] as List <object>; var fieldNames = new List <string>(); foreach (var obj in fields) { fieldNames.Add(Convert.ToString(obj)); } var start = expr.ParamList[1] as TokenData; var exp = Exprs.Table(fieldNames, start); return(exp); }
/// <summary> /// Executes a call to a language binding class. /// </summary> /// <param name="expr"></param> /// <returns></returns> public object VisitBindingCall(BindingCallExpr expr) { var method = expr.Name; // 1. Resolve the parameters. ParamHelper.ResolveParametersToHostLangValues(expr.ParamListExpressions, expr.ParamList, this); // 2. Push call into stack expr.Ctx.State.Stack.Push(expr.FullName, null); // 3. Call language binding method/function. var binding = new MetaCompiler(); binding.Ctx = expr.Ctx; var result = binding.ExecuteFunction(method, new object[] { expr }); result = FunctionHelper.CheckConvert(result); // 4. Pop the call stack expr.Ctx.State.Stack.Pop(); return(result); }
public object VisitBindingCall(BindingCallExpr expr) { return(null); }