2009-03-19 17 views

Respuesta

14

Sí, hay uno Ruby BNF syntax por la Universidad de búfalo.

Editar: También he encontrado este Ruby BNF syntax alternativo.

+5

Pero no creo que el primer eslabón es una gramática "oficial". Escuché que lo más parecido a una gramática oficial para Ruby es el archivo parse.y. –

+5

Desafortunadamente, las gramáticas similares de UoB y njit son completamente incorrectas. No hay do en un bucle for, las instrucciones extender e incluir faltan y las variables de excepción faltan. – Barry

5

también una versión oficial: Ruby Draft Specification. puedes encontrar la gramática allí.

Ruby Draft pliego de condiciones: http://ruby-std.netlab.jp. el servidor está caído, pero puede descargarlo desde http://www.ipa.go.jp/osc/english/ruby

+0

No se puede acceder al enlace sin una contraseña. –

+1

gracias por el informe. El antiguo enlace funcionó cuando publiqué ese comentario. pero agregué un nuevo enlace. Debería funcionar ahora. – GutenYe

+0

Muy bueno. Veo que es para 1.8.7. ¿Hay uno más nuevo para Ruby 2.0? – sunnyrjuneja

26

La sintaxis YACC está en la fuente de Ruby. Descárguelo y ejecute la utilidad incluida para obtener la sintaxis legible.

wget ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.gz 
tar xvzf ruby-2.0.0-p195.tar.gz 
cd ruby-2.0.0-p195 
ruby sample/exyacc.rb < parse.y 

muestra de salida (total 918 líneas para la v2.0.0-P195)

program   : top_compstmt 
       ; 

top_compstmt : top_stmts opt_terms 
       ; 

top_stmts  : none 
       | top_stmt 
       | top_stmts terms top_stmt 
       | error top_stmt 
       ; 

top_stmt  : stmt 
       | keyword_BEGIN 
        '{' top_compstmt '}' 
       ; 

bodystmt  : compstmt 
        opt_rescue 
        opt_else 
        opt_ensure 
       ; 

compstmt  : stmts opt_terms 
       ; 
+4

ahora solo 'git clone https://github.com/ruby/ruby; cd ruby; muestra de ruby ​​/ exyacc.rb