まつもと ゆきひろです

In message "[ruby-list:27296] Re: do ... end & { ... }"
    on 01/01/24, Wakou Aoyama <wakou / fsinet.or.jp> writes:

|> というわけで、自分の意図に近い感じで書き直してみました。CVS
|> HEADの最新がそんな感じです。しかし、この変更、けっこう重大な
|> のですが、たぶんこれにひっかかるような書き方をしている人はそ
|> んなにいないんじゃないかと。
|
|いました。
|
|ENV.collect() do |key, value|
|  puts "#{key} --> #{value}"
|end +
|ENV.collect() do |key, value|
|  puts "#{key} --> #{value}"
|end

むむむ、過去に通していたので気持ちとしては許してあげたいんで
すが、どうしたものか。

これは要するに

  ENV.collect() do ... end

は「文であるので後に演算子は来ない」と文法が思っているわけで
すよね。これを許すと shift reduce conflict が起きます。で、
以前は「括弧の直後のdo...endは{...}と同じとみなす」というや
や不自然なルールを導入してました。

これは不自然なんであはり復活させたくないんですが、どうしたも
んだか。
                                まつもと ゆきひろ /:|)
|これが parse error に。end. + とすると通りますが、do ... end + do ...
|end + ... は、cgi.rb を利用した記述で多用していますし、個人的には、そ
|れ以外でも、{} より do ... end を利用しているので、あちこちで引っかか
|りそうです。
|
|
|-- 
|青山 和光 Wakou Aoyama  <wakou / fsinet.or.jp>