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

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

Overview

Serializes LoopIR into JavaScript. 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/js/emitter.rb', line 13

def initialize(registry)
  @registry = registry
  @out = []
  @indent = 0
end

Instance Method Details

#emit(loop_module, schema_digest: nil) ⇒ Object



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

def emit(loop_module, schema_digest: nil)
  reset!

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

  to_s
end