package core import ( "fmt" "git.akyoto.dev/cli/q/src/build/asm" "git.akyoto.dev/cli/q/src/build/ast" ) // CompileLoop compiles a loop instruction. func (f *Function) CompileLoop(loop *ast.Loop) error { f.count.loop++ label := fmt.Sprintf("%s_loop_%d", f.Name, f.count.loop) f.AddLabel(label) f.pushScope(loop.Body) err := f.CompileAST(loop.Body) f.popScope() f.Jump(asm.JUMP, label) return err }