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