require 'ruby2ruby'
require 'parsetree'
code = "puts(var)"
sexp = SexpProcessor.new.process(ParseTree.translate(code))
# => s(:fcall, :puts, s(:array, s(:vcall, :var)))
code = Ruby2Ruby.new.process(sexp)
# => UnknownNodeError: Bug! Unknown node-type :fcall to Ruby2Ruby
有沒有辦法將Sexps從ParseTree轉換回ruby代碼?Ruby2Ruby與ParseTree兼容嗎?
我開始寫一些代碼來做這個翻譯,但是我想知道它是否已經存在。另一個問題是Ruby2Ruby在算術運算中放置了很多不需要的括號(如4+3-2+-2**4
到(((4 + 3) - 2) + -(2 ** 4))
,兩者都是等價的)。有什麼方法可以刪除它們嗎?
確定代碼的明確表示所需的最小的一組parens是很難的。 – delnan 2011-01-26 19:40:35
也許你根本不需要使用Sexps。你只是試圖獲得運行代碼的來源? – 2011-01-26 23:25:07