Ejemplo n.º 1
0
        public override ExecuteAction Execute(IExecutorContext context)
        {
            this.CurrentIndex++;
            if (this.CurrentIndex == 0)
            {
                this.SubVisitors[this.CurrentIndex] = context.CreateExecutor((ExprNode)this.Node.Operands[this.CurrentIndex]);
                context.Push(this.SubVisitors[this.CurrentIndex]);
                return(ExecuteAction.Continue);
            }
            else if (this.CurrentIndex == 1)
            {
                Result result      = this.SubVisitors[0].Result;
                int    resultIndex = -1;
                if ((bool)result.Value)
                {
                    resultIndex = 1;
                }
                else
                {
                    resultIndex = 2;
                }
                this.SubVisitors[1] = context.CreateExecutor((ExprNode)this.Node.Operands[resultIndex]);
                context.Push(this.SubVisitors[1]);

                return(ExecuteAction.Continue);
            }
            else
            {
                this.EndVisit(this.SubVisitors[1].Result);
                return(ExecuteAction.End);
            }
        }
Ejemplo n.º 2
0
 public override ExecuteAction Execute(IExecutorContext context)
 {
     base.CurrentIndex++;
     if (base.CurrentIndex == 0)
     {
         base.SubVisitors[base.CurrentIndex] = context.CreateExecutor((ExprNode)base.Node.Operands[base.CurrentIndex]);
         context.Push(base.SubVisitors[base.CurrentIndex]);
         return(ExecuteAction.Continue);
     }
     if (base.CurrentIndex == 1)
     {
         Result result = base.SubVisitors[0].Result;
         int    num    = -1;
         if ((bool)result.Value)
         {
             num = 1;
         }
         else
         {
             num = 2;
         }
         base.SubVisitors[1] = context.CreateExecutor((ExprNode)base.Node.Operands[num]);
         context.Push(base.SubVisitors[1]);
         return(ExecuteAction.Continue);
     }
     base.EndVisit(base.SubVisitors[1].Result);
     return(ExecuteAction.End);
 }
Ejemplo n.º 3
0
        public override ExecuteAction Execute(IExecutorContext context)
        {
            this.CurrentIndex++;
            if (this.CurrentIndex == 0)
            {
                this.SubVisitors[this.CurrentIndex] = context.CreateExecutor((ExprNode)this.Node.Operands[this.CurrentIndex]);
                context.Push(this.SubVisitors[this.CurrentIndex]);
                return ExecuteAction.Continue; 
            }
            else if (this.CurrentIndex == 1)
            {
                Result result = this.SubVisitors[0].Result;
                int resultIndex = -1;
                if ((bool) ConvertHelper.ChangeType(result.Value, typeof(bool)))
                {
                    resultIndex = 1;
                }
                else
                {
                    resultIndex = 2;
                }
                this.SubVisitors[1] = context.CreateExecutor((ExprNode)this.Node.Operands[resultIndex]);
                context.Push(this.SubVisitors[1]);

                return ExecuteAction.Continue;
            }
            else
            {
                this.EndVisit(this.SubVisitors[1].Result); 
                return ExecuteAction.End;
            }
        }
Ejemplo n.º 4
0
        public virtual ExecuteAction Execute(IExecutorContext context)
        {
            _currentIndex++;
            if (_currentIndex == _node.OperandCount)
            {
                Result[] results = new Result[_node.OperandCount];
                for (int i = 0; i < _node.OperandCount; i++)
                {
                    results[i] = _subVisitors[i].Result;
                }
                this.EndVisit(_node.Expression.Eval((Evaluator)context, results));
                return(ExecuteAction.End);
            }

            if (_currentIndex > _node.OperandCount)
            {
                throw new InvalidOperationException();
            }

            ExprNode subNode = (ExprNode)_node.Operands[_currentIndex];

            _subVisitors[_currentIndex] = context.CreateExecutor(subNode);
            context.Push(_subVisitors[_currentIndex]);

            return(ExecuteAction.Continue);
        }
Ejemplo n.º 5
0
		public virtual ExecuteAction Execute(IExecutorContext context) {
			_currentIndex++;
			if (_currentIndex == _node.OperandCount) {
				Result[] results = new Result[_node.OperandCount];
				for (int i = 0; i < _node.OperandCount; i++)
					results[i] = _subVisitors[i].Result;
				this.EndVisit(_node.Expression.Eval((Evaluator)context, results));
				return ExecuteAction.End;
			}

			if (_currentIndex > _node.OperandCount) {
				throw new InvalidOperationException();
			}

			ExprNode subNode = (ExprNode)_node.Operands[_currentIndex];
			_subVisitors[_currentIndex] = context.CreateExecutor(subNode);
			context.Push(_subVisitors[_currentIndex]);

			return ExecuteAction.Continue;
		}
Ejemplo n.º 6
0
        public virtual ExecuteAction Execute(IExecutorContext context)
        {
            this._currentIndex++;
            if (this._currentIndex == this._node.OperandCount)
            {
                OPCTrendLib.Result[] argArray = new OPCTrendLib.Result[this._node.OperandCount];
                for (int i = 0; i < this._node.OperandCount; i++)
                {
                    argArray[i] = this._subVisitors[i].Result;
                }
                this.EndVisit(this._node.Expression.Eval((Evaluator)context, argArray));
                return(ExecuteAction.End);
            }
            if (this._currentIndex > this._node.OperandCount)
            {
                throw new InvalidOperationException();
            }
            ExprNode node = (ExprNode)this._node.Operands[this._currentIndex];

            this._subVisitors[this._currentIndex] = context.CreateExecutor(node);
            context.Push(this._subVisitors[this._currentIndex]);
            return(ExecuteAction.Continue);
        }