of(proc) -> RubyVM::AbstractSyntaxTree::Node
[permalink][rdoc][edit]of(proc, keep_script_lines: false, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
-
引数 proc に渡したProcやメソッドオブジェクトの抽象構文木を返します。
このメソッドはProcやメソッドが定義されたファイルを読み込む必要があるため、 irbのようなファイルを介さない対話的環境では動作しません。
- [PARAM] proc:
- Procもしくはメソッドオブジェクトを指定します。
- [PARAM] keep_script_lines:
- true を指定すると、 Node#script_lines でノードと関連づけられたソースコードのテキストを取得できます。
- [PARAM] keep_tokens:
- true を指定すると、 Node#token が利用できます。
- [PARAM] error_tolerant:
- true を指定すると、構文エラーが発生した際にエラー箇所を type が :ERROR であるようなノードに置き換えてツリーを生成します。
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)))