2009-03-19 1 views
36

BNF形式のRuby文法を探しています。 公式バージョンがありますか?Ruby文法

答えて

14

はい、バッファロー大学のRuby BNF syntaxが1つあります。

編集:この代替番号Ruby BNF syntaxも見つかりました。

+5

しかし、私は最初のリンクは "公式" の文法にはないと思います。 Rubyの公式文法に最も近いのは、parse.yファイルです。 –

+5

残念ながら、同様のUoB文法とnjit文法は完全に間違っています。 forループにdoがなく、extendとincludeステートメントがなくなり、例外変数がありません。 – Barry

5

公式バージョン:Ruby Draft Specification。そこに文法を見つけることができます。

ルビードラフト仕様:http://ruby-std.netlab.jp。サーバーはダウンしていますが、ダウンロードできます。 http://www.ipa.go.jp/osc/english/ruby

+0

パスワードなしでリンクにアクセスすることはできません。 –

+1

報告書をありがとう。古いリンクは私がそのコメントを投稿したときに働いた。新しいリンクを追加しました。今はうまくいくはずです。 – GutenYe

+0

非常にクールです。私は1.8.7のためにそれを参照してください。 Ruby 2.0のためのより新しいものがありますか? – sunnyrjuneja

26

YACC構文はRubyソースにあります。それをダウンロードし、付属のユーティリティを実行して、読みやすい構文を取得します。

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 

出力サンプル(V2.0.0-P195の合計918行)

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

ちょうど 'git clone https://github.com/ruby/ruby; CDルビー; ruby sample/exyacc.rb