【问题标题】:Ruby Grammar红宝石语法
【发布时间】:2009-03-19 16:53:34
【问题描述】:

我正在寻找 BNF 形式的 Ruby 语法。有官方版本吗?

【问题讨论】:

    标签: ruby grammar bnf


    【解决方案1】:

    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
                    ;
    

    【讨论】:

    • 现在只是git clone https://github.com/ruby/ruby ; cd ruby ; ruby sample/exyacc.rb &lt; parse.y
    【解决方案2】:

    是的,布法罗大学有一个Ruby BNF syntax

    编辑:我还找到了这个备用Ruby BNF syntax

    【讨论】:

    • 但我认为第一个链接不是“官方”语法。我听说最接近 Ruby 官方语法的是 parse.y 文件。
    • 不幸的是,类似的 UoB 和 njit 语法是完全错误的。 for循环中没有做,extend和include语句丢失,异常变量丢失。
    【解决方案3】:

    还有一个正式版本:Ruby Draft Specification。你可以在那里找到语法。

    Ruby 草案规范:http://ruby-std.netlab.jp。服务器已关闭,但您可以从 http://www.ipa.go.jp/osc/english/ruby

    【讨论】:

    • 没有密码就无法访问链接。
    • 感谢您的报告。当我发布该评论时,旧链接有效。但我添加了一个新链接。它现在应该可以工作了。
    • 非常酷。我看到它适用于 1.8.7。 Ruby 2.0 有更新的版本吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 2010-09-09
    • 2015-02-24
    相关资源
    最近更新 更多