新井です。

In message "[ruby-list:34991] a = 4 ; p((a < 3) or (a > 5))"
  on 07 May 2002 01:22:16 +0900,
  Take_tk <ggb03124 / nifty.ne.jp> wrote:
>  次のものがエラーになるのは何故なんでしょうか?

[ruby-list:24664] 参照です。

|   * do .. endのブロックのついたメソッド呼び出し
|   * かっこを省略したメソッド呼び出し(実はラストの1個だけは置
|     ける)
|   * alias
|   * undef
|   * if/unless/while/until/rescue修飾子
|   * 多重代入

 http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=trap%3A%3A%28%29%A4%C7%B2%F2%B7%E8%A4%B9%A4%EB%A4%E2%A4%CE

でも触れてます。

1.6 では、do .. end は引数に書けるようになってます。

p(2.times do |i| p i end)

ruby 1.4.6 (2000-08-30) [i586-linux]
    -:1: parse error
    p(2.times do |i| p i end)
		^
    -:1: parse error
    p(2.times do |i| p i end)
                    ^

ruby 1.6.7 (2002-04-24) [i586-linux]
    0
    1
    2

1.7 では、括弧を省略したメソッド呼び出しは最後も許されなくなってます。
(というのは、落し穴に書いてなかったな。書いておこう)

p 1, p 2
    ruby 1.6.7 (2002-04-24) [i586-linux]
    2
    1
    nil

ruby 1.7.2 (2002-04-26) [i586-linux]
    -:1: parse error
    -:1: warning: useless use of a literal in void context

--
新井康司 (Koji Arai)