/// <summary> /// Evalulate this object's term; if it's not null, /// execute the body. Repeat. /// </summary> public override void Execute() { while (_term.Eval() != null) { _body.Execute(); } }
/// <summary> /// Return null if this term's subterms evaluate to /// different machines. /// </summary> /// <returns>null if this term's subterms evaluate to /// different machines. Otherwise return the /// machine.</returns> public override Machine Eval() { Machine m1 = _term1.Eval(); Machine m2 = _term2.Eval(); bool b = m1.Equals(m2); return(b ? m1 : null); }
/// <summary> /// Wykonuje zawartoœæ "else" obiektu, jeœli wartoœci¹ terminu jest /// null. W przeciwnym razie wykonuje zawartoœæ g³ówn¹. /// </summary> public override void Execute() { if (_term.Eval() != null) { _body.Execute(); } else { _elseBody.Execute(); } }
/// <summary> /// Zwraca maszynê, do której odnosi siê zmienna w dostarczonym /// kontekœcie. /// </summary> /// <returns>maszynê, do której odnosi siê zmienna w dostarczonym /// kontekœcie</returns> public override Machine Eval() { return(_value.Eval()); }
/// <summary> /// Okreœla maszynê wskazywan¹ przez termin i w³¹cza j¹. /// </summary> public override void Execute() { Machine m = _term.Eval(); m.StartUp(); }
/// <summary> /// Evaluate this object's term to a machine and shut down /// that machine. /// </summary> public override void Execute() { Machine m = _term.Eval(); m.ShutDown(); }
/// <summary> /// Zwraca null jeœli termin potomny dotyczy maszyny nieposiadaj¹cej /// materia³u. /// </summary> /// <returns>null jeœli termin potomny dotyczy maszyny nieposiadaj¹cej /// materia³u. W przeciwnym razie zwraca maszynê.</returns> public override Machine Eval() { Machine m = _term.Eval(); return(m.HasMaterial() ? m : null); }
/// <summary> /// Przekszta³ca terminy na konkretne maszyny i przenosi /// pojemnik miêdzy odpowiednimi maszynami. /// </summary> public override void Execute() { Robot.singleton.Carry(_from.Eval(), _to.Eval()); }