package me.august.lumen.compile.parser.ast.stmt; import me.august.lumen.compile.analyze.ASTVisitor; import me.august.lumen.compile.analyze.VisitorConsumer; import me.august.lumen.compile.codegen.BuildContext; import me.august.lumen.compile.parser.ast.CodeBlock; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; public class BreakStmt implements CodeBlock, VisitorConsumer { private Loop owner; public BreakStmt() { } public BreakStmt(Loop owner) { this.owner = owner; } public Loop getOwner() { return owner; } public void setOwner(Loop owner) { this.owner = owner; } @Override public void generate(MethodVisitor visitor, BuildContext context) { visitor.visitJumpInsn(Opcodes.GOTO, owner.getExitLabel()); } @Override public void accept(ASTVisitor astVisitor) { astVisitor.visitBreakStmt(this); } }