Ripper là thư viện phân tích cú pháp đi kèm với Ruby 1.9. Nó biến đổi mã Ruby vào một AST, như vậy:Tôi sẽ biên dịch lại mã của Ripper như thế nào về mã 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]]]]
Có một thư viện để lấy AST này và biến nó trở thành mã Ruby?
ruby_parser and ruby2ruby được sử dụng để thực hiện việc này, nhưng tôi muốn sử dụng Ripper làm trình phân tích cú pháp của mình. (Ruby 1.9 thậm chí có thể gửi cùng với một thư viện như vậy, nhưng tôi đang cố gắng tìm tài liệu ngay cả trên chính Ripper)
Tôi đã chơi xung quanh với https://github.com/svenfuchs/ripper2ruby cho http://www.artweb-design.de/2009/7/5/ripper2ruby-modify-and-recompile-your-ruby-code , nhưng nó đã chết với NoMethodError: phương thức undefined 'to_ruby 'cho # . Không chắc chắn đi đâu từ đó. –
Tôi thấy rằng tại một số điểm, nhưng nó chỉ có vẻ không đáng tin cậy. Cảm ơn bạn đã cung cấp trải nghiệm với nó. –