Domanda

fare tutti gli interpreti di Ruby seguono la stessa sintassi di Ruby definito www.ruby-lang.org?

  • MRI
  • YARV
  • Rubinius
  • JRuby
  • IronRuby

Causa è l'interprete che definisce il linguaggio Ruby. Se tale un interprete media potrebbe aggiungere una funzionalità / zucchero syntatic che altri interpreti non hanno?

Se questo è il caso, fare tutti gli interpreti hanno la propria documentazione API?

Perché io sto usando: http://ruby-doc.org/ruby -1.9 / index.html .

Quali interpreti stanno attuando quello?

Qualcuno potrebbe gettare una luce su questo argomento.

Grazie!

È stato utile?

Soluzione

  

fare tutti gli interpreti di Ruby seguono la stessa sintassi di Ruby definito www.ruby-lang.org?

Sì, tutti usano la stessa sintassi. In realtà, in realtà tutti utilizzano lo stesso parser, o almeno un parser che è stato generato automaticamente dallo stesso file sorgente.

  

Perché io sto usando: http://ruby-doc.org/ruby -1.9 / index.html .

     

Quali interpreti stanno attuando quello?

Al momento, il motore di esecuzione rubino unica produzione-ready che implementa Ruby 1.9 è completamente YARV.

JRuby stesso è pronto per la produzione, e implementa sia di Ruby 1.8.7 e Ruby 1.9.2, ma l'implementazione di Ruby 1.9.2 non è ancora completa. IronRuby e Rubinius stanno anche lavorando su implementazioni di Rubino 1.9.2. MacRuby ha una abbastanza completa attuazione Ruby 1.9, ma è ancora lontano da una versione 1.0. MRI non implementa Ruby 1.9 e probabilmente non lo farà mai.

Ma io non capisco perché si sta così preoccupato per la sintassi. le differenze di sintassi sono banali da individuare: se c'è sono una differenza nella sintassi, il motore sarebbe semplicemente si rifiutano di analizzare il file e si sa subito che c'è qualcosa di sbagliato. Le differenze di semantica d'altra parte sono molto più pericoloso.

Altri suggerimenti

Quali po 'di "zucchero sintattico" ti riferisci?

Tieni presente che Ruby ha un piccolo insieme di parole chiave. Un sacco di roba che sembra essere una parola chiave in un primo momento è in realtà attuato dal Kernel (ad esempio require, puts, e raise).

http://apidock.com/ruby/Kernel

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top