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 в рубиновый код?Совместим ли Ruby2Ruby с ParseTree?
Я начал писать код, который бы сделал этот перевод, но я хочу знать, существует ли это уже. Еще одна проблема заключается в том, что Ruby2Ruby ставит много ненужных круглых скобок в арифметических операциях (например, 4+3-2+-2**4
- (((4 + 3) - 2) + -(2 ** 4))
, оба работают одинаково). Есть ли способ удалить их?
Разработка минимального набора символов, необходимых для однозначного представления кода, сложна. – delnan
Возможно, вам больше не нужно использовать Sexps. Вы просто пытаетесь добраться до исходного кода? –