रिपर एक पार्सिंग लाइब्रेरी है जो रुबी 1.9 के साथ जहाजों है। यह एक एएसटी में रूबी कोड बदल देती है, इसलिए जैसे:मैं रिपर के एएसटी को रूबी कोड पर वापस कैसे पुन: संकलित करूं?
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]]]]
इस एएसटी लेने के लिए और इसे वापस बदलने रूबी कोड में करने के लिए एक पुस्तकालय है?
ruby_parser and ruby2ruby ऐसा करने के लिए उपयोग किया जाता था, लेकिन मैं रिपर का उपयोग अपने पार्सर के रूप में करना चाहता हूं। (रूबी 1.9 भी ऐसी लाइब्रेरी के साथ जहाज भेज सकता है, लेकिन मैं खुद ही रिपर पर दस्तावेज ढूंढने के लिए संघर्ष कर रहा हूं)
मैंने https://github.com/svenfuchs/ripper2ruby के साथ खेला http://www.artweb-design.de/2009/7/5/ripper2ruby-modify-and-recompile-your-ruby-code , लेकिन यह NoMethodError के साथ मृत्यु हो गई: # <रूबी :: नोड :: समग्र :: ऐरे: 0x9aa7540> के लिए अपरिभाषित विधि 'to_ruby '। यकीन नहीं है कि वहां से कहाँ जाना है। –
मैंने पाया कि कुछ बिंदु पर, लेकिन यह विश्वसनीय नहीं लग रहा था। इसके साथ अपने अनुभव की पेशकश के लिए धन्यवाद। –