The Merge class extends BinaryInstruction and implements basic parallelism: at each instant the two instructions left and then right are activated in this order. It terminates when both left and right do terminate.
public class Merge extends BinaryInstruction { private byte leftStatus = SUSP, rightStatus = SUSP; public Merge (Instruction left, Instruction right) { super.left = left; super.right = right; } public void reset(){ super.reset(); leftStatus = rightStatus = SUSP; } final public String toString(){ return "(" + left + " || " + right + ")"; } final protected byte activation(Machine machine) { if (leftStatus == SUSP) leftStatus = left.activ(machine); if (rightStatus == SUSP) rightStatus = right.activ(machine); if (leftStatus == TERM && rightStatus == TERM) return TERM; if (leftStatus == SUSP || rightStatus == SUSP) return SUSP; leftStatus = rightStatus = SUSP; return STOP; } }