市川です。 On Thu, 22 Oct 1998 18:41:29 +0900 Junichi Kurokawa <jun / mew.gol.com> wrote: > Reply-To: ruby-devとしました。 ruby-devには参加していないのでここで。 (よくないでしょうか) > yacc(1)で書けないというのは深い先読みが必要であるということですか。 > > また、こうなると「foo.each;」に意味があるのか否かを吟味する必要があると > 思いますが。 これは foo.hogehoge; に意味があるかというより、 改行 .... ゆるやかな式の区切り (確定できれば確定) ';' ..... 明示的な式の区切り というrubyの文法仕様のことを言っているんですよね? 手元の1.1c2では、 print 3.to_s { print "g" } print "f" の出力が 3f で、to_sは与えられたブロックを無視しています。 parse errorにもなりません。 print 3.to_s { print "g" } print "f" では、2行目に与えたブロックのところでparse errorに なりました。 print 3.to_s; { print "g" } print "f" はもちろんブロックのところでparse errorです。 というわけで、パーサーはメソッドの後のブロックを一応 「イテレータブロックかもしれない」として評価しているように 思えました。 もしかして「改行は文の区切りになりえない」という仕様に 変えたら改行をはさんだブロックも評価できるようになるのかな、 と思いましたがどうでしょう。 でもいちいち';'をつけなくてもいいrubyの仕様って気に入ってる ので、今のままのほうがいいなぁ。 ----- 市川 裕隆 hirotaka.ichikawa / tosmec.toshiba.co.jp 東芝マイクロエレクトロニクス CAD基礎技術開発担当