示例#1
0
        public override Var Parse(Scope scope)
        {
            Var ret = null;

            while (_condition.Parse(scope)?.AsBool() ?? false)
            {
                ret = _action.Parse(scope);
                if (scope.Escape.Count <= 0)
                {
                    continue;
                }
                Escaper esc = scope.Escape.Peek();
                if (esc.Method == Escape.Break)
                {
                    scope.Escape.Pop();
                }
                return(esc.Value);
            }
            return(ret);
        }
示例#2
0
        override public Var Parse(Scope scope)
        {
            initial?.Parse(scope);
            Var ret = null;

            while (condition == null || (condition.Parse(scope)?.AsBool() ?? false))
            {
                ret = body?.Parse(scope);
                if (scope.Escape.Count > 0)
                {
                    Escaper esc = scope.Escape.Peek();
                    if (esc.Method == Escape.Break)
                    {
                        scope.Escape.Pop();
                    }
                    return(esc.Value);
                }
                after?.Parse(scope);
            }

            return(ret);
        }
示例#3
0
        public override Var Parse(Scope scope)
        {
            Var should = _condition.Parse(scope);

            return(should?.AsBool() ?? false?_action.Parse(scope) : _otherwise?.Parse(scope));
        }
示例#4
0
 public override Var Parse(Scope scope)
 {
     return(_op.Parse(_leftArg.Parse(scope), _rightArg.Parse(scope)));
 }