public override IValue Execute(ActuatorBase state) { IValue value = new BooleanValue(false); state.BreakLoop = true; return(value); }
public override IValue Execute(ActuatorBase state) { var v1 = mExpression1.Execute(state); var v2 = mExpression2.Execute(state); return(new IntegerValue(v1.AsInteger() % v2.AsInteger())); }
public override IValue Execute(ActuatorBase state) { state.FunctionTable[Name] = (IValue[] args) => { var vt = state.VariableTable; var bp = state.BreakProgram; var newVT = new Dictionary <string, IValue>(); var i = 0; foreach (var pn in Parameters) { if (i < args.Length) { newVT[pn] = args[i++]; } else { newVT[pn] = new IntegerValue(0); } } state.VariableTable = newVT; try { state.BreakProgram = false; return(mBlockStatement.Execute(state)); } finally { state.VariableTable = vt; state.BreakProgram = bp; } }; return(new BooleanValue(true)); }
public override IValue Execute(ActuatorBase state) { var v1 = mExpression1.Execute(state); var v2 = mExpression2.Execute(state); return(v1.VNEquals(v2)); }
public override IValue Execute(ActuatorBase state) { var v1 = mExpression1.Execute(state); var v2 = mExpression2.Execute(state); return(new BooleanValue(v1.AsBoolean() || v2.AsBoolean())); }
public override IValue Execute(ActuatorBase state) { var v = Value.Execute(state); state.VariableTable[Name] = v; return(v); }
public override IValue Execute(ActuatorBase state) { var r = (int)(Row.Execute(state).AsReal()); var c = (int)(Col.Execute(state).AsReal()); return(new ArrayValue(r, c, Value)); }
public override IValue Execute(ActuatorBase state) { IValue value = mCount.Execute(state); long c = (long)value.AsReal(); long i = 0; var indexName = string.IsNullOrEmpty(IndexName) ? $"<index>" : IndexName; state.VariableTable[indexName] = new IntegerValue(i); while (i < c) { value = mLoopBlock.Execute(state); ++i; c = (long)(mCount.Execute(state).AsReal()); if (state.BreakLoop) { state.BreakLoop = false; break; } if (state.BreakProgram) { break; } state.VariableTable[indexName] = new IntegerValue(i); value = mCount.Execute(state); c = (long)value.AsReal(); } return(value); }
public override IValue Execute(ActuatorBase state) { IValue value; if (state.VariableTable.TryGetValue(Name, out value)) { return(value); } return(new IntegerValue(0)); }
public override IValue Execute(ActuatorBase state) { var a = mExpression1.Execute(state); var b = mExpression2.Execute(state); if (a.Is(ValueType.Integer) && b.Is(ValueType.Integer)) { return(new IntegerValue(a.AsInteger() / b.AsInteger())); } return(new RealValue(a.AsReal() / b.AsReal())); }
public override IValue Execute(ActuatorBase state) { if (!state.VariableTable.ContainsKey(Name)) { return(new IntegerValue(0)); } var value = Value.Execute(state); state.VariableTable[Name] = value; return(value); }
public override IValue Execute(ActuatorBase state) { IValue value = null; if (mExpression != null) { value = mExpression.Execute(state); } else { value = new BooleanValue(false); } state.BreakProgram = true; return(value); }
public IValue Execute(ActuatorBase state) { IValue value = new IntegerValue(0); foreach (var s in mStatements) { value = s.Execute(state); if (state.BreakProgram) { state.BreakProgram = false; break; } } return(value); }
public override IValue Execute(ActuatorBase state) { IValue value; if (state.VariableTable.TryGetValue(Name, out value) && value is ArrayValue) { var row = (int)mRow.Execute(state).AsReal(); var col = (int)mCol.Execute(state).AsReal(); var v = Value.Execute(state); var arr = value as ArrayValue; arr.SetValue(row, col, v); return(v); } return(new IntegerValue(0)); }
public override IValue Execute(ActuatorBase state) { var a = mExpression1.Execute(state); var b = mExpression2.Execute(state); if (a.Is(ValueType.String) || b.Is(ValueType.String)) { return(new BooleanValue(a.AsString().Length > b.AsString().Length)); } else if (a.Is(ValueType.Real) || b.Is(ValueType.Real)) { return(new BooleanValue(a.AsReal() > b.AsReal())); } return(new BooleanValue(a.AsInteger() < b.AsInteger())); }
public override IValue Execute(ActuatorBase state) { var a = mExpression1.Execute(state); var b = mExpression2.Execute(state); if (a.Is(ValueType.String) || b.Is(ValueType.String)) { return(new StringValue(a.AsString().TrimEnd() + b.AsString().TrimStart())); } else if (a.Is(ValueType.Real) || b.Is(ValueType.Real)) { return(new RealValue(a.AsReal() - b.AsReal())); } return(new IntegerValue(a.AsInteger() - b.AsInteger())); }
protected StepTaskEntityBase(ISequenceStep step, SlaveContext context, int sequenceIndex) { this.Context = context; this.StepData = step; this.Result = StepResult.NotAvailable; this.SequenceIndex = sequenceIndex; this.Actuator = ActuatorBase.GetActuator(step, context, sequenceIndex); this.Coroutine = null; // 只有在断言失败和调用异常都配置为终止执行时,该步骤才会被判断为失败后终止 if (null != StepData && StepData.HasSubSteps) { this.SubStepRoot = ModuleUtils.CreateSubStepModelChain(StepData.SubSteps, Context, sequenceIndex); } BreakIfFailed = (null == StepData) || (StepData.AssertFailedAction == FailedAction.Terminate && StepData.InvokeErrorAction == FailedAction.Terminate); }
public override IValue Execute(ActuatorBase state) { IValue value; if (state.VariableTable.TryGetValue(Name, out value)) { if (value.GetType() == typeof(ArrayValue)) { var row = (int)mRow.Execute(state).AsReal(); var col = (int)mCol.Execute(state).AsReal(); return((value as ArrayValue).GetValue(row, col)); } return(value); } return(new IntegerValue(0)); }
public override IValue Execute(ActuatorBase state) { IValue value = new IntegerValue(0); foreach (var s in mStatements) { value = s.Execute(state); if (state.BreakProgram) { break; } if (state.BreakLoop) { break; } } return(value); }
public override IValue Execute(ActuatorBase state) { Func <IValue[], IValue> func; var parameters = new IValue[mParameters.Length]; int idx = 0; foreach (var p in mParameters) { parameters[idx++] = p.Execute(state); } if (state.FunctionTable.TryGetValue(Name, out func)) { return(func.Invoke(parameters)); } else { throw new Exception($"函数未找到:{Name}"); } }
public override IValue Execute(ActuatorBase state) { IValue value; if (mConditional.Execute(state).AsBoolean()) { value = mTrueBlock.Execute(state); } else { if (mFalseBlock != null) { value = mFalseBlock.Execute(state); } else { value = new BooleanValue(false); } } return(value); }
public override IValue Execute(ActuatorBase state) { IValue value = mConditional.Execute(state); while (value.AsBoolean()) { value = mLoopBlock.Execute(state); if (state.BreakLoop) { state.BreakLoop = false; break; } if (state.BreakProgram) { break; } value = mConditional.Execute(state); } return(value); }
public override IValue Execute(ActuatorBase state) { return(Value); }
public abstract IValue Execute(ActuatorBase state);