9

Ripperは、Ruby1.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自体でさえドキュメントを見つけるのに苦労しています)

4

1 に答える 1

6

ソーサラー」を参照してください。これはうまく機能しますが、メソッドを解析するときにバグを見つけました。src.emit("; ")ファイル「lib/sorcerer / resource.rb」の301行目の下に追加すると、これは修正されます。しかし、これを使用することにした場合は、さらに多くのことが見つかる可能性があります。幸運を。

于 2011-02-02T21:49:31.420 に答える