所有Ruby解释器都遵循相同的Ruby语法吗?

时间:2010-09-06 14:19:23

标签: ruby jruby rubinius yarv

所有Ruby解释器都遵循www.ruby-lang.org中定义的相同Ruby语法吗?

  • MRI
  • YARV
  • Rubinius的
  • 的JRuby
  • IronRuby的

因为它是定义Ruby语言的解释器。这是否意味着一个口译员可以添加其他口译员没有的特征/合成糖?

如果是这种情况,那么所有口译人员都有自己的API文档吗?

因为我正在使用:http://ruby-doc.org/ruby-1.9/index.html

哪个口译员正在实施那个?

有人可以阐明这个话题。

谢谢!

2 个答案:

答案 0 :(得分:3)

  

所有Ruby解释器都遵循www.ruby-lang.org中定义的相同Ruby语法吗?

是的,它们都使用相同的语法。实际上,它们实际上都使用相同的解析器,或者至少是从同一源文件自动生成的解析器。

  

因为我正在使用:http://ruby-doc.org/ruby-1.9/index.html

     

哪个口译员正在实施那个?

目前,唯一可以完全实现Ruby 1.9的生产就绪的Ruby执行引擎是YARV。

JRuby本身是生产就绪的,它实现了Ruby 1.8.7和Ruby 1.9.2,但Ruby 1.9.2实现还没有完成。 IronRuby和Rubinius也在研究Ruby 1.9.2的实现。 MacRuby有一个相当完整的Ruby 1.9实现,但它仍然远非1.0版本。 MRI没有实现Ruby 1.9,可能永远不会实现。

但我不明白为什么你如此关注语法。语法差异是微不足道的:如果 语法不同,引擎就会拒绝解析你的文件,你会立即知道有什么不对劲。另一方面,语义的差异更加危险。

答案 1 :(得分:0)

你指的是哪种“语法糖”?

请记住,ruby只有很少的关键字。很多看起来像关键字的东西实际上是由内核实现的(例如requireputsraise)。

http://apidock.com/ruby/Kernel