Все ли интерпретаторы Ruby используют один и тот же синтаксис Ruby? - PullRequest
0 голосов
/ 06 сентября 2010

Все ли интерпретаторы Ruby следуют одному и тому же синтаксису Ruby, определенному в www.ruby-lang.org?

  • МРТ
  • YARV
  • Rubinius
  • JRuby
  • IronRuby

Потому что именно интерпретатор определяет язык Ruby. Означает ли это, что один переводчик может добавить функцию / синтетический сахар, которого нет у других переводчиков?

Если это так, все ли переводчики имеют собственную документацию API?

Потому что я использую: http://ruby -doc.org / ruby-1.9 / index.html .

Какие переводчики реализуют это?

Может ли кто-нибудь пролить свет на эту тему.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 06 сентября 2010

Все ли интерпретаторы Ruby следуют одному и тому же синтаксису Ruby, определенному на www.ruby-lang.org?

Да, все они используют один и тот же синтаксис.Фактически, они все используют один и тот же парсер или, по крайней мере, парсер, который был автоматически сгенерирован из одного и того же исходного файла.

Причина Я использую: http://ruby -doc.org / ruby-1.9 / index.html .

Какие интерпретаторы реализуют этот?

На данный момент единственный готовый к работе обработчик Ruby, реализующий Ruby1.9 полностью является 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 и, вероятно, никогда не будет.

Но я не понимаю, почему вы так обеспокоены синтаксисом.Различия в синтаксисе тривиальны, чтобы обнаружить: если бы было разницей в синтаксисе, движок просто отказался бы анализировать ваш файл, и вы бы сразу узнали, что что-то не так.Различия в семантике , с другой стороны, намного опаснее.

0 голосов
/ 13 сентября 2010

Какой бит "синтаксического сахара" вы имеете в виду?

Имейте в виду, что у ruby ​​очень маленький набор ключевых слов. Многие вещи, которые на первый взгляд кажутся ключевыми словами, фактически реализованы в Kernel (например, require, puts и raise).

http://apidock.com/ruby/Kernel

...