Class: Gisele::VM::Bytecode::Printer

Inherits:
Sexpr::Rewriter
  • Object
show all
Defined in:
lib/gisele/vm/bytecode/printer.rb

Instance Method Summary collapse

Instance Method Details

#on_block(sexpr) ⇒ Object



18
19
20
21
22
23
# File 'lib/gisele/vm/bytecode/printer.rb', line 18

def on_block(sexpr)
  z, label, *instr = sexpr
  label = "#{label}: "
  label << " "*(@sep.size - label.size - 1)
  label << instr.map{|i| apply(i)}.join(@sep).strip
end

#on_gvm(sexpr) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/gisele/vm/bytecode/printer.rb', line 6

def on_gvm(sexpr)
  z, *blocks = sexpr
  max = blocks.inject(0){|m,bl|
    length = bl[1].to_s.size
    length > m ? length : m
  }
  @sep = "\n" + " "*(max + 2)
  code = ""
  code << blocks.map{|bl| apply(bl)}.join("\n")
  code << "\n"
end

#on_missing(sexpr) ⇒ Object



25
26
27
28
29
30
# File 'lib/gisele/vm/bytecode/printer.rb', line 25

def on_missing(sexpr)
  iname, *args = sexpr
  label = "#{iname} "
  label << args.map{|arg| arg.inspect}.join(', ')
  label.strip
end