根据this,parsetree在ruby 1.9中不起作用。我没有计算机科学背景,但已经编程了几年。有人可以解释为什么parsetree不能在ruby 1.9中工作。
答案 0 :(得分:3)
构造ruby 1.8解释器然后遍历抽象语法树,而ruby 1.9解释器基于字节码。因此,在运行时没有AST可供parsetree使用。
答案 1 :(得分:3)
ngty发布了一个名为sourcify的gem,它在Ruby 1.9中提供了很多ParseTree的功能。
由于他不能使用AST,他写了一个大多数时候都能运行的性别解析器。有时你必须给它一些帮助,例如通过告诉代码附加到哪个Proc:
## The old ParseTree way
# proc.to_ruby
## The sourcify way - but may raise NoMatchingProcError or MultipleMatchingProcsPerLineError
# proc.to_source
## The sourcify way - giving :attached_to a symbol to help it find the correct Proc
proc.to_source :attached_to => :name_of_proc
以下是how we replaced ParseTree when we migrated to Ruby 1.9的更长解释。
答案 2 :(得分:2)
ParseTree似乎已经死了,因为Ruby 1.9内部发生了一些变化,根据这个链接: http://blog.zenspider.com/2009/04/parsetree-eol.html
尽管如此,可能有些人会为其中的一部分提出一些解决方法。