16
11

More than 5 years have passed since last update.

RubyVM::AbstractSyntaxTree::Node 詳細

Last updated at Posted at 2018-12-23

この記事は Okinawa.rb Advent Calendar 2018 の24日目の記事です。

RubyVM::AbstractSyntaxTree について

Ruby 2.6 では RubyVM::AbstractSyntaxTree が導入され Ruby のソースコードを Ruby のデータ構造として扱えるようになります。解析した結果では様々な RubyVM::AbstractSyntaxTree::Node オブジェクトが作成され、下記の値を取得することが出来ます。

method 説明 Class
type ノードの種別 Symbol
children ノードが持つ子ノードの一覧 Array
first_column ノードの開始位置のカラム番号 Integer
first_lineno ノードの開始位置の行番号 Integer
last_column ノードの終了位置のカラム番号 Integer
last_lineno ノードの終了位置の行番号 Integer

children は Node の種類によって各要素で取得出来る値が異なるのでそれを調べてみました。

ノードの種類については node.cnode.h を参考に調べています。

https://github.com/ruby/ruby/blob/ruby_2_6/node.c
https://github.com/ruby/ruby/blob/ruby_2_6/node.h

まだ調査中のものもありますがご了承ください。

SCOPE

新しいスコープが生成されるたびに定義される。

index 説明 Class
0 変数の情報 Array
1 引数の一覧 Array
2 本体 RubyVM::AbstractSyntaxTree::Node

BLOCK

連続した式や文を表す。 children の各要素にはそれぞれ式や文の情報が入っている。

index 説明 Class
n 式や文の情報 RubyVM::AbstractSyntaxTree::Node

IF

if 式を表す。

index 説明 Class
0 if の条件式 RubyVM::AbstractSyntaxTree::Node
1 条件式が真の場合の本体 RubyVM::AbstractSyntaxTree::Node
2 条件式が偽の場合の本体 RubyVM::AbstractSyntaxTree::Node or NilClass
if x == 1
  foo
else
  bar
end
(IF@1:0-5:3
   (OPCALL@1:3-1:9 (VCALL@1:3-1:4 :x) :== (ARRAY@1:8-1:9 (LIT@1:8-1:9 1) nil))
   (VCALL@2:2-2:5 :foo) (VCALL@4:2-4:5 :bar))

UNLESS

unless 式を表す。

index 説明 Class
0 unless の条件式 RubyVM::AbstractSyntaxTree::Node
1 偽の場合の式 RubyVM::AbstractSyntaxTree::Node
2 真の場合の式 RubyVM::AbstractSyntaxTree::Node or NilClass
unless x == 1
  foo
else
  bar
end
(UNLESS@1:0-5:3
   (OPCALL@1:7-1:13 (VCALL@1:7-1:8 :x) :==
      (ARRAY@1:12-1:13 (LIT@1:12-1:13 1) nil)) (VCALL@2:2-2:5 :foo)
   (VCALL@4:2-4:5 :bar))

CASE

case 式

index 説明 Class
0 条件式 RubyVM::AbstractSyntaxTree::Node
1 次の when 句 RubyVM::AbstractSyntaxTree::Node
case x
when 1
  foo
else
  baz
end
(CASE@1:0-6:3 (VCALL@1:5-1:6 :x)
   (WHEN@2:0-5:5 (ARRAY@2:5-2:6 (LIT@2:5-2:6 1) nil) (VCALL@3:2-3:5 :foo)
      (VCALL@5:2-5:5 :baz)))

CASE2

case 式の条件が無い場合

index 説明 Class
0 条件式 NilClass
1 次の when 句 RubyVM::AbstractSyntaxTree::Node
case
when 1
  foo
else
  baz
end
(CASE2@1:0-6:3 nil
   (WHEN@2:0-5:5 (ARRAY@2:5-2:6 (LIT@2:5-2:6 1) nil) (VCALL@3:2-3:5 :foo)
      (VCALL@5:2-5:5 :baz)))

WHEN

index 説明 Class 備考
0 when 句 にある式のリスト RubyVM::AbstractSyntaxTree::Node
1 本文 RubyVM::AbstractSyntaxTree::Node
2 次の when 句 RubyVM::AbstractSyntaxTree::Node or NilClass 次の句が存在しない場合は nil

WHILE

while 文を表す

index 説明 Class
0 条件式 RubyVM::AbstractSyntaxTree::Node
1 while の中身 RubyVM::AbstractSyntaxTree::Node
while x == 1
  foo
end
(WHILE@1:0-3:3
   (OPCALL@1:6-1:12 (VCALL@1:6-1:7 :x) :==
      (ARRAY@1:11-1:12 (LIT@1:11-1:12 1) nil)) (VCALL@2:2-2:5 :foo))

UNTIL

until 文を表す

index 説明 Class
0 条件式 RubyVM::AbstractSyntaxTree::Node
1 until の中身 RubyVM::AbstractSyntaxTree::Node
until x == 1
  foo
end
(UNTIL@1:0-3:3
   (OPCALL@1:6-1:12 (VCALL@1:6-1:7 :x) :==
      (ARRAY@1:11-1:12 (LIT@1:11-1:12 1) nil)) (VCALL@2:2-2:5 :foo))

ITER

ブロック付きのメソッド呼び出し

index 説明 Class
0 呼び出しているメソッドの情報 RubyVM::AbstractSyntaxTree::Node
1 ブロック本体 RubyVM::AbstractSyntaxTree::Node

FOR

for 文を表す。

index 説明 Class
0 繰り返し処理の対象になる部分 RubyVM::AbstractSyntaxTree::Node
1 for 文の本文 RubyVM::AbstractSyntaxTree::Node

FOR_MASGN

TBD

BREAK

break を表す

index 説明 Class
0 ループの戻り値 RubyVM::AbstractSyntaxTree::Node or NilClass 何も指定しない場合は nil
break
(BREAK@1:0-1:5 nil)

NEXT

next を表す

index 説明 Class
0 ループの戻り値 RubyVM::AbstractSyntaxTree::Node or NilClass 何も指定しない場合は nil
next
(NEXT@1:0-1:4 nil)

REDO

特になし

redo
(REDO@1:0-1:4)

RETRY

特になし

retry
(RETRY@1:0-1:5)

BEGIN

index 説明 Class 備考
0 本体 RubyVM::AbstractSyntaxTree::Node or NilClass 本体が無い場合は nil

RESCUE

rescue 句

index 説明 Class
0 begin句の中身 RubyVM::AbstractSyntaxTree::Node
1 resuce句の中身 RubyVM::AbstractSyntaxTree::Node
2 else句の中身 RubyVM::AbstractSyntaxTree::Node or NilClass

RESBODY

resuce 句の中身

index 説明 Class
0 指定されている例外の一覧 RubyVM::AbstractSyntaxTree::Node
1 resuce句の中身 RubyVM::AbstractSyntaxTree::Node
2 次の rescue 句 RubyVM::AbstractSyntaxTree::Node

ENSURE

index 説明 Class
0 ensure の 1つ前の句 RubyVM::AbstractSyntaxTree::Node
1 ensure の本文 RubyVM::AbstractSyntaxTree::Node

AND

&& または and

index 説明 Class
0 左辺 RubyVM::AbstractSyntaxTree::Node
1 右辺 RubyVM::AbstractSyntaxTree::Node
foo && bar
(AND@1:0-1:10 (VCALL@1:0-1:3 :foo) (VCALL@1:7-1:10 :bar))

OR

|| または or

index 説明 Class
0 左辺 RubyVM::AbstractSyntaxTree::Node
1 右辺 RubyVM::AbstractSyntaxTree::Node
foo || bar
(OR@1:0-1:10 (VCALL@1:0-1:3 :foo) (VCALL@1:7-1:10 :bar))

MASGN

複数の変数代入

index 説明 Class
0 右辺 RubyVM::AbstractSyntaxTree::Node or NilClass
1 左辺 RubyVM::AbstractSyntaxTree::Node or NilClass
2 splat RubyVM::AbstractSyntaxTree::Node

LASGN

変数への代入

index 説明 Class
0 変数名 Symbol
1 RubyVM::AbstractSyntaxTree::Node
x = 1
(LASGN@1:0-1:5 :x (LIT@1:4-1:5 1))

DASGN

動的な変数代入 (変数はスコープ外で定義されたもの)

index 説明 Class
0 変数名 Symbol
1 RubyVM::AbstractSyntaxTree::Node

DASGN_CURR

動的な変数代入 (ブロック内のスコープで定義された変数)

index 説明 Class
0 変数名 Symbol
1 RubyVM::AbstractSyntaxTree::Node

GASGN

グローバル変数への代入

index 説明 Class
0 変数名 Symbol
1 RubyVM::AbstractSyntaxTree::Node
$foo = 4
(GASGN@1:0-1:8 :$foo (LIT@1:7-1:8 4))

IASGN

インスタンス変数への代入

index 説明 Class 備考
0 変数名 Symbol
1 RubyVM::AbstractSyntaxTree::Node or NilClass 多重代入の場合は nil
@foo = 1
(IASGN@1:0-1:8 :@foo (LIT@1:7-1:8 1))

CDECL

定数の宣言

名前空間なし

index 説明 Class
0 変数名 Symbol
1 RubyVM::AbstractSyntaxTree::Node

名前空間あり

index 説明 Class
0 名前空間 RubyVM::AbstractSyntaxTree::Node
1 変数名 Symbol
2 RubyVM::AbstractSyntaxTree::Node
FOO = 1
(CDECL@1:0-1:7 :FOO (LIT@1:6-1:7 1))

CVASGN

クラス変数への代入

index 説明 Class
0 変数名 Symbol
1 RubyVM::AbstractSyntaxTree::Node
@@foo = 2
(CVASGN@1:0-1:9 :@@foo (LIT@1:8-1:9 2))

OP_ASGN1

配列の要素への代入操作

index 説明 Class
0 レシーバー RubyVM::AbstractSyntaxTree::Node
1 オペランド Symbol
2 添字 RubyVM::AbstractSyntaxTree::Node
3 RubyVM::AbstractSyntaxTree::Node

OP_ASGN2

フィールドに対する操作

index 説明 Class
0 レシーバー RubyVM::AbstractSyntaxTree::Node
1 TBD TBD
2 フィールド名 Symbol
3 RubyVM::AbstractSyntaxTree::Node

OP_ASGN_AND

&&=

index 説明 Class
0 変数 RubyVM::AbstractSyntaxTree::Node
1 演算子名 Symbol (&& で固定)
2 RubyVM::AbstractSyntaxTree::Node
foo &&= bar
(OP_ASGN_AND@1:0-1:11 (LVAR@1:0-1:3 :foo) :"&&"
   (LASGN@1:0-1:11 :foo (VCALL@1:8-1:11 :bar)))

OP_ASGN_OR

||=

index 説明 Class
0 変数 RubyVM::AbstractSyntaxTree::Node
1 演算子名 Symbol
2 RubyVM::AbstractSyntaxTree::Node
foo ||= bar
(OP_ASGN_OR@1:0-1:11 (LVAR@1:0-1:3 :foo) :"||"
   (LASGN@1:0-1:11 :foo (VCALL@1:8-1:11 :bar)))

OP_CDECL

演算子付きの定数宣言

index 説明 Class
0 変数 RubyVM::AbstractSyntaxTree::Node
1 演算子名 Symbol
2 RubyVM::AbstractSyntaxTree::Node

名前空間なしかつ &&=||= で定義した場合は OP_ASGN_ANDOP_ASGN_OR で解釈される。

A::B ||= 1
(OP_CDECL@1:0-1:10 (COLON2@1:0-1:4 (CONST@1:0-1:1 :A) :B) :"||"
   (LIT@1:9-1:10 1))

CALL

メソッドの呼び出し

index 説明 Class 備考
0 レシーバー RubyVM::AbstractSyntaxTree::Node
1 メソッド名 Symbol
2 引数 RubyVM::AbstractSyntaxTree::Node or NilClass 引数の有無で変化
obj.foo(1)
(CALL@1:0-1:10 (VCALL@1:0-1:3 :obj) :foo (ARRAY@1:8-1:9 (LIT@1:8-1:9 1) nil))

OPCALL

メソッドの呼び出し

index 説明 Class
0 レシーバー RubyVM::AbstractSyntaxTree::Node
1 メソッド名 Symbol
2 引数 RubyVM::AbstractSyntaxTree::Node
foo + bar
(OPCALL@1:0-1:9 (VCALL@1:0-1:3 :foo) :+
   (ARRAY@1:6-1:9 (VCALL@1:6-1:9 :bar) nil))

FCALL

関数呼び出し

index 説明 Class 備考
0 メソッド名 Symbol
1 引数 RubyVM::AbstractSyntaxTree::Node or NilClass 引数の有無で変化
foo(1)
(FCALL@1:0-1:6 :foo (ARRAY@1:4-1:5 (LIT@1:4-1:5 1) nil))

VCALL

引数なしの関数呼び出し。ただし、 foo() みたいな () がついている場合は FCALL として解釈される。

index 説明 Class
0 メソッド名 Symbol
foo
(VCALL@1:0-1:3 :foo)

QCALL

ぼっち演算子 (&.) での呼び出し (Safe Navigation Operator)

index 説明 Class
0 レシーバー RubyVM::AbstractSyntaxTree::Node
1 メソッド名 Symbol
2 引数 RubyVM::AbstractSyntaxTree::Node
obj&.foo(1)
(QCALL@1:0-1:11 (VCALL@1:0-1:3 :obj) :foo
   (ARRAY@1:9-1:10 (LIT@1:9-1:10 1) nil))

SUPER

super の呼び出し

index 説明 Class 備考
0 引数 RubyVM::AbstractSyntaxTree::Node or NilClass super() で呼び出した場合は nil
super(1)
(SUPER@1:0-1:8 (ARRAY@1:6-1:7 (LIT@1:6-1:7 1) nil))

ZSUPER

引数なしの super 呼び出し

特になし

super
(ZSUPER@1:0-1:5)

ARRAY

配列

index 説明 Class
0 配列の要素 Array

最後の要素は nil なので、すべての要素は [0..-2] の範囲にある

ZARRAY

空配列

特になし

[]
(ZARRAY@1:0-1:2)

VALUES

return の引数

index 説明 Class
0 返り値のリスト Array or NilClass

最後の要素は nil なので、すべての要素は [0..-2] の範囲にある

return 1, 2, 3
(RETURN@1:0-1:14
   (VALUES@1:7-1:14 (LIT@1:7-1:8 1) (LIT@1:10-1:11 2) (LIT@1:13-1:14 3) nil))

HASH

Hash

index 説明 Class
0 Hash の要素のリスト RubyVM::AbstractSyntaxTree::Node or NilClass

要素は [key, value, key, value, ...] という形で入っている。空の場合は nil になる。

RETURN

return

特になし

YIELD

yield の呼び出し

index 説明 Class 備考
0 引数 RubyVM::AbstractSyntaxTree::Node or NilClass 引数がない場合は nil
yield 1
(YIELD@1:0-1:7 (ARRAY@1:6-1:7 (LIT@1:6-1:7 1) nil))

LVAR

ローカル変数の参照

index 説明 Class
0 変数名 Symbol
x = 1
x
(BLOCK@1:0-2:1 (LASGN@1:0-1:5 :x (LIT@1:4-1:5 1)) (LVAR@2:0-2:1 :x))

DVAR

ブロック内で定義された変数の参照。

index 説明 Class
0 変数名 Symbol

GVAR

グローバル変数を表す。

index 説明 Class
0 変数名 Symbol
$x
(GVAR@1:0-1:2 :$x)

IVAR

インスタンス変数を表す。

index 説明 Class
0 変数名 Symbol
@x
(IVAR@1:0-1:2 :@x)

CONST

定数の参照

index 説明 Class
0 定数名 Symbol
X
(CONST@1:0-1:1 :X)

CVAR

クラス変数を表す

index 説明 Class
0 変数名 Symbol
@@x
(CVAR@1:0-1:3 :@@x)

NTH_REF

正規表現でマッチした値を取り出す特殊変数 ($1, $2, ...

index 説明 Class
0 変数名 Symbol
$1
(NTH_REF@1:0-1:2 :$1)

BACK_REF

正規表現でマッチした値を取り出す特殊変数 ($&, $+, ...

index 説明 Class
0 変数名 Symbol

MATCH

正規表現 (リテラルのみ)

index 説明 Class
0 正規表現 RubyVM::AbstractSyntaxTree::Node

MATCH2

正規表現 (正規表現が左辺に存在する場合)

index 説明 Class
0 正規表現 RubyVM::AbstractSyntaxTree::Node
1 文字列 RubyVM::AbstractSyntaxTree::Node
/foo/ =~ 'foo'
(MATCH2@1:0-1:14 (LIT@1:0-1:5 /foo/) (STR@1:9-1:14 "foo"))

MATCH3

正規表現 (正規表現が右辺に存在する場合)

index 説明 Class
0 正規表現 RubyVM::AbstractSyntaxTree::Node
1 文字列 RubyVM::AbstractSyntaxTree::Node
'foo' =~ /foo/
(MATCH3@1:0-1:14 (LIT@1:9-1:14 /foo/) (STR@1:0-1:5 "foo"))

LIT

リテラル

index 説明 Class
0 RubyVM::AbstractSyntaxTree::Node

STR

文字列

index 説明 Class
0 String

DSTR

内部展開のある文字列

index 説明 Class 備考
0 内部展開式の前の文字列 String 前の要素が無い場合は空文字列
1 内部展開の式 RubyVM::AbstractSyntaxTree::Node
2 内部展開式の後ろの要素のリスト RubyVM::AbstractSyntaxTree::Node[ARRAY] or NilClass 後ろの要素が無い場合は nil

XSTR

外部コマンド実行 (バッククォート形式)

index 説明 Class
0 RubyVM::AbstractSyntaxTree::Node

DXSTR

内部展開のある外部コマンド実行リテラル

index 説明 Class 備考
0 内部展開式の前の文字列 String or NilClass 前の要素が無い場合は nil
1 内部展開の式 RubyVM::AbstractSyntaxTree::Node
2 内部展開式の後ろの要素のリスト RubyVM::AbstractSyntaxTree::Node[ARRAY] or NilClass 後ろの要素が無い場合は nil

EVSTR

内部展開式

index 説明 Class
0 本体 RubyVM::AbstractSyntaxTree::Node

DREGX

内部展開のある正規表現リテラル。

index 説明 Class 備考
0 内部展開式の前の文字列 String 前の要素が無い場合は空文字列
1 内部展開の式 RubyVM::AbstractSyntaxTree::Node
2 内部展開式の後ろの要素のリスト RubyVM::AbstractSyntaxTree::Node[ARRAY] or NilClass 後ろの要素が無い場合は nil

ONCE

正規表現 ( o オプション付き

/foo#{bar}baz/o
(ONCE@1:0-1:15
   (DREGX@1:0-1:15 "foo" (EVSTR@1:4-1:10 (VCALL@1:6-1:9 :bar))
      (ARRAY@1:10-1:13 (STR@1:10-1:13 "baz") nil)))

ARGS

引数の一覧 (TBD)

index 説明 Class
0 引数の個数 Integer
2 オプション引数 RubyVM::AbstractSyntaxTree::Node
6 可変長引数 Symbol
7 キーワード引数 RubyVM::AbstractSyntaxTree::Node
8 可変長キーワード引数 RubyVM::AbstractSyntaxTree::Node
9 block 引数の名前 Symbol

OPT_ARG

オプション引数

index 説明 Class
0 オプション引数の本体 RubyVM::AbstractSyntaxTree::Node
1 次のオプション引数 RubyVM::AbstractSyntaxTree::Node or NilClass

KW_ARG

キーワード引数

index 説明 Class
0 キーワード引数の本体 RubyVM::AbstractSyntaxTree::Node
1 次のキーワード引数 RubyVM::AbstractSyntaxTree::Node or NilClass

POSTARG

可変長引数の後に引数を定義

index 説明 Class
0 可変長引数部分 RubyVM::AbstractSyntaxTree::Node
1 可変長引数以降の引数情報 RubyVM::AbstractSyntaxTree::Node

ARGSCAT

TBD

ARGSPUSH

splat 演算子を引数に使う + 1 つの変数

index 説明 Class
0 splat の対象になっているオブジェクト RubyVM::AbstractSyntaxTree::Node
1 残りの引数 RubyVM::AbstractSyntaxTree::Node

SPLAT

splat 演算子を引数に使う

index 説明 Class
0 splat の対象になっているオブジェクト RubyVM::AbstractSyntaxTree::Node

BLOCK_PASS

block 変数の引き渡し

index 説明 Class
0 block 変数以外の変数リスト RubyVM::AbstractSyntaxTree::Node or NilClass
1 block 変数本体 RubyVM::AbstractSyntaxTree::Node

DEFN

メソッドの定義

index 説明 Class
0 メソッド名 Symbol
1 メソッドの中身 RubyVM::AbstractSyntaxTree::Node

DEFS

シングルトンメソッドの定義

index 説明 Class
0 レシーバー RubyVM::AbstractSyntaxTree::Node
1 メソッド名 Symbol
2 メソッドの中身 RubyVM::AbstractSyntaxTree::Node

ALIAS

alias

index 説明 Class
0 新しい名前 RubyVM::AbstractSyntaxTree::Node
1 古い名前 RubyVM::AbstractSyntaxTree::Node
alias foo bar
(ALIAS@1:0-1:13 (LIT@1:6-1:9 :foo) (LIT@1:10-1:13 :bar))

VALIAS

グローバル変数に対する alias

index 説明 Class
0 新しい名前 Symbol
1 古い名前 Symbol
alias $MATCH $&
(VALIAS@1:0-1:15 :$MATCH :$&)

UNDEF

undef

index 説明 Class
0 指定されたメソッド名 RubyVM::AbstractSyntaxTree::Node
undef foo
(UNDEF@1:6-1:9 (LIT@1:6-1:9 :foo))

CLASS

クラスの定義

index 説明 Class 備考
0 クラスの名のパス RubyVM::AbstractSyntaxTree::Node
1 スーパークラス RubyVM::AbstractSyntaxTree::Node or NilClass クラスを継承していない場合は nil
2 クラスの中身 RubyVM::AbstractSyntaxTree::Node
class Foo
end
(CLASS@1:0-2:3 (COLON2@1:6-1:9 nil :Foo) nil
   (SCOPE@1:0-2:3 tbl: [] args: nil body: (BEGIN@1:9-1:9 nil)))

MODULE

モジュールの定義

index 説明 Class
0 モジュール名のパス RubyVM::AbstractSyntaxTree::Node
1 モジュールの本体 RubyVM::AbstractSyntaxTree::Node

SCLASS

シングルトンクラスの定義

index 説明 Class
0 モジュール名のパス RubyVM::AbstractSyntaxTree::Node
1 モジュールの本体 RubyVM::AbstractSyntaxTree::Node

COLON2

名前空間付きの定数定義

index 説明 Class 備考
0 定数パス RubyVM::AbstractSyntaxTree::Node or NilClass 定数パスが存在しない場合は nil
1 定数名 Symbol
FOO::BAR
(COLON2@1:0-1:8 (CONST@1:0-1:3 :FOO) :BAR)

COLON3

トップレベルの定数参照

index 説明 Class
0 定数名 Symbol
::FOO
(COLON3@1:0-1:5 :FOO)

DOT2

..

index 説明 Class
0 始端の要素 RubyVM::AbstractSyntaxTree::Node
1 終端の要素 RubyVM::AbstractSyntaxTree::Node
(1..5)
(DOT2@1:1-1:5 (LIT@1:1-1:2 1) (LIT@1:4-1:5 5))

DOT3

...

index 説明 Class
0 始端の要素 RubyVM::AbstractSyntaxTree::Node
1 終端の要素 RubyVM::AbstractSyntaxTree::Node
(1...5)
(DOT3@1:1-1:6 (LIT@1:1-1:2 1) (LIT@1:5-1:6 5))

FLIP2

フリップフロップを表す (..)

index 説明 Class
0 始端の条件 RubyVM::AbstractSyntaxTree::Node
1 終端の条件 RubyVM::AbstractSyntaxTree::Node

FLIP3

フリップフロップを表す (...)

index 説明 Class
0 始端の条件 RubyVM::AbstractSyntaxTree::Node
1 終端の条件 RubyVM::AbstractSyntaxTree::Node

SELF

self を表す

特になし

NIL

nil を表す

特になし

nil
(NIL@1:0-1:3)

TRUE

true を表す

特になし

FALSE

false を表す

特になし

ERRINFO

TBD

DEFINED

defined? を表す

index 説明 Class
0 定義の確認の対象となる式 RubyVM::AbstractSyntaxTree::Node

POSTEXE

Ruby のプログラムの終了時に実行する END ブロック。

index 説明 Class
0 処理の本体 RubyVM::AbstractSyntaxTree::Node

DSYM

内部展開のあるシンボル

index 説明 Class
0 内部展開の式 RubyVM::AbstractSyntaxTree::Node
1 内部展開式の後ろの文字列 RubyVM::AbstractSyntaxTree::Node

ATTRASGN

属性への代入

index 説明 Class
0 レシーバー RubyVM::AbstractSyntaxTree::Node
1 メソッド名 Symbol
2 代入する値 RubyVM::AbstractSyntaxTree::Node or NilClass

LAMBDA

ラムダ記法

index 説明 Class
0 ラムダの本体 RubyVM::AbstractSyntaxTree::Node
16
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
11