Edited at

RubyVM::AbstractSyntaxTree::Node 詳細

この記事は 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