Slide 165
Slide 165 text
Pattern Macro
Macros to replace AST for a specific Ruby syntax
Write a Macro to replace value = [1, 2, 3]
with value = [1, 2, 3].freeze
1 value = [1, 2, 3]
2 # AST => [:DASGN_CURR, [:value, [:LIST, [[:LIT, [1]], [:LIT, [2]], [:LIT, [3]], nil]]]]
For
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]]]]
to add [:CALL, [... , :freeze]]
to be added
` ` ` `
` `
70 / 89