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 本身的文档)