Slide 35
Slide 35 text
Semantic Analysis
ripper (ruby parser) + access control lists
code = 'eval("evil")'
pp Ripper.sexp code
[:program,
[[:method_add_arg,
[:fcall, [:@ident, "eval", [1, 0]]],
[:arg_paren,
[:args_add_block,
[[:string_literal,
[:string_content, [:@tstring_content, "evil", [1, 6]]]]],
false]]]]]