Esempio n. 1
0
	    /// <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);
	    }
Esempio n. 2
0
	    /// <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);
	    }
Esempio n. 3
0
	    /// <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;
	    }
Esempio n. 4
0
 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;
 }
Esempio n. 5
0
        /// <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;
        }
Esempio n. 6
0
 /// <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);
 }
Esempio n. 7
0
 /// <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);
 }
Esempio n. 8
0
 /// <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);
 }
Esempio n. 9
0
 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;
 }
Esempio n. 10
0
 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;
 }
Esempio n. 11
0
 /// <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);
 }
Esempio n. 12
0
 /// <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);
 }
Esempio n. 13
0
 public object VisitBindingCall(BindingCallExpr expr)
 {
     return null;
 }