From: matz@... (Yukihiro Matsumoto) Date: 2001-01-24T17:07:41+09:00 Subject: [ruby-list:27305] Re: do ... end & { ... } まつもと ゆきひろです In message "[ruby-list:27296] Re: do ... end & { ... }" on 01/01/24, Wakou Aoyama 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