singleton method RubyVM::AbstractSyntaxTree.of

of(proc) -> RubyVM::AbstractSyntaxTree::Node[permalink][rdoc][edit]

引数 proc に渡したProcやメソッドオブジェクトの抽象構文木を返します。

このメソッドはProcやメソッドが定義されたファイルを読み込む必要があるため、 irbのようなファイルを介さない対話的環境では動作しません。

[PARAM] proc:
Procもしくはメソッドオブジェクトを指定します。

pp RubyVM::AbstractSyntaxTree.of(proc {1 + 2})
# => (SCOPE@2:38-2:45
#     tbl: []
#     args: nil
#     body:
#       (OPCALL@2:39-2:44 (LIT@2:39-2:40 1) :+
#          (LIST@2:43-2:44 (LIT@2:43-2:44 2) nil)))

def hello
  puts "hello, world"
end

pp RubyVM::AbstractSyntaxTree.of(method(:hello))
# => (SCOPE@5:0-7:3
#     tbl: []
#     args:
#       (ARGS@5:9-5:9
#        pre_num: 0
#        pre_init: nil
#        opt: nil
#        first_post: nil
#        post_num: 0
#        post_init: nil
#        rest: nil
#        kw: nil
#        kwrest: nil
#        block: nil)
#     body:
#       (FCALL@6:2-6:21 :puts (LIST@6:7-6:21 (STR@6:7-6:21 "hello, world") nil)))