リッパーは、Ruby 1.9に付属する解析ライブラリです。このASTを取ると、Rubyのコードに戻ってそれを変換するためのライブラリがありますリッパーの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これを使用していましたが、リッパーをパーサーとして使用したいと思います。 (Ruby 1.9はそのようなライブラリと共に出荷されることもありますが、私はRipper自体でもドキュメントを見つけるのに苦労しています)
http://www.artweb-design.de/2009/7/5/ripper2ruby-modify-and-recompile-your-ruby-codeでhttps://github.com/svenfuchs/ripper2rubyで遊んでいましたNoMethodError:#の未定義メソッド 'to_ruby 'で亡くなりました。そこからどこへ行くかわからない。 –
私はある時点でそれを見つけましたが、信頼できるとは思われませんでした。あなたの経験を提供してくれてありがとう。 –