public override void Evaluate(IScriptContext context)
        {
            bool   condBool;
            object result = RuntimeHost.NullValue;

            init.Evaluate(context);
            cond.Evaluate(context);
            condBool = context.Result == null ? true : (bool)context.Result;

            while (condBool)
            {
                statement.Evaluate(context);
                result = context.Result;

                if (context.IsBreak() || context.IsReturn())
                {
                    context.SetBreak(false);
                    break;
                }

                if (context.IsContinue())
                {
                    context.SetContinue(false);
                }


                next.Evaluate(context);
                cond.Evaluate(context);
                condBool = context.Result == null ? true : (bool)context.Result;
            }

            context.Result = result;
        }
Exemple #2
0
        public override void Evaluate(IScriptContext context)
        {
            condition.Evaluate(context);
            object lastResult = RuntimeHost.NullValue;

            while ((bool)context.Result)
            {
                statement.Evaluate(context);
                lastResult = context.Result;

                if (context.IsBreak() || context.IsReturn())
                {
                    context.SetBreak(false);
                    break;
                }

                if (context.IsContinue())
                {
                    context.SetContinue(false);
                }

                condition.Evaluate(context);
            }

            context.Result = lastResult;
        }
 public override void Evaluate(IScriptContext context)
 {
     condition.Evaluate(context);
     if ((bool)context.Result)
     {
         statement.Evaluate(context);
     }
     else
     if (elseStatement != null)
     {
         elseStatement.Evaluate(context);
     }
 }
        public override void Evaluate(IScriptContext context)
        {
            object switchValue = context.Result;

            cond.Evaluate(context);
            if (switchValue.Equals(context.Result))
            {
                statement.Evaluate(context);
                context.SetBreak(true);
            }
            else
            {
                context.Result = switchValue;
            }
        }
 public override void Evaluate(IScriptContext context)
 {
     try
     {
         tryBlock.Evaluate(context);
     }
     catch (Exception e)
     {
         context.SetItem(expName, e);
         catchBlock.Evaluate(context);
     }
     finally
     {
         finallyBlock.Evaluate(context);
     }
 }
        public override void Evaluate(IScriptContext context)
        {
            expr.Evaluate(context);

            IEnumerable enumeration = context.Result as IEnumerable;
            IEnumerator enumerator  = null;

            if (enumeration != null)
            {
                enumerator = enumeration.GetEnumerator();
            }
            else
            {
                IObjectBind bind = RuntimeHost.Binder.BindToMethod(context.Result, "GetEnumerator", new Type[0], new object[0]);
                if (bind != null)
                {
                    enumerator = bind.Invoke(context, null) as IEnumerator;
                }
            }

            if (enumerator == null)
            {
                throw new ScriptException("GetEnumerator() method did not found in object: " + context.Result.ToString());
            }

            enumerator.Reset();

            while (enumerator.MoveNext())
            {
                context.SetItem(name.Text, enumerator.Current);
                statement.Evaluate(context);
                if (context.IsBreak() || context.IsReturn())
                {
                    context.SetBreak(false);
                    break;
                }
                if (context.IsContinue())
                {
                    context.SetContinue(false);
                }
            }
        }
 public override void Evaluate(IScriptContext context)
 {
     statement.Evaluate(context);
 }