ParseTree不适用于ruby 1.9。为什么?

时间:2009-09-15 15:27:29

标签: ruby

根据this,parsetree在ruby 1.9中不起作用。我没有计算机科学背景,但已经编程了几年。有人可以解释为什么parsetree不能在ruby 1.9中工作。

3 个答案:

答案 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

尽管如此,可能有些人会为其中的一部分提出一些解决方法。