运行 文件中的 s 表达式
Running s-expressions from File
我在文件中有一个 sexp,我想读入然后 运行 它在 ruby 中。每当我尝试 运行 它时,它都会告诉我 SexpTypeError,
exp must be a Sexp, was String:
有没有办法从文件中 运行 Sexp
?
我正在使用 ruby2ruby gem
和 ruby_parser
gem。
我试过 Windows 10,ruby 2.6。我在阅读后尝试解析它,但它复制了我在文件中的 s 表达式,但它不起作用。
ruby = "def a\n puts 'A'\nend\n\ndef b\n a\nend\na"
parser = RubyParser.new
ruby2ruby = Ruby2Ruby.new
sexp = parser.process(ruby)
from_file =nil
File.open('jkl', 'wb')do |file|
file.write(sexp)
end
File.open('jkl', 'rb') do |fp|
from_file = fp.read()
end
eval ruby2ruby.process(from_file)
我希望代码 运行 给出输出 "A"
你必须将字符串转换成 sexp 回来。例如instance_eval
可以。
require 'ruby_parser'
require 'ruby2ruby'
ruby = "def a\n puts 'A'\nend\n\ndef b\n a\nend\na"
parser = RubyParser.new
ruby2ruby = Ruby2Ruby.new
sexp = parser.process(ruby)
File.open('jkl', 'wb') { |file| file.write(sexp) }
from_file = File.open('jkl', 'rb', &:read)
# ⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓
eval ruby2ruby.process(instance_eval(from_file))
b()
#⇒ A
我在文件中有一个 sexp,我想读入然后 运行 它在 ruby 中。每当我尝试 运行 它时,它都会告诉我 SexpTypeError,
exp must be a Sexp, was String:
有没有办法从文件中 运行 Sexp
?
我正在使用 ruby2ruby gem
和 ruby_parser
gem。
我试过 Windows 10,ruby 2.6。我在阅读后尝试解析它,但它复制了我在文件中的 s 表达式,但它不起作用。
ruby = "def a\n puts 'A'\nend\n\ndef b\n a\nend\na"
parser = RubyParser.new
ruby2ruby = Ruby2Ruby.new
sexp = parser.process(ruby)
from_file =nil
File.open('jkl', 'wb')do |file|
file.write(sexp)
end
File.open('jkl', 'rb') do |fp|
from_file = fp.read()
end
eval ruby2ruby.process(from_file)
我希望代码 运行 给出输出 "A"
你必须将字符串转换成 sexp 回来。例如instance_eval
可以。
require 'ruby_parser'
require 'ruby2ruby'
ruby = "def a\n puts 'A'\nend\n\ndef b\n a\nend\na"
parser = RubyParser.new
ruby2ruby = Ruby2Ruby.new
sexp = parser.process(ruby)
File.open('jkl', 'wb') { |file| file.write(sexp) }
from_file = File.open('jkl', 'rb', &:read)
# ⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓
eval ruby2ruby.process(instance_eval(from_file))
b()
#⇒ A