package org.reasm.m68k.assembly.internal; import java.io.IOException; import javax.annotation.Nonnull; import javax.annotation.concurrent.Immutable; import org.reasm.m68k.messages.ElseWithoutIfErrorMessage; /** * The <code>ELSE</code> directive. * * @author Francis Gagné */ @Immutable class ElseDirective extends Mnemonic { @Nonnull static final ElseDirective ELSE = new ElseDirective(); private ElseDirective() { } @Override void assemble(M68KAssemblyContext context) throws IOException { context.sizeNotAllowed(); context.requireNumberOfOperands(0); final Object block = context.getParentBlock(); if (block instanceof IfBlockState) { final IfBlockState ifBlockState = (IfBlockState) block; // Process the block body, then stop. ifBlockState.iterator.stopAfterNext(); } else { context.addMessage(new ElseWithoutIfErrorMessage()); } } }