6
Ripper是Ruby 1.9附帶的解析庫。它把Ruby代碼爲AST,就像這樣:我會如何將Ripper的AST重新編譯回Ruby代碼?
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 and ruby2ruby用於做到這一點,但我想使用Ripper作爲我的分析器。 (Ruby 1.9甚至可能帶有這樣的庫,但我仍然努力尋找文檔,即使在開膛手本身)
我玩過https://github.com/svenfuchs/ripper2ruby http://www.artweb-design.de/2009/7/5/ripper2ruby-modify-and-recompile-your-ruby-code ,但它在NoMethodError:未定義的方法`to_ruby'中爲#而死。不知道該從哪裏出發。 – 2011-02-02 20:35:28
我發現在某些時候,但它似乎並不可靠。感謝您提供您的體驗。 – 2011-02-02 20:55:11