From: nobu.nakada@... Date: 2003-09-04T20:52:06+09:00 Subject: [ruby-dev:21344] Re: illegal member in %w array なかだです。 At Thu, 4 Sep 2003 20:43:16 +0900, Yukihiro Matsumoto wrote: > |> あ、後者ってのは「改行の前の\に特別な意味を持たせない」とい > |> うことだけなので、その点は変わりません。というか、そこ変える > |> と互換性の点で大変なことに。 > | > |じゃこんなとこですしょうか。 > > 良さそうですね。コミットしてください。 > > 実は文字列リテラルまわりは十分理解できてないんで困ってたんで > す。助かりました。もしよければ%wについても(\\nは空白のエスケー > プの方向で)修正していただけませんか? そうなってます。 こっちのほうが分かりやすいかも。要するに、置換が有効なときだけ \\\nを無視するということです。行継続の有無と置換の有無を同一に してしまっていいかちょっと自信はありませんが、とりあえず一致し ているようなので。 Index: parse.y =================================================================== RCS file: /cvs/ruby/src/ruby/parse.y,v retrieving revision 1.287 diff -u -2 -p -r1.287 parse.y --- parse.y 1 Sep 2003 09:02:40 -0000 1.287 +++ parse.y 4 Sep 2003 09:54:49 -0000 @@ -2999,7 +3001,4 @@ tokadd_string(func, term, paren, nest) } switch (c) { - case '\n': - continue; - case '\\': if (func & STR_FUNC_ESCAPE) tokadd(c); @@ -3014,4 +3013,5 @@ tokadd_string(func, term, paren, nest) } else if (func & STR_FUNC_EXPAND) { + if (c == '\n') continue; pushback(c); if (func & STR_FUNC_ESCAPE) tokadd('\\'); -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦