まつもと ゆきひろです

In message "[ruby-list:27229] Re: do ... end & { ... }"
    on 01/01/19, jca02266 / nifty.ne.jp <jca02266 / nifty.ne.jp> writes:

|元もと、do .. end と { .. } の結合強度の違いをなくそうという
|話がありませんでした?

「結合強度の違い」をなくす気はありません。
だから

  foo bar do ... end => foo(bar) do ... end
  foo bar {  ... }   => foo(bar{...})

の違いはなくなりません。

|> foobar 100  do 0 end   # => foobar called with block.
|> # foobar 100  { 0 }      # => parse error.
|
|これらの違いの必要性がよくわからないのです。

後者は

  foo bar {  ... }   => foo(bar{...})

のルールにより

  foo(100{...})

と解釈されますが、100(リテラル)にはブロックがつかないのでエ
ラーということです。これも変わらないと思います。リテラルだっ
たらバックトラックして...というルールはyaccで書けないんでは
ないかな。書けるなら同じ技法で

  a +1, 2

を解決できるのですが。

                                まつもと ゆきひろ /:|)