From: Tanaka Akira Date: 2003-03-21T16:34:45+09:00 Subject: [ruby-dev:19868] Re: [Oniguruma] Version 1.8.4 In article <20030321040221.EC03C5AA@helium.ruby-lang.org>, "K.Kosako" writes: > '['は、文字クラスの中で特別の意味を持っていないのに > エスケープ強制なのはおかしい、という人はいるかもしれませんが、 > 実際にわかりにくいことは確かなので。 というわけで、1.8 にはこんなのを入れたらいいんじゃないかな、と思うんで すが、どうでしょう? Index: regex.c =================================================================== RCS file: /src/ruby/regex.c,v retrieving revision 1.80 diff -u -r1.80 regex.c --- regex.c 24 Jan 2003 09:18:04 -0000 1.80 +++ regex.c 21 Mar 2003 07:32:56 -0000 @@ -1464,6 +1464,7 @@ if (p == p0 + 1) { if (p == pend) FREE_AND_RETURN(stackb, "invalid regular expression; empty character class"); + rb_warn("character class has `]' without escape"); } else /* Stop if this isn't merely a ] inside a bracket @@ -1481,6 +1482,9 @@ } had_char_class = 0; + if (c == '-') + rb_warn("character class has `-' without escape"); + /* \ escapes characters when inside [...]. */ if (c == '\\') { PATFETCH_RAW(c); @@ -1678,6 +1682,7 @@ c1++; while (c1--) PATUNFETCH; + rb_warn("character class has `[' without escape"); SET_LIST_BIT(TRANSLATE_P()?translate['[']:'['); SET_LIST_BIT(TRANSLATE_P()?translate[':']:':'); had_char_class = 0; @@ -1685,6 +1690,8 @@ } } else if (had_mbchar == 0 && (!current_mbctype || !had_num_literal)) { + if (c == '[') + rb_warn("character class has `[' without escape"); SET_LIST_BIT(c); had_num_literal = 0; } -- [田中 哲][たなか あきら][Tanaka Akira]