gpt4 book ai didi

ruby - Ruby2Ruby 与 ParseTree 兼容吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:54:29 26 4
gpt4 key购买 nike

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

有什么方法可以将 Sexp 从 ParseTree 转换回 ruby​​ 代码吗?

我开始编写一些代码来进行这种翻译,但我想知道它是否已经存在。另一个问题是 Ruby2Ruby 在算术运算中放置了很多不需要的括号(比如 4+3-2+-2**4(((4 + 3) - 2) + - (2 ** 4)),两者等效)。有什么方法可以去除它们吗?

最佳答案

我不确定这是否适合你,因为你似乎想从字符串中解析出 ruby​​ 代码,但如果你真的想要运行代码的源代码,你可以这样做:

$ irb
?> require 'rubygems'
=> true
?> require 'parse_tree'
=> true
?> require 'parse_tree_extensions'
=> true
?> require 'ruby2ruby'
=> true
?> def calc; 4+3-2+-2**4; end
=> nil
?> puts method(:calc).to_ruby
def calc
(((4 + 3) - 2) + -(2 ** 4))
end

虽然这确实增加了您不想要的间距。

关于ruby - Ruby2Ruby 与 ParseTree 兼容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4809073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com