0

YARVInstructionSequence/SimpleDataFormatproc は、次のように Ruby 仮想マシン シーケンスに変換できます。

RubyVM::InstructionSequence.of(->x{x + 1}).to_a
# => ["YARVInstructionSequence/SimpleDataFormat", 2, 0, 1,
  {:arg_size=>1, :local_size=>2, :stack_max=>2},
  "block in irb_binding", "(irb)", nil, 2,
  :block, [:x], [1, [], 0, 0, -1, -1, 3],
  [
    [:redo, nil, :label_0, :label_9, :label_0, 0],
    [:next, nil, :label_0, :label_9, :label_9, 0]
  ],
  [
    :label_0, 2, [:trace, 256], [:trace, 1], [:getlocal_OP__WC__0, 2],
    [:putobject_OP_INT2FIX_O_1_C_],
    [:opt_plus, {:mid=>:+, :flag=>256, :orig_argc=>1, :blockptr=>nil}], :label_9,
    [:trace, 512], [:leave]
  ]
]

この形式を変換して元の式を文字列のようなもの"->x{x+1}"またはそれに近いものに再構築する方法はありますか?

形式はRDocで次のように説明されています。

doc1 doc2 doc3 doc4

4

0 に答える 0