Class: Kumi::Core::Analyzer::Passes::Codegen::Loop::Ruby::Emitter

Inherits:
Object
  • Object
show all
Defined in:
lib/kumi/core/analyzer/passes/codegen/loop/ruby/emitter.rb

Overview

Serializes LoopIR into Ruby. Every opcode maps to a fixed syntax shape; all semantic decisions were made by Loop::Lower.

Instance Method Summary collapse

Constructor Details

#initialize(registry) ⇒ Emitter

Returns a new instance of Emitter.



13
14
15
16
17
# File 'lib/kumi/core/analyzer/passes/codegen/loop/ruby/emitter.rb', line 13

def initialize(registry)
  @registry = registry
  @buffer = OutputBuffer.new
  @helper_kernels = []
end

Instance Method Details

#emit(loop_module, schema_digest:) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/kumi/core/analyzer/passes/codegen/loop/ruby/emitter.rb', line 19

def emit(loop_module, schema_digest:)
  @buffer.reset!
  @buffer.emit_header(schema_digest)

  loop_module.each_function do |fn|
    emit_function(fn)
  end

  emit_helpers
  @buffer.emit_footer
  @buffer.to_s
end