Slide 165
Slide 165 text
パターンマクロ
特定の Ruby の構文に対して AST を置き換えるマクロ
value = [1, 2, 3]
を value = [1, 2, 3].freeze
に置き換えるマクロを書く
1 value = [1, 2, 3]
2 # AST => [:DASGN_CURR, [:value, [:LIST, [[:LIT, [1]], [:LIT, [2]], [:LIT, [3]], nil]]]]
を
1 value = [1, 2, 3].freeze
2 # AST => [:DASGN_CURR,
3 # [:value,
4 # [:CALL,
5 # [[:LIST, [[:LIT, [1]], [:LIT, [2]], [:LIT, [3]], nil]], :freeze, nil]]]]
のよう [:CALL, [..., :freeze]]
を付加させる
` ` ` `
` `
70 / 89