At Sun, 28 Nov 1999 22:22:07 +0900,
EGUCHI Osamu <eguchi / shizuokanet.ne.jp> wrote:
> matsui> 別の(意味的な)問題の方については異論はないですが、orか||かでparse
> matsui> errorになるかならないかの違いが出るのがいまいち納得いきません。
> matsui> こちらについてはどう理解すればいいのでしょうか?
> 
> これは or と || の間の *優先度ではなく構文上の* 差異です。

ruby-1.4のマニュアルの「Rubyの文法」のcase文のあたりにはただ単に

        case 式
        [when 式 [, 式]...[then]
          式..]..
        [else
          式..]
        end

としか書いてないし説明文にもそれらしいものは見つけられなかったですが、
「擬似BNF によるRubyの文法」の方も確かめると

        case COMPSTMT
        (when WHEN_ARGS THEN COMPSTMT)+
        [else COMPSTMT]
        end

となっていて確かにEXPRではなくARGの並び(ただし最後の1つのみ*をつけられ
る)を期待していますね。これでparse errorになることは納得しました。回答
ありがとうございます。

以下余談ですが、rubyの場合はメソッド呼び出しに引数を括弧でくくらないコ
マンド形式が許されているので、CALL_ARGSにand/orを含めたくない
(method a,b,c or die と書いたら method(a,b,(c or die)) じゃなくて
method(a,b,c) or die を期待したい) のは自然ではありますが、whenの後には
この問題はないような気がするのでARGにしたのはメソッド呼び出しに合わせ
たってことでしょうか?  それとも何か私が気がついてないやばい例があるの
かな?

                                                       松井