Ripper是随Ruby 1.9一起发布的解析库。它将Ruby代码转换为AST,如下所示:
pp Ripper.sexp("def foo; yield :a; return 1 end")
#=>
[:program,
[[:def,
[:@ident, "foo", [1, 4]],
[:params, nil, nil, nil, nil, nil],
[:bodystmt,
[[:yield,
[:args_add_block,
[[:symbol_literal, [:symbol, [:@ident, "a", [1, 16]]]]],
false]],
[:return, [:args_add_block, [[:@int, "1", [1, 26]]], false]]],
nil,
nil,
nil]]]]
有没有库可以将这个AST转换回Ruby代码?
ruby_parser和ruby2ruby曾经可以做到这一点,但我想使用Ripper作为我的解析器。(甚至可能Ruby 1.9会附带这样的库,但我甚至难以找到关于Ripper本身的文档)