From: nobu.nakada@... Date: 2002-06-22T01:30:39+09:00 Subject: [ruby-dev:17541] Re: broken string when unterminated "#{". なかだです。 At Sat, 22 Jun 2002 00:12:09 +0900, Yukihiro Matsumoto wrote: > |> あるいは当面yylex()をいじって「\"」は「"」と解釈するようにし > |> ておいて、警告を出すようにするとか。 > | > |yylex() と同時に、parse_string などもいじらないと string 終端の \" の > |認識で失敗するのではないかという気がします。 > |(パッチは見ていないのでまとはずれだったら済みません) > > 今やってみたら、その通りでした。 > > |yylex() で \" を見つけたら parse_string などでは \" を終端とみなす、と > |すれば動くんじゃないですかね。 > > もう、エラーにしちゃって「直してね」でいいような気がしてきま > した。誰かから「互換性はどうした」とか突っ込まれそう。^^;;; 対応してみました。一番外側の終端と同じものがエスケープされてる と警告を出して、それ以降エスケープを取り除きます。 $ ./i686-linux/miniruby1 -e 'p %|x#{%\|\|}|' -e:1: warning: escaped | inside string found "x" $ ./i686-linux/miniruby1 -e 'p %|x#{%\||}|' -e:1: warning: escaped | inside string found "x" $ ./i686-linux/miniruby1 -e 'p %"x#{\""}"' -e:1: warning: escaped " inside string found "x" $ ./i686-linux/miniruby1 -e 'p %"x#{\"\"}"' -e:1: warning: escaped " inside string found "x" $ ./i686-linux/miniruby1 -e 'p "x#{%\"\"}"' -e:1: warning: escaped " inside string found "x" # URLは一緒。 http://member.nifty.ne.jp/nokada/archive/literal.diff.bz2 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦