slcom/slangc/model/statements/BreakStatement.sauce

34 lines
808 B
Plaintext
Raw Normal View History

package slangc.model.statements;
import slangc.api.BytecodeInstructionWriter;
import slangc.api.Reporter;
import slangc.model.StatementModel;
import slangc.model.StatementOwner;
import slangc.parser.Node;
public class BreakStatement extends StatementModel {
public BreakStatement(StatementOwner owner, Node source) {
super(owner, source);
}
@Override
public void dump(Reporter reporter, String indent, String incr) {
reporter.note("DUMP", indent + "> Break (no label)");
}
@Override
public int resolveExpressions() {
return 0;
}
@Override
public void innerGenerate(BytecodeInstructionWriter w) {
if (w.getBreak() == null) {
w.genError("Nowhere to break to");
} else {
w.genJump(BytecodeInstructionWriter.JumpOp.GOTO, w.getBreak());
}
}
}