In article <1024929830.978899.13594.nullmailer / picachu.netlab.jp>,
  matz / ruby-lang.org (Yukihiro Matsumoto) writes:

> 複数のブロックがどこに付くのか迷うよりはエラーにした方が良い
> と思ったからです。たとえば、理論的には
> 
> |m1 m2 1 {} {} というような {} のネストも可能で、
> 
> というようなケースは
> 
>   m1(m2(1){}){}
> 
> と解釈することは可能でしょうが、このコードを目にしたときのユー
> ザの当惑のコストは大きすぎるように思います。

たしかに。ブロックの中身が短ければ問題ないんでしょうが、長くなるにつれ
て把握困難になりそうではあります。

> |  m 1 do end.a do end
> |  m 1 do end.a {}
> |
> |は parse error にはしたくない?
> 
> ちょっと前なら「そうです」と答えただろうと思いますが、今はも
> うちょっと制限しても良いかなと感じています。問題はどこまで許
> すかという線をまだ引けてないということですが。

ふむ。

  a b {} {}

というのも問題かな?

> かっこを省略できるのはあくまでもオプショナルであるという観点
> からは、「部分式では省略できない」というのは比較的分かりやす
> いルールだと思います。doとの絡みはまだ結論が出ていません。

a = m 1, 2 do end というのは現在許されてて、= の左辺というれっきとした
部分式に書けるので、そのまま文字どおり適用するわけにもいかなそうです。

ぜんぜん根拠はないんですが、なんとなく、ネスト不可というあたりが妥当か
なぁ、という気がしています。

> パズル向け言語? ^^;;;

yacc (というか LALR(1))をねじふせてみたいといいますか。
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)